matlab 微分方程组求解

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/19 18:43:47

matlab 微分方程组求解
matlab 微分方程组求解

matlab 微分方程组求解
lz需要给出y_0的初值~
这个方程满足李普希兹条件,因此,解存在唯一并且可以唯一延拓到边界,应用lax等价定理可以知道,向前欧拉法具有二阶的收敛速度……所以可以尝试用向前欧拉法编写:
我刚学matlab~写的程序一般,希望lz见谅:
这个程序,需要lz选择步长h(我自己试验之后,取h=0.0001的效果比较好),和x_0=1时,y_0的初值(最好取绝对值大于等于2的数)~
% Euler method: numerical method for different equation
% Initialize the initial value of y_0
y_0=input('Initialize y_0=');
% Choose some bandwith h
h=input('Bandwith h=');
% x from x_0=1 to 5: x_up
x_up=1:h:5; % initialize x_up
num=length(x_up); % the number of x that we calculate
y_up=zeros(size(x_up));
y_up(1)=y_0;
ii=1;
while ii y_up(ii+1)=y_up(ii)+((0.3*(1-x_up(ii)^2)*y_up(ii)-x_up(ii))/y_up(ii))*h;
ii=ii+1;
end
% x from -3 to x_0=1: x_down
x_down=-3:h:1;
num=length(x_down);
y_down=zeros(size(x_down));
y_down(num)=y_0;
ii=num;
while ii>1
y_down(ii-1)=y_down(ii)-((0.3*(1-x_down(ii)^2)*y_down(ii)-x_down(ii))/y_down(ii))*h ;
ii=ii-1;
end
x=[x_down,x_up];
y=[y_down,y_up];
while ii<=num
if y(ii)>4 || y(ii)<-3
x(ii)=1;
y(ii)=3;
end
ii=ii+1;
end
plot(x,y,'b+');%可以更加需要修改plot选项

可以是可以。
我先看看有没有大神回答,如果没有我再献丑吧