新しく発言する EXIT インデックスへ
1000桁モードで5乗根

  1000桁モードで5乗根 会社員 2004/06/27 21:14:40 
  1000桁モードでは0.2乗は無効だと思います。...2004/06/27 21:25:38 
  ニュートン法でもいいですか? 青木太一 2004/06/27 21:43:57 
   ├十進BASICの最近の版ではフォルダ構成が変更... 白石 和夫 2004/06/28 10:15:32 
   └>あと、そもそも指数関数の5乗根を求め... 会社員 2004/06/30 22:16:59 

  1000桁モードで5乗根 会社員 2004/06/27 21:14:40  ツリーへ

1000桁モードで5乗根 返事を書く
会社員 2004/06/27 21:14:40
1000桁モードで5乗根を求めたいのですが、
どうすればいいのでしょうか?

指数関数の5乗根(=0.2乗)は 超越関数にチェックしても
17桁までしか求められません。

プログラムを教えていただけるとありがたいのですが、
基本的考えだけでも教えてください。

よろしくお願いします。

  1000桁モードでは0.2乗は無効だと思います。...2004/06/27 21:25:38  ツリーへ

Re: 1000桁モードで5乗根 返事を書く
2004/06/27 21:25:38
1000桁モードでは0.2乗は無効だと思います。

それで初期値を適当に決めて、
5回掛けて元の数より小さければもっと大きい数にステップアップ、
大きくなりすぎたら1つ戻って桁を落として繰り返す、というやり方でどうでしょうか?

  ニュートン法でもいいですか? 青木太一 2004/06/27 21:43:57  ツリーへ

Re: 1000桁モードで5乗根 返事を書く
青木太一 2004/06/27 21:43:57
ニュートン法でもいいですか?

会社員さんが解こうとしている問題の要求仕様にもよりますが、
ニュートン法でいいなら十進BASICをダウンロードして付いてくるサンプルの
SUUGAKUC\NEWTON.BAS
に平方根の場合のサンプルがあります。そのサンプルの
>DEF f(x)=x^2-a
>DEF g(x)=2*x ! g(x)=f'(x)
のところを
DEF f(x)=x^5-a
DEF g(x)=5*(x^4) ! g(x)=f'(x)
に書き換えれば1000桁モードで5乗根を出すことができると思います。

ただし、私は数値計算の精度評価について詳しくないので、
1000桁モードの精度が有効に生かされるのかどうかはわかりません。

あと、そもそも指数関数の5乗根を求めようとしているのですか?
指数関数の出す数値の有効桁数が17桁くらいでしょうから、
1000桁モードを使う意味はあまりないのではないかと愚考しますが。

間違ってたらごめんなさい。

   ├十進BASICの最近の版ではフォルダ構成が変更... 白石 和夫 2004/06/28 10:15:32  ツリーへ

Re: ニュートン法でもいいですか? 返事を書く
白石 和夫 2004/06/28 10:15:32
十進BASICの最近の版ではフォルダ構成が変更になりました。
SUUGAKUCフォルダがないときはMATHフォルダからNEWTON.BASを探してください。

   └>あと、そもそも指数関数の5乗根を求め... 会社員 2004/06/30 22:16:59  ツリーへ

Re: ニュートン法でもいいですか? 返事を書く
会社員 2004/06/30 22:16:59
>あと、そもそも指数関数の5乗根を求めようとしているのですか?
すいません。
「指数関数〜」は関係なかったです。
忘れてください。


ありがとうございました、ニュートン法 使わせていただきます。
―5乗根―――――――――――――――――――――――――――――
DECLARE EXTERNAL FUNCTION Fxx

INPUT PROMPT "A=":A
PRINT " Fxx(A)=";Fxx(A)


END


1000 !5乗根
! ニュートン法によって5乗根を求める。
EXTERNAL FUNCTION Fxx(KKK)

DEF f(x)=x^5-KKK
DEF g(x)=5*x^4 ! g(x)=f'(x)
LET x=KKK
LET J=EPS(1)*10
DO
LET x1=x-f(x)/g(x)
! PRINT "☆";x1
IF ABS((x1-x)/x)<J THEN EXIT DO
LET x=x1
LOOP
LET Fxx=ROUND(x,500)
END FUNCTION


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。