40. オイラー法を使用して微分方程式を解く (MATLAB プログラム)

1.簡単な説明

      

微分方程式を解くときに、結果の式が得られない場合は、数値積分を使用して微分方程式を解き、数値解を得ることができます。オイラー法は最も単純な数値解法です。MATLAB の例は、微分方程式を解くオイラー法を説明するために以前に紹介しましたが、今日の例は、一階微分方程式を解くオイラー法を説明します。


この記事の理論的な部分は、雲の下の Zhihu が書いた記事「常微分方程式 - 数値解法 - オイラーの方法」から引用しています。

微分方程式を解く方法には、時間��に対する従属変数の具体的な関数式を求める解析的解法と、従属変数の離散数列を次のように解く数値的解法があります。時間 �� に関して、通常は離散データのペアを表します。ほとんどの非線形常微分方程式は存在しないか、解析的な解を得ることが困難であり、ほとんどの場合、微分方程式の数値解のみが得られます。

2.コード

%% 学習目標: 微分方程式を解くオイラー法
Clear;clc
c=2/3; %c の値を設定します x
(1)=0.1; %x の初期値を 0.1 に設定します
y(1)=0.3; % y を設定します 初期値は 0.3
h=0.05; % ステップ サイズを 0.05 に設定します

%for循环:根据Euler法,求解微分方程组
for i=1:1000
    x(i+1)=x(i)+h*(x(i)*(c-x(i)/y(i)));
    y(i+1)=y(i)+h*(y(i)*(1-y(i))-x(i)*y(i));
end

t=0:h:1000*h; % 計算時間
Lot(t,x) % X 曲線を描画、 plot(t,y,'r')
に保持       
% Y 曲線を描画
xlabel('time') % X 軸ラベルを設定
ylabel('value') %Y軸の
凡例のラベルを設定します({'x','y'}) %凡例のタイトルを設定します
('時間発展プロット') %グラフ
図   のタイトルを設定します
plot(x ,y) %位相グラフを描画します
title('位相平面プロット') % タイトルを設定します
xlabel('x') % x 軸のラベルを設定します ylabel
('y') % y 軸のラベルを設定します

3.走行結果

 

 

おすすめ

転載: blog.csdn.net/m0_57943157/article/details/132136907