私は数学関数スケッチャープログラムに取り組んでいます。関数はユーザーによって入力され、プログラムは関数を解析して曲線を描画します。sin(x)
など、範囲間隔が小さい関数がいくつかあるという問題に直面していcos(x)
ます[-1 : 1]
。対照的に、他のいくつかの関数は のように間隔が非常に大きいe^x
ため、非常に速く成長します。X 軸の値を使用して関数で評価し、Y アクセス値を生成しています。X 軸の値は通常、-40 から 40 の間で固定されています。ただし、Y の値が非常に大きい関数もあれば、Y の値が非常に小さい関数もあるため、X アクセスのように Y アクセス セットの固定値に依存することはできません。
乗算\除算アプローチで曲線をズームしようとしましたが、一般的な関数でうまく機能しました。たとえば、sin(x)
によってズームされていsin(x) * 3
ます。しかし、一部の関数は倍率を掛けてもズームアップせず、むしろ関数自体が変化することがわかりました。例はf(x) = sin(log(cosh(sec(-x))))
です。
関数曲線をズーム アウト\インして、Y アクセスの最大値、最小値、増分ステップ値を調整し、もちろん最大\最小 Y 値に達するように曲線をズームする方法を見つけたいと考えています。 . どんな数学\プログラミングのアイデアでも構いません。ありがとう
用途:System.Drawing.Graphics.DrawCurve(Pen pen, PointF[] curve)