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

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

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

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

Q&A

0回答

460閲覧

修正版のオイラー法をpythonで書きたい

moromoro

総合スコア10

Python

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

0グッド

0クリップ

投稿2021/11/29 15:25

編集2021/11/30 10:49

修正版のオイラーの法を実行したいと考えています

python

1#こちらは修正前のオイラー法です。 2import numpy as np 3import math 4import matplotlib.pyplot as plt 5def func(x, y): 6 return y/(2.0*x) 7def euler(x0, y0, xmax, num): 8 x = np.linspace(x0, xmax, num+1) 9 h = (xmax-x0)/num 10 y = np.empty_like(x) 11 y[0] = y0 12 for k in range(len(x)-1): 13 y[k+1] = y[k] + h * func(x[k], y[k]) 14 return x, y 15x, y = euler(1.0, 1.0, 2.0, 10) 16print('Euler method') 17for (xx, yy) in zip(x, y): 18 print(f'x: {xx:.2f}, y: {yy:.6f}, true: {math.sqrt(xx):.6f}, error: {math.fabs(yy-math.sqrt(xx)):.6f}') 19plt.scatter(x, y, c='m') 20plt.plot(x, y, c="c") 21plt.grid() 22plt.show()

python

1#こちらが修正版オイラー法、k1,k2を使ってさらに誤差を小さくしたいと考えています。 2import numpy as np 3import math 4import matplotlib.pyplot as plt 5def func(x, y): 6 return y/(2.0*x) 7def Fix_euler(x0, y0, xmax, num): 8 x = np.linspace(x0, xmax, num+1) 9 h = (xmax-x0)/num 10 y = np.empty_like(x) 11 t = 0 12 y[0] = y0 13 for k in range(len(x)-1): 14 t = t + h 15 k1 = h * y[k] 16 k2 = h * (y[k]+k1) 17 y[k+1] = y[k] + (k1 +k2)/2 18 return x, y 19x, y = Fix_euler(1.0, 1.0, 2.0, 10) 20print('Euler method') 21for (xx, yy) in zip(x, y): 22 print(f'x: {xx:.2f}, y: {yy:.6f}, true: {math.sqrt(xx):.6f}, error: {math.fabs(yy-math.sqrt(xx)):.6f}') 23plt.scatter(x, y, c='m') 24plt.plot(x, y, c="c") 25plt.grid() 26plt.show()

しかし、修正版の方が誤差が大きくなってしまいます。
k1,k2部分の数式が違うかもしれません。
どなたかご教授よろしくお願いします。

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

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

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

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

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

ppaul

2021/11/29 15:42

オイラーの定理とオイラー法は別物ですよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問