使用 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 函数时已经知道 funcx(t),y(t) 是什么。然后你要计算它的解决方案近似值。这是完全错误的方法。

右边的函数只是针对相位space中的一个点,所以你需要

func=@(t,y) ([y(1)+4*y(2)-exp(t);y(1)+y(2)+2*exp(t)]);

其中输入 y 是一个双分量向量。