Red de conocimiento informático - Aprendizaje de programación - Pregunta de MATLAB, use la fórmula de Euler para encontrar soluciones numéricas a ecuaciones diferenciales

Pregunta de MATLAB, use la fórmula de Euler para encontrar soluciones numéricas a ecuaciones diferenciales

%Método de Euler para resolver ecuaciones diferenciales ordinarias de primer orden

%Ejemplo dy/h=-y+x+1

%f=inline(' - y+x+1','x','y'); ? %término derecho de la ecuación diferencial

f = inline('x-2*y','x',' y') ;

y0 = 2; %Condición inicial

h = 0,025; ?%Tamaño del paso

xleft = 0;%Límite izquierdo del región

xright = 1; % límite derecho del área

x = xleft:h:xright;

n = length(x); >

Método de Euler % directo

y = y0;

para i=2:n

y(i)=y(i-1) +h* f(x(i-1),y(i-1)); ?

end

plot(x,y,'ro');

espera;

Método de Euler % mejorado

y = y0;

para i=2:n

y (i )=y(i-1)+h/2*( f(x(i-1),y(i-1))+f(x(i),y(i-1))+h* (f (x(i-1),x(i-1)))); ?

end

plot(x,y,'g+');

%La solución exacta se utiliza como gráfica

xx = x;

f = dsolve('Dy=x-2*y','y(0)= 2',' x');%Encontrar la solución analítica

y = subs(f,xx%Sustituir xx en la solución analítica y obtener el valor correspondiente a la solución analítica

<); p>plot(xx,y );

legend('método de Euler directo', 'método de Euler mejorado', 'solución analítica');