微分について Urabutyou 2006/11/24 23:51:25 ├関数f(x)に対して, ??? 2006/11/25 15:33:25 │└!graph_sample.bas ??? 2006/12/04 14:44:08 └十進BASICは数式処理システムではないので,... 白石 和夫 2006/11/25 17:08:44
微分について Urabutyou 2006/11/24 23:51:25 ツリーへ
微分について |
返事を書く |
Urabutyou 2006/11/24 23:51:25 | |
どうも。
あの、ある関数を定義して、それを微分した導関数を表すことはできるのでしょうか。ヘルプをみても、そんな解説がなかったように思いますので、いい方法があれば教えていただけないでしょうか。よろしくお願いします。 |
├関数f(x)に対して, ??? 2006/11/25 15:33:25 ツリーへ
Re: 微分について |
返事を書く |
??? 2006/11/25 15:33:25 | |
関数f(x)に対して,
g(x)={f(x+h)−f(x)}/h(h=0.001くらい) と定義して,そのグラフを書けばいいのでは? |
│└!graph_sample.bas ??? 2006/12/04 14:44:08 ツリーへ
Re: 関数f(x)に対して, |
返事を書く |
??? 2006/12/04 14:44:08 | |
!graph_sample.bas
LET m=5 SET WINDOW -m,m,-m,m DRAW grid DEF f(x)=x^3/5 LET h=.000001 DEF fd(x)=(f(x+h)-f(x))/h DEF fdd(x)=(fd(x+h)-fd(x))/h LET k=.001 SET LINE COLOR "black" FOR x=-m TO m STEP k PLOT LINES:x,f(x); NEXT x PLOT LINES SET LINE COLOR "red" FOR x=-m TO m STEP k PLOT LINES:x,fd(x); NEXT x PLOT LINES SET LINE COLOR "blue" FOR x=-m TO m STEP k PLOT LINES:x,fdd(x); NEXT x END ついでに微分方程式y'=y、y(0)=1の解を図示するプログラムを。 !graph_sample2.bas !微分方程式y'=y,y(0)=1を描く LET m=5 SET WINDOW -m,m,-m,m DRAW grid LET h=.001 SET LINE COLOR "black" FOR x=0 TO m STEP h IF x=0 THEN LET y=1 ELSE LET y=yold/(1-h) END IF PLOT LINES:x,y LET yold=y NEXT x PLOT LINES FOR x=0 TO -m STEP -h IF x=0 THEN LET y=1 ELSE LET y=yold/(1+h) END IF PLOT LINES:x,y LET yold=y NEXT x !fd(x)=(f(x+h)-f(x))/h !y=(y-yold)/h -> y*h=y-yold -> y=yold/(1-h) END |
└十進BASICは数式処理システムではないので,... 白石 和夫 2006/11/25 17:08:44 ツリーへ
Re: 微分について |
返事を書く |
白石 和夫 2006/11/25 17:08:44 | |
十進BASICは数式処理システムではないので,数式を記号処理する機能はありません。
導関数のグラフをかくという程度の目的であれば, 100 DEF f(x)=・・・・・ 110 DEF g(x)=(f(x+h)-f(x))/h 120 LET h=1E-8 のようにすれば,g(x)がf(x)の導関数になります。 hの値は小さければ小さいほどよいというわけではないので,「(仮称)十進BASICによるJIS Full BASIC入門」の http://hp.vector.co.jp/authors/VA008683/tutorial/section2.htm#2.1 の頁の 2.7.3.桁落ち の項を参照して決定してください。 数式処理,たとえば,"x^3"や"sin(x)" を文字列として与えるとその導関数"3*x^2"あるいは"cos(x)"が値となるような利用者定義関数を作ることはFull BASICでもできます。 ただし,Full BASICでは,同類項をまとめる処理のような部分(たとえば,cos(x)+cos(x)を2*cos(x)にする)の記述が難しいので,本格的な数式処理のプログラムを書くのは無理です。 |