使用 Matlab 使用 Euler 方法求解 ODE 系统
Using Matlab to solve a system of ODEs using Euler's method
我创建了一个函数 Euler.m 来使用欧拉方法求解 ODE 系统。我希望使用此函数求解由匿名函数 func=@(t) ([x(t)+4*y(t)-exp(t);x(t)+y(t)+2*exp(t)])
定义的 ODE 系统,初始条件由 y0
.
给出
func=@(t) ([x(t)+4*y(t)-exp(t);x(t)+y(t)+2*exp(t)]);
y0=[4;5/4];
y_exact=@(t) [4*exp(3*t)+2*exp(-t)-2*exp(t);2*exp(3*t)-exp(-t)+exp(t)/4]; %exact solution of ODEs
a=0; % such that
b=1; % a<t<b
N=120;
[t,y] = Euler(func,a,b,y0,N)
但是,显示如下错误:
“使用解决方案时出错>@(t)([x(t)+4*y(t)-exp(t);x(t)+y(t)+2*exp(t)] )
输入参数太多。
解决方案错误(第 7 行)
[t,y] = Euler(func,a,b,y0,N)".
为什么会显示此错误?
您假装在编写 ODE 函数时已经知道 func
解 x(t),y(t)
是什么。然后你要计算它的解决方案近似值。这是完全错误的方法。
右边的函数只是针对相位space中的一个点,所以你需要
func=@(t,y) ([y(1)+4*y(2)-exp(t);y(1)+y(2)+2*exp(t)]);
其中输入 y
是一个双分量向量。
我创建了一个函数 Euler.m 来使用欧拉方法求解 ODE 系统。我希望使用此函数求解由匿名函数 func=@(t) ([x(t)+4*y(t)-exp(t);x(t)+y(t)+2*exp(t)])
定义的 ODE 系统,初始条件由 y0
.
func=@(t) ([x(t)+4*y(t)-exp(t);x(t)+y(t)+2*exp(t)]);
y0=[4;5/4];
y_exact=@(t) [4*exp(3*t)+2*exp(-t)-2*exp(t);2*exp(3*t)-exp(-t)+exp(t)/4]; %exact solution of ODEs
a=0; % such that
b=1; % a<t<b
N=120;
[t,y] = Euler(func,a,b,y0,N)
但是,显示如下错误:
“使用解决方案时出错>@(t)([x(t)+4*y(t)-exp(t);x(t)+y(t)+2*exp(t)] ) 输入参数太多。
解决方案错误(第 7 行) [t,y] = Euler(func,a,b,y0,N)".
为什么会显示此错误?
您假装在编写 ODE 函数时已经知道 func
解 x(t),y(t)
是什么。然后你要计算它的解决方案近似值。这是完全错误的方法。
右边的函数只是针对相位space中的一个点,所以你需要
func=@(t,y) ([y(1)+4*y(2)-exp(t);y(1)+y(2)+2*exp(t)]);
其中输入 y
是一个双分量向量。