Escolar Documentos
Profissional Documentos
Cultura Documentos
clear all;
clc;
f=input('introduce la funcion:','s');
a=input('lime inferior:');
b=input('limite superior:');
h=(b-a)/c;
z=0;
for x=a:h:b
k=eval(f);
if x==a,d=k;
end
if x==b,e=k;
end
z=z+k;
end
z=z-d-e;
z=z*2;
z=z+d+e;
z=z/(2*c);
z=z*(b-a)
fprintf('Resultado ');
Metodo del runge-kutta
fprintf('\n \tRESOLUCION DE ECUACIONES DIFERENCIALES POR MEDIO RUNGE-
KUTTA DE ORDEN 4\n')
f=input('\n Ingrese la ecuacion diferencial dy/dx=\n','s');
x0=input('\n Ingrese el primer punto x0:\n');
x1=input('\n Ingrese el segundo punto x1:\n');
y0=input('\n Ingrese la condicion inicial y(x0):\n');
n=input('\n Ingrese el numero de pasos n:\n');
h=(x1-x0)/n;
xs=x0:h:x1;
fprintf('\n''it x0 y(x1)');
for i=1:n
it=i-1;
x0=xs(i);
x=x0;
y=y0;
k1=h*eval(f);
x=xs(i+1);
y=y0+k1;
k2=h*eval(f);
y0=y0+(k1+k2)/2;
fprintf('\n%2.0f%10.6f%10.6f\n',it,x0,y0);
end
fprintf('\n El punto aproximado y(x1) es = %8.6f\n',y0);
syms x
format long
fprintf('Derivada Numerica para 3 puntos\n');
T=input('Ingrese "1" si va usar funciones o "2" si va usar puntos: ');
if T==1
fprintf('Funciones\n');
%Funciones
M=input('Ingrese "1" si va usar el metodo de Intermedios o "2" si va
usar el metodo de Extremos: ');
if M==1
%Intermedios
fprintf('Metodo de evaluacion por Intermedios \n');
f=input('Ingrese la función: ');
x0=input('Ingrese el valor de x0: ');
n=input('Ingrese la cantidad de intervalos: ');
for i=1:n
h=input('Ingrese el valor del intervalo "h": ');
i=i+1-1;
x=x0+h;
f1=eval(f);
x=x0-h;
f2=eval(f);
dev=(1/(2*h))*(f1-f2);
disp('La funcion evaluada en h: '),disp(h);
disp('Tiene un valor de: '),disp(dev);
disp('Iteracion numero: '),disp(i);
end
else
%Extremos
fprintf('Metodo de evaluacion por extremos \n');
f=input('Ingrese la función: ');
x0=input('Ingrese el valor de x0: ');
n=input('Ingrese la cantidad de intervalos: ');
for i=1:n
h=input('Ingrese el valor del intervalo "h": ');
i=i+1-1;
x=x0;
f1=eval(f);
x=x0+h;
f2=eval(f);
x=x0+2*h;
f3=eval(f);
x=x0;
devf=abs(eval(diff(f,3)));
dev=(1/(2*h))*((-3*f1)+(4*f2)-(f3))+((h^2)/3)*devf;
disp('La funcion evaluada en h: '),disp(h);
disp('El error es de: '),disp(devf);
disp('Tiene un valor de: '),disp(dev);
disp('Iteracion numero: '),disp(i);
end
end
else