重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

グラフィック画面に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)

のところでエラーが出ます。
どうすれば、改善されるか思いつかないで教えてください。
よろしくおねがいします。

A 回答 (4件)

ごめんなさい 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
といった具合にしてみるとどこがおかしいのかはっきりすると思いますよ
    • good
    • 0

エラーの内容をよく確認しましょう



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)側のこれって単なるタイプミスなのでは ・・・
    • good
    • 0

私も十進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)のように変えたらどうなります。
 
    • good
    • 0

10進BASICをよく知らないんですが、SQRは普通に関数名ならこれにマイナス記号をつけちゃ駄目でしょう。


-1をかけるようなコードにすれば大丈夫なのでは?
    • good
    • 0
この回答へのお礼

回等ありがとうございます。

この前似たような問題をやったときに、BASICではsqrの前にマイナス記号をつけるのはいいといっていたので、それは間違ってはないそうです。

お礼日時:2009/02/08 19:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!