質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

779閲覧

4階微分のプログラムを書いているのですが、少しおかしいところがあります。

EIP

総合スコア13

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2018/08/06 16:12

編集2018/08/06 18:59

前提・実現したいこと

4階微分のプログラムを書いているのですが、少しおかしいところがあります。

微小な値(1e-04)で実行するとかなりの誤差が出てきます。試しに値を変えてみたのですが、値が1に近い方が解析値に近くなるのですが、これは正常なのでしょうか?数学的には、h→0で近似するのではないのでしょうか。

またxの値自体を0にすると正確な値に近い値が得られますが、3などを代入すると明らかにおかしい値(568.43418860808)が得られてしまいます。解析的にはf^(4)(x)=144での値には依らないように思えてしまいますが...

何が原因なのでしょうか。

該当のソースコード

python

1def forth(func, x): 2 h = 1e-4 3 val1 = func(x + 4*h) 4 val2 = func(x - 4*h) 5 val3 = 4*func(x-2*h) 6 val4 = 4*func(x+2*h) 7 val5 = 6*func(x) 8 #print("{}\n{}\n{}\n{}".format(val1,val2,val3,val4)) 9 return (val1 + val2 - val3 - val4 + val5) / (2*h)**4 10 11def func4(x): 12 return 6*x**4 + 5*x**3 + 4*x**2 + 3*x + 2 13 14print(forth(func4,1))

試したこと

x=1で
1e-05:177635.683940025
1e-04:142.10854715202
1e-03:144.00036718598128
1e-01:143.9999999999841
1e-00:144.0
1e04:144.00000000000003

h=1e-4で
x=0:144.32899320127032
x=1:142.10854715202
x=2:284.21709430404

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ぱっと見、4次の丸め誤差の気がしなくはないのですが、解析する必要はあるでしょう。

-4乗の4乗の-16乗を分母に持っているのが怪しいですね。

投稿2018/08/06 22:55

mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

EIP

2018/08/07 12:59

ご回答ありがとうございました。 h=1e-2にして分母を1e-8に抑えたところ、うまく行きました。 ご指摘の通り、丸め誤差を考慮して定めるべきでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問