Red de conocimientos turísticos - Información de alquiler - Preguntas sobre la programación en matlab

Preguntas sobre la programación en matlab

La siguiente es mi idea para esta pregunta:

1:

Para el sistema de ecuaciones diferenciales de la primera pregunta, ingrese [f,g]= en matlab dsolve('Df=exp(f*sin(t)+g)','Dg=exp(g*cos(t))+f','t')La respuesta es No se pudo encontrar una solución explícita, eso Es decir, no existe una solución de análisis, por lo que solo podemos encontrar su solución aproximada, es decir, una solución numérica.

Para resolver la solución numérica de la ecuación diferencial es necesario conocer el "valor inicial de la función" y "el rango de la variable independiente", es decir, f(0)=?, g (0)=?, y el rango de valores de la variable t es Cuánto, y luego realice operaciones iterativas para obtener el valor aproximado dentro del dominio dado.

2:

El método de diferencias también se conoce como método de Euler (Euler). "La idea es utilizar el cociente de diferencias anterior para reemplazar aproximadamente el recíproco". La declaración es: f(i+1)=f(i)+h*f(x,y) donde h es el tamaño del paso de iteración establecido. Si el requisito de precisión no es alto, generalmente puede ser 0,01. Simplemente resuélvalo iterativamente dentro del intervalo definido.

El método Longo-Kutta se utiliza generalmente para soluciones de alta precisión, es decir, el método de Euler mejorado con precisión de alto orden.

El más utilizado es el Longge Kuta de cuarto orden:

El lenguaje de programación es el siguiente:

y(i+1)=y(i )+h*( k1+2*K2+2*k3+k4)/6;

k1=f(xi,yi)

k2=f(xi+h/ 2,yi+h *k1/2);

k3=f(xi+h/2,yi+h*k2/2);

k4=f(xi+ h,yi+h *k3);

Establece la condición de terminación para la solución iterativa.

Esta es la idea, el código es el siguiente:

%% Método Longe Kutta o Euler para resolver ecuaciones diferenciales

t=0:0.01:3 ; % Rango de variables independientes

f = [];

g = [];

f(1) = 0,1 %f valor inicial

p>

g(1) = 1; %g valor inicial

h=0.001;

para i=1:longitud(t)

%% Lafa Europea

% f(i+1) =f(i)+h*(exp(f(i)*sin(t(i)))+g(i));

% g(i+1) =g(i)+h*(exp(g(i)*cos(t(i)))+f(i));

% % Longo Kuta

kf1 = exp(f(i)*sin(t(i)))+g(i);

kf2 = exp((f(i )+kf1*h/2)*sin(t(i)+h/2))+g(i);

kf3 = exp((f(i)+kf2*h/2) *sin(t(i)+h/2))+g(i);

kf4 = exp((f(i)+kf3*h)*sin(t(i)+h) )+g(i);

f(i+1) = f(i) + h*(kf1+2*kf2+2*kf3+kf4)/6;

kg1 = exp(f(i)*cos(t(i)))+f(i);

kg2 = exp((f(i)+kg1*h/2)*cos( t(i)+h/2))+f(i);

kg3 = exp((f(i)+kg2*h/2)*cos(t(i)+h/2 ))+f(i);

kg4 = exp((f(i)+kg3*h)*cos(t(i)+h))+f(i);

g(i+1) = g(i) + h*(kg1+2*kg2+2*kg3+kg4)/6;

fin

figura( 1)

plot(t,f(1:longitud(t)),t,g(1:longitud(t)));

legend('función f', 'función g')