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 ii1
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 ii4 || y(ii)