[解決済み] MATLABのコードヘルプです。バックワードオイラー法
2022-02-17 20:29:25
質問内容
以下は MATLAB / フリーマット を解決するために得たコード オデ を使用して数値的に バックワードオイラー というメソッドがあります。しかし、その結果は私の教科書の結果と矛盾しており、時にはとんでもなく矛盾していることもあります。このコードのどこがおかしいのでしょうか?
function [x,y] = backEuler(f,xinit,yinit,xfinal,h)
%f - this is your y prime
%xinit - initial X
%yinit - initial Y
%xfinal - final X
%h - step size
n = (xfinal-xinit)/h; %Calculate steps
%Inititialize arrays...
%The first elements take xinit and yinit corespondigly, the rest fill with 0s.
x = [xinit zeros(1,n)];
y = [yinit zeros(1,n)];
%Numeric routine
for i = 1:n
x(i+1) = x(i)+h;
ynew = y(i)+h*(f(x(i),y(i)));
y(i+1) = y(i)+h*f(x(i+1),ynew);
end
end
解決方法は?
あなたのメソッドは、メソッド 新しい種類の . 後方オイラーでも前方オイラーでもない。)
フォワード・オイラー
y1 = y0 + h*f(x0,y0)
後方オイラー
solve in y1: y1 - h*f(x1,y1) = y0
あなたの方法
y1 = y0 +h*f(x0,x0+h*f(x0,y0))
あなたのメソッドは ない 後方オイラー
で解かないんですね。
y1
を推定するだけです。
y1
をフォワードオイラー方式で行う。この方法の解析はしたくないのですが、forward Euler と比べても、確かに悪い挙動を示すと思います。
f
を間違ったポイントで使っています。
この方法は、私が思いつく限りでは、あなたの方法に最も近い方法で、同様に明示的で、より良い結果が得られるはずです。それは ヘウン方式 :
y1 = y0 + h/2*(f(x0,y0) + f(x1,x0+h*f(x0,y0)))
関連
-
[解決済み】2つのベクトル間の角度 matlab
-
[解決済み] MATLABでctrl+Aを使わずにすべてのコードを自動インデントする
-
[解決済み] Matlabのfprintfを使用してテーブルを作成する
-
[解決済み] Matlabの角括弧と中括弧の違い?
-
[解決済み] セルコンテンツから非セル配列オブジェクトへの代入
-
[解決済み] matlabでrandnを持つ確率変数の範囲はどうなっていますか?
-
[解決済み] グラフ理論 Matlab BFSアルゴリズム
-
[解決済み] MATLABで関数のパラメータにデフォルト値を設定するにはどうすればよいですか?
-
[解決済み] Matlabで'symfun'によって記号関数の微分を実装するには?
-
[解決済み] Matlab の imrect を用いて,新しい矩形の座標を取得します.
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] matlabエディタで複数の行をコメントするためのショートカットキーはありますか?
-
[解決済み] MATLABでctrl+Aを使わずにすべてのコードを自動インデントする
-
[解決済み] MATLAB: symからlogicalへの変換ができない
-
[解決済み] MATLABでベクトルからNaNを除去する
-
[解決済み] 部分ピボッティングによるLU分解 Matlab
-
[解決済み] Matlab: 逆コサイン(acos)の完全解を返す
-
[解決済み] ベクトルにおける四分位値の0.25から0.75までの数値 MATLAB
-
[解決済み] Matlabによる最急降下法の実装
-
[解決済み] Matlab - rectangle関数を使用せずに矩形をプロットする
-
[解決済み] Matlabでベクトルを表示(印刷)するには?