SageMath を使ったグラフの接線の描画

勉強のちょっとしたお供に、ということで、関数の接線を求める問題の検算に使える SageMath のコードを書いてみました。

SageMath とは何か、についてはウィキペディアのページを参照してください。ざっくりとフリーで使える数式処理ソフトの一つぐらいに思っておいて良いんじゃないかなと思っています。

この SageMath をオンラインで利用できるサービスもあり、たとえば次のようなものがあります。

では「関数のグラフとその接線」を描画する具体的なコード例を紹介しますよ。次のようなものです。接線の方程式は凡例(レジェンド)として表示されます。

f(x) = log(x)
a = 1;
xr = 1;
yr = 1;

df(x) = diff(f, x)
g(x) = f(a) + df(a)*(x-a)

plot(f,a-xr,a+xr,ymin=f(a)-yr,ymax=f(a)+yr,legend_label=f(x))\
+plot(g,a-xr,a+xr,color="red",legend_label=g(x))\
+point((a,f(a)),size=30,color="black")

上のコードを SageMathCell のテキストフィールドにコピペして、そのすぐ下にある Evaluate のボタンを押すと、$${y=f(x) \; (a-1\le x\le a+1)}$$ のグラフを青色の線で、点 $${(a,f(a))}$$ におけるその接線を赤色の線で、接点を黒丸で描きます。上の例だと $${y=\log x}$$ のグラフと $${(1,0)}$$ におけるその接線を描きます。

1行目の f(x) の定義を書き替える(右辺を別の関数に変える)ことで好きな関数のグラフが接線込みで描けます。2行目の a の値が接点の位置。グラフの描画範囲は、接点 $${(a,f(a))}$$ を中心とした幅 2*xr、高さ 2*yr の長方形範囲で、3行目と 4行目の xr と yr の値を変更することで描画範囲を変えられます。

高校数学の範囲ぐらいであれば、たとえば $${-2x^3+5x^2+x-1}$$ といった3次関数は

-2*x^3+5*x^2+x-1

といった感じで書き(これで足し算、引き算、かけ算、累乗の表し方はOKですね)、またたとえば $${\dfrac{2x}{x^2+1}}$$ といった有理関数は

(2*x)/(x^2+1)

といった感じで書き(これで割り算もOK)、三角関数は sin(x), cos(x), tan(x) と表され、$${e}$$ を底とする指数関数と対数関数が exp(x), log(x) で表され、あとはそうだなあ、たとえばルートは sqrt(x) で表される、ぐらいを知っておけば事足りるでしょうか。

SageMath ってかなり高度な使い方も出来るようだけれど、ここで挙げた例のような感じで「高級な電卓」として手軽に使ってみるだけでも便利ですよ。

この記事が気に入ったらサポートをしてみませんか?