matlab 微分方程组求解

2个回答

  • 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)