- 締切済み
十進BASICのグラフィック表示についてなのですが・・・
グラフィック画面にy=sqr(1-x^2)のグラフとy=-sqr(1-x^2)のグラフを描くプログラムを作りなさい。ただし、 set window -1.5,1.5,-1.5,1.5 としなさい という問題で 私が書いたプログラムは SET WINDOW -1.5,1.5,-1.5,1.5 DRAW axes DEF f(x)=SQR(1-x^2) DEF g(x)=-SQR(1-x^2) LET h=0.01 SET LINE COLOR 9 FOR x=-1 TO 1 STEP h PLOT LINES:x,f(x);x+h,f(x) NEXT x SET LINE COLOR 10 FOR x=-1 TO 1 STEP h PLOT LINES:x,g(x);x+h,g(x+h) NEXT x END なのですが、 DEF g(x)=-SQR(1-x^2) のところでエラーが出ます。 どうすれば、改善されるか思いつかないで教えてください。 よろしくおねがいします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
ごめんなさい m(__)m 『1.001』になるのでは無く『1.01』でした g(1.01) = -SQR( 1 - 1.01 ^ 2 ) = -SQRT( 1 - 1.0201 ) = -SQRT( -0.0201 ) となってしまうのでエラーになるということです エラー表示自体が DEF関数の定義が反転していますが これは 現在実行している部分を表示しているために誤解されたのだろうと思います FOR x=-1 TO 1 STEP h PLOT LINES:x,g(x);x+h,g(x+h) NEXT x を FOR x=-1 TO 1 STEP h ! PLOT LINES:x,g(x);x+h,g(x+h) y1 = -SQR( 1 - x ^ 2 ) y2 = -SQR( 1 - ( x + h )^ 2 ) PLOT LINES: x, y1; x+h, y2 NEXT x といった具合にしてみるとどこがおかしいのかはっきりすると思いますよ
- redfox63
- ベストアンサー率71% (1325/1856)
エラーの内容をよく確認しましょう SQRは平方根を求める関数ですので 引数がマイナスになってしまうような数値を『実数』として求めることは不可能です 関数g(x)のループの中のPLOTで使われている g(x+h)の部分がxが『1』になった場合g(1.001)となります 関数定義の部分にあてはめると g(1.001) = -SQR( 1 - 1.001 ^ 2 ) = -SQRT( 1 - 1.002001 ) = -SQRT( -0.002001 ) となってしまうので エラーになっているのでしょう f(x)側のループでは +hを行っていないのですが g(x)側のこれって単なるタイプミスなのでは ・・・
- s-uzen
- ベストアンサー率65% (2051/3118)
私も十進BASICの仕様が解らないので、気づいた点だけ・・・ DEF g(x)=-SQR(1-x^2) の関数定義部と : PLOT LINES:x,g(x);x+h,g(x+h) の関数呼び出し部分を見比べてみて g(x)のxについてなのですが、 引数xに対しては、式x-hのような形式も割り当てできるのでしょうか? 関数を呼ぶ前に、xx=x-hとかにして g(xx)のように変えたらどうなります。
- suzukikun
- ベストアンサー率28% (372/1325)
10進BASICをよく知らないんですが、SQRは普通に関数名ならこれにマイナス記号をつけちゃ駄目でしょう。 -1をかけるようなコードにすれば大丈夫なのでは?
お礼
回等ありがとうございます。 この前似たような問題をやったときに、BASICではsqrの前にマイナス記号をつけるのはいいといっていたので、それは間違ってはないそうです。