programas basicos en matlab

25
UNIVERSIDAD NACIONAL DE SAN AGUSTIN ESCUELA PROFESIONAL DE INGENIERIA CIVIL METODOS NUMERICOS Y PROGRAMACION RAICES DE ECUACIONES SISTEMAS DE ECUACIONES LINEALES Y NO LINEALES INTERPOLACION, INTEGRACION Y DIFERENCIACION NUMERICA PROFESOR: ALUMNO: LUCIO FUTURI MOSCOSO HORARIO: GRUPO: B

Upload: junior-octavio-saraza-ramos

Post on 19-Dec-2015

246 views

Category:

Documents


1 download

DESCRIPTION

Este documento trata sobre un breve resumen de la aplicacion de los metodos numericos en matlab, con algunos ejemplos de aplicacion en cada tema.

TRANSCRIPT

UNIVERSIDAD NACIONAL DE SAN AGUSTIN

ESCUELA PROFESIONAL DE INGENIERIA CIVIL

METODOS NUMERICOS Y PROGRAMACION

RAICES DE ECUACIONES SISTEMAS DE ECUACIONES LINEALES Y NO

LINEALES INTERPOLACION, INTEGRACION Y

DIFERENCIACION NUMERICA

PROFESOR:

ALUMNO: LUCIO FUTURI MOSCOSO

HORARIO:

GRUPO: B

AREQUIPA – PERU

2014RAICES DE ECUACIONES

PROBLEMA 1

Resolver la siguiente ecuación: 0=1/X.^0.5+2*log10(E/(3.7*D)+2.51/(RE*X.^0.5)), donde E es la rugosidad, D el diámetro, RE el numero de Reynolds, RO es la densidad del fluido, V es la velocidad, y MU la viscosidad dinámica.

METODO DEL PUNTO FIJO:

function Y = G1(X)E=0.0000015;D=0.005;RO=1.23;V=40;MU=1.79*10.^-5;RE=RO*V*D/MU;Y =0.25/(log10(E/(3.7*D)+2.51/(RE*X.^0.5))).^2;return;

PROGRAMA

function [Xp, ITER, FLAG] = puntofijo(G, X0, EPS1, MAXIT)% Sintaxis% [Xp, ITER, FLAG] = PUNTOFIJO(G, X0, EPS1, MAXIT)% Entrada% - G es la función, almacenada como un archivo G.m% - X0 es el valor inicial% - EPS1 es el criterio de convergencia% - MAXIT es el número máximo de iteraciones% Salida% - Xp es el valor de la raíz aproximada% - ITER es el número de iteraciones realizadasfor K = 1 : MAXIT X = feval(G, X0); if (abs(X - X0)) < EPS1 Xp = X; ITER = K; return; end X0 = X;end disp('Se ha excedido el máximo número de iteraciones...'); ITER = MAXIT; end

SOLUCION :

>> [Xp, ITER, FLAG] = puntofijo('G1', 3, 1e-6, 25)Xp = 0.0290ITER = 7

METODO DE NEWTON

function Y = f(X)

E=0.0000015;D=0.005;RO=1.23;V=40;MU=1.79*10.^-5;RE=RO*V*D/MU;Y =1/X.^0.5+2*log10(E/(3.7*D)+2.51/(RE*X.^0.5));return;

function y =df(x)h=0.0000001;y=(f(x+h)-f(x))/h;end

PROGRAMA

function [x,k]=newton(x,t1,t2)% Sintaxis% [x,k] = newton(x,t1,t2)% Entrada% - f es la función, almacenada como un archivo f.m% - df es la derivada de de la función, almacenada como un archivo df.m% - X es el valor inicial% - t1 es el criterio de tolerancia% - t2 es el criterio de tolerancia% - x es el valor de la raíz aproximada

k=0; y=x+1;while abs(f(x))>=t1 && abs(y-x)>=t2 y=x; x=x-f(x)/df(x); k=k+1;end

Notese que al usar newton se debe graficar la ecuación previamente para visualizar un punto adecuado a partir del cual se comenzara la iteración:

>> [ x k]= newton(1,10^-6,10^-7)x = Inf - Infik = 7

>> [ x k]= newton(0.03,10^-6,10^-7)x = 0.0290k = 3

>> [ x k]= newton(0.001,10^-6,10^-7)x = 0.0290k = 8

>> fplot('f',[-10 20])Warning: Imaginary parts of complex X and/or Y arguments ignored

-10 -5 0 5 10 15 20-10

-8

-6

-4

-2

0

2

PROBLEMA 2La velocidad de un paracaidista que cae esta dada por: v =(g*x/c)*(1-exp(-(c/x)*t),donde g=9.81m/s2 .Para un paracaidista con coeficiente de arrastre de c=15kg/s, calcule la masa de modo que la velocidad sea v=35m/s en t=9seg.

METODO DE LA BISECCION

function y = f(x)g=9.81;c=15;v=35;t=9;y=(g*x/c)*(1-exp(-(c/x)*t))-v;

return;

Antes de aplicar la iteración es recomendable graficar la ecuación para tener puntos de inicialización y no caer en intervalos inútiles.

0 10 20 30 40 50 60 70 80 90 100-35

-30

-25

-20

-15

-10

-5

0

5

10

15

PROGRAMA

function [c,k]=biseccion(a,b,e)% Sintaxis% [c,k] = biseccion(a, b, e )% Entrada% - f es la función, almacenada como un archivo f.m% - a, b son los extremos del intervalo inicial% e es el criterio de exactitud o tolerancia% Salida% - c es el valor de la raíz aproximadak=0;while b-a>=e c=(a+b)/2; if f(a)*f(c)<0 b=c; else a=c; end k=k+1;end

SOLUCIONLa_masa_del_individuo_es= biseccion(50,70,10^-3)La_masa_del_individuo_es = 59.7577

METODO DE LA SECANTE

PROGRAMA

function [Xp, ITER, FLAG] = SECANTE(f, X0, X1, EPS1, EPS2, MAXIT)% Sintaxis% [Xp, ITER, FLAG] = SECANTE(f, X0, X1, EPS1, EPS2, MAXIT)% Entrada% - f es la función, almacenada como un archivo f.m

% - X0, X1 son los valores iniciales% - EPS1 es el criterio de convergencia% - EPS2 es el criterio de exactitud% - MAXIT es el número máximo de iteraciones% Salida% - Xp es el valor de la raíz aproximada% - ITER es el número de iteraciones realizadasfor K = 1 : MAXIT Xp = X0 - (X1 - X0) * feval(f, X0) / (feval(f, X1) - feval(f, X0)); if (abs(Xp - X1) <= EPS1) || (abs(feval(f, Xp)) <= EPS2) ITER = K; return; end X0 = X1; X1 = Xp;enddisp('Se ha excedido el máximo número de iteraciones..');ITER = MAXIT;

SOLUCION

>> [Xp, ITER, FLAG] = SECANTE('f', 65, 75, 1e-6, 1e-6, 10)Xp = 59.7582ITER = 4

SISTEMA DE ECUACIONES LINEALES

PROBLEMA3

Resolver el sistema lineal:

>> A=[3 -.1 -.2;0.1 7 -0.3;0.3 -0.2 10]

A =

3.0000 -0.1000 -0.2000 0.1000 7.0000 -0.3000

0.3000 -0.2000 10.0000>> b=[7.85;-19.3;71.4]

b =

7.8500 -19.3000 71.4000

METODO GAUSS

PROGRAMA

function X =gauss(A,b)% ENTRADAS% A : Matriz nxn% B : Vector nx1% SALIDAS% X : Vector solución[~,n]=size(A);X=zeros(n,1);

for k=1:1:n-1 for i=k+1:1:n m=A(i,k)/A(k,k); A(i,k)=0; for j=k+1:1:n A(i,j)=A(i,j)-m*A(k,j); end b(i)=b(i)-m*b(k); endendX(n)=b(n)/A(n,n);for k=n-1:-1:1 S=0; for j=k+1:1:n S=S+A(k,j)*X(j); end X(k)=(b(k)-S)/A(k,k);endend

SOLUCION

>> EL_VECTOR_SOLUCION_ES = gauss(A,b)EL_VECTOR_SOLUCION_ES X = 3.0000 -2.5000 7.0000

METODO FACTORIZACION LU

PROGRAMAfunction descompa=input('ingrese la matriz A=');b=input('ingrese el vector b=');n=length(b);l=zeros(n);u=zeros(n);for k=1:n for j=k:n s=0; p=1; while p<=k-1 s=s+l(k,p)*u(p,j); p=p+1; end u(k,j)=a(k,j)-s; end l(k,k)=1; for i=k+1:n sum=0; q=1; while q<=k-1

sum=sum+l(i,q)*u(q,k); q=q+1; end l(i,k)=(a(i,k)-sum)/u(k,k); endendluy(1)=b(1);for i=2:n s=0; for k=1:i-1 s=s+l(i,k)*y(k); end y(i)=b(i)-s;endyx(n)=y(n)/u(n,n);for i=n-1:-1:1 s=0; for k=i+1:n s=s+u(i,k)*x(k); end x(i)=(y(i)-s)/u(i,i);endx

SOLUCION

>> descompingrese la matriz A=[3 -.1 -.2;0.1 7 -0.3;0.3 -0.2 10]ingrese el vector b=[7.85;-19.3;71.4]

l =

1.0000 0 0 0.0333 1.0000 0 0.1000 -0.0271 1.0000

u =

3.0000 -0.1000 -0.2000 0 7.0033 -0.2933 0 0 10.0120

y = 7.8500 -19.5617 70.0843

x = 3.0000 -2.5000 7.0000

PARA UN SISTEMA TRIDIAGONALPROBLEMA 4

Resolver el siguiente sistema de ecuaciones: M =

2.0147 -0.0209 0 0 -0.0209 2.0147 -0.0209 0 0 -0.0209 2.0147 -0.0209 0 0 -0.0209 2.0147

B =

4.1750 0.0000 0.0000 2.0875

PROGRAMA

function X = tridiagonalsistemaA=input('ingrese EL VECTOR A=');D=input('ingrese EL VECTOR D=');C=input('ingrese EL VECTOR C=');B=input('ingrese EL VECTOR B=');%Este programa resuelve un sistema lineal MX=B donde M es una matriz%triagonal, en este caso consideraremos la matriz M compuesto por los%vectores D,C y A % ENTRADAS% A vector (n-1)*1 diagonal inferior% D vector n*1 diagonal principal% C vector (n-1)*1 diagonal superior% B vector independiente nx1% SALIDA% X vector soluciónn = length(B);for k = 2:n, mult = A(k-1)/D(k-1); D(k) = D(k) - mult*C(k-1); B(k) = B(k) - mult*B(k-1);endX(n) = B(n)/D(n);for k = (n-1):-1:1, X(k) = (B(k) - C(k)*X(k+1))/D(k);end

SOLUCION

>> tridiagonalsistemaingrese EL VECTOR A=[-0.020875 -0.020875 -0.020875 0]ingrese EL VECTOR D=[2.01475 2.01475 2.01475 2.01475]ingrese EL VECTOR C=[-0.020875 -0.020875 -0.020875 0]ingrese EL VECTOR B=[4.175; 0,;0;2.0875]

ans =

2.0724 0.0216 0.0110 1.0362

SISTEMAS DE ECUACIONES NO LINEALES

PROBLEMA 5RESOLVER EL SISTEMA:

function G = FG_2EC(X)G(1) = (4 - sqrt(X(2)))^3 / 8;G(2) = sqrt(17 - X(1)^2);return;

METODO DEL PUNTO FIJO

PROGRAMA

function [Xp, ITER, FLAG] = PUNTOFIJO_MV(G, X0, EPS, MAXIT)% Sintaxis% PUNTOFIJO_MV(G, X0, EPS, MAXIT)% Entrada% - G es el sistema de ecuaciones no lineales, almacenado como G.m% - X0 es el vector de valores iniciales% - EPS es el criterio de convergencia% - MAXIT es el número máximo de iteraciones% Salida% - Xp es el vector solución% - ITER es el número de iteraciones realizadasfor K = 1 : MAXIT X = feval(G, X0); if norm(X - X0) <= EPS Xp = real(X); ITER = K; return; end X0 = X;enddisp('Se ha excedido el máximo número de iteraciones...');ITER = MAXIT;

SOLUCION

>> [Xp, ITER, FLAG] =PUNTOFIJO_MV('FG_2EC', [0.5, 0.5], 1e-6, 25)

Xp = 1.0000 4.0000

ITER = 17

PROBLEMA 6RESOLVER EL SIGUIENTE SISTEMA:

function Y = F1_2EC(X)Y(1) = 4 - (8 * X(1))^(1/3) - X(2)^(1/2);Y(2) = 17 - X(1)^2 - X(2)^2;return;

function dY = JF1_2EC(X) dY(1) = -(8/3) * (8 * X(1))^(-2/3);dY(2) = -2 * X(2);return;

PROGRAMA

function [Xp, ITER, FLAG] = NEWTON_MODIF(F, D, X, EPS1, MAXIT)% Sintaxis% [Xp, ITER, FLAG] = NEWTON_MODIF(F, D, X, EPS1, MAXIT)% Entrada% - F es el sistema de ecuaciones no lineales, almacenado como F.m% - D son las derivadas, almacenadas como D.m% - X es el vector de valores iniciales% - EPS1 es el criterio de convergencia% - MAXIT es el número máximo de iteraciones% Salida% - Xp es el vector solución% - ITER es el número de iteraciones realizadas% - FLAG es una variable lógica, es 1 si hubo convergencia, caso% contrario es 0for K = 1 : MAXIT XAUX = X; for I = 1 : 2 FX = feval(F, X); DX = feval(D, X); X(I) = X(I) - FX(I) / DX(I); end if norm(XAUX - X) < EPS1 ITER = K; FLAG = 1; Xp = X; return;

endenddisp('Se ha excedido el máximo número de iteraciones...');ITER = MAXIT;FLAG = 0;

SOLUCION

>> [Xp, ITER, FLAG] = NEWTON_MODIF('F1_2EC', 'JF1_2EC', [4, 3], 1e-6, 25)Xp =

1.0 4.0000 2.0000

ITER = 9FLAG = 1

INTERPOLACION NUMERICA

PROBLEMA 7OBTENER LOS COEFICIENTES DE INTERPOLACION DE NEWTON DEl SIGUIENTE CONJUNTO DE PARES ORDENADOS MOSTRADOS EN LA SIGUIENTE FORMA:

X= [0 8 16 24 32 40]Y= [14.621 11.483 9.87 8.418 7.305 6.413]

METODO DE DIFERENCIAS FINITAS

PROGRAMA

function diferenciafinitasx=input('ingrese las variables independientes x= ');y=input('ingrese las variables dependientes y= ');% -----------------------------------------------------------% Este programa realiza la interpolación de un conjunto de puntos(x,y) % por el metodo de diferencias finitas.%-----------------------------------------------------------n=length(x);for i=1:n A(i,1)=y(i);endfor j=2:n for k=1:n-j+1 A(k,j)=A(k+1,j-1)-A(k,j-1); endendA

SOLUCIONPara este caso solo se obtendrá el cuadro general de dicho método:

>> diferenciafinitasingrese las variables indepedientes x= [0 8 16 24 32 40]ingrese las variables dependientes y= [14.621 11.483 9.87 8.418 7.305 6.413]

A =

14.6210 -3.1380 1.5250 -1.3640 1.5420 -1.8380 11.4830 -1.6130 0.1610 0.1780 -0.2960 0 9.8700 -1.4520 0.3390 -0.1180 0 0 8.4180 -1.1130 0.2210 0 0 0 7.3050 -0.8920 0 0 0 0 6.4130 0 0 0 0 0

METODO DE DIFERENCIAS DIVIDIDAS HACIA ARRIBA

PROGRAMA

function difdivarribaX=input('ingrese el vector X=');Y=input('ingrese el vector Y=');% -----------------------------------------------------------% Este programa realiza la interpolación de un conjunto de puntos (x,y) % por el metodo de diferencias divididas hacia arriba.%-----------------------------------------------------------% ENTRADAS% X : Conjunto de abcisas% Y : Conjunto de ordenadas% SALIDAS: % C : Coeficientes del polinómio interpolante de Newton% D :Coeficientes de la tabla por el metodo de diferencias % divididas hacia abajo%-----------------------------------------------------------n=length(X);D=zeros(n,n);D(:,1)=Y';%Formula de la tabla de diferencia divididas hacia abajo. for j=2:n for k=j:n D(k,j)=(D(k,j-1)-D(k-1,j-1))/(X(k)-X(k-j+1)); endendD

SOLUCION

>> difdivarribaingrese el vector X=[0 8 16 24 32 40]ingrese el vector Y=[14.621 11.483 9.87 8.418 7.305 6.413]

D =

14.6210 0 0 0 0 0

11.4830 -0.3922 0 0 0 0 9.8700 -0.2016 0.0119 0 0 0 8.4180 -0.1815 0.0013 -0.0004 0 0 7.3050 -0.1391 0.0026 0.0001 0.0000 0 6.4130 -0.1115 0.0017 -0.0000 -0.0000 -0.0000

A partir del cuadro obtenido se extrae los coeficientes y se compone la siguiente función:

function y = f(x) y=14.6210-0.3922*(x-0)+0.0119*(x-8)*(x-0)-0.0004*(x-0)*(x-8)*(x-16);>> f(27)ans = 7.8791

METODO DE DIFERENCIAS DIVIDIDAS HACIA ABAJO

PROGRAMA

function diferenciasdivididasx=input('ingrese el vector x=');y=input('ingrese el vector y=');n=length(x);a=zeros(n);for i=1:n a(i,1)=y(i);endfor j=2:n for k=1:n-j+1 a(k,j)=(a(k+1,j-1)-a(k,j-1))/(x(k+j-1)-x(k)); endend%a representa que contiene los coeficientes del polinómio interpolante de Newton a%C representa los coeficientes del polinómio interpolante de Newton

C=a(n,n);for k=(n-1):-1:1 C=conv(C,poly(x(k))); m=length(C); C(m)=C(m)+a(k,k);endC

SOLUCION

>> diferenciasdivididasingrese el vector x=[0 8 16 24 32 40]ingrese el vector y=[14.621 11.483 9.87 8.418 7.305 6.413]

a =

14.6210 -0.3922 0.0119 -0.0004 0.0000 -0.0000 11.4830 -0.2016 0.0013 0.0001 -0.0000 0 9.8700 -0.1815 0.0026 -0.0000 0 0 8.4180 -0.1391 0.0017 0 0 0 7.3050 -0.1115 0 0 0 0 6.4130 0 0 0 0 0

A partir de la tabla obtenida anteriormente se obtiene los coeficientes para el polinomio interpolador:

function y = f(x) y=14.6210-0.3922*(x-0)+0.0119*(x-8)*(x-0)-0.0004*(x-0)*(x-8)*(x-16);>> f(27)ans = 7.8791

METODO DE LAGRANGE

El problema planteado es el mismo que el anterior, pero esta vez por otro método.

>> X= [0 8 16 24 32 40]X = 0 8 16 24 32 40

>> Y= [14.621 11.483 9.87 8.418 7.305 6.413]Y = 14.6210 11.4830 9.8700 8.4180 7.3050

6.4130

PROGRAMA

function LAGRANGE1X=input('ingrese el vector X=');Y=input('ingrese el vector Y=');XINT=input('ingrese el vector XINT=');% Sintaxis% YINT = LAGRANGE1(X, Y, XINT)% Entrada% - X es un vector que contiene la lista de abscisas% - Y es un vector que contiene la lista de ordenadas% - XINT es el valor para el que se desea la interpolación% Salida% - YINT es el valor de la función en XINTN = length(X) - 1;YINT = 0;for I = 1 : N + 1 L = 1; for J = 1 : N + 1 if I ~= J L = L * (XINT - X(J)) / (X(I) - X(J)); end endYINT = YINT + L * Y(I);endYINT

SOLUCION

>> LAGRANGE1ingrese el vector X= [0 8 16 24 32 40]ingrese el vector Y= [14.621 11.483 9.87 8.418 7.305 6.413]ingrese el vector XINT= 27

YINT = 7.9417

METODOS DE INTEGRACION NUMERICA

PROBLEMA 8Integrar la función dada en forma tabular:>> X= [0, 1, 2, 3, 4, 5, 6]; Y = [-5, 1, 9, 25, 55, 105, 181];

METODO DEL TRAPECIO

PROGRAMA

function S = TRAPECIO(X, FX)% Sintaxis% I = TRAPECIO(X, FX)% Entrada% - X es un vector que contiene la lista de variables independientes% - FX es un vector que contiene la lista de variables dependientes o% integrando% - a y b son los extremos inferior y superior del intervalo de% integración% Salida% - S es la aproximación a la integral con la regla compuesta del% trapecioN = length(X);a = X(1);b = X(N);H = (b - a) / (N - 1);S = 0;for K = 2 : (N - 1) S = S + FX(K);endS = (H / 2) * (FX(1) + 2 * S + FX(N));

>> TRAPECIO(X,Y)ans = 283

METODO DE SIMPSON 1/3

PROGRAMA

function S = SIMPSON13(X, FX)% Sintaxis% I = SIMPSON13(X, FX)% Entrada% - X es un vector que contiene la lista de variables independientes% - FX es un vector que contiene la lista de variables dependientes o integrando% - a y b son los extremos inferior y superior del intervalo de integración% Salida% - S es la aproximación a la integral con la regla compuesta del Simpson 1/3N = length(X);a = X(1);b = X(N);H = (b - a) / (N - 1);S1 = 0;S2 = 0;for K = 2 : 2 : (N - 1)S1 = S1 + FX(K);endfor K = 3 : 2 : (N - 2)S2 = S2 + FX(K);endS = (H / 3) * (FX(1) + 4 * S1 + 2 * S2 + FX(N));

SOLUCION

>> X=[0, 1, 2, 3, 4, 5, 6]; Y = [-5, 1, 9, 25, 55, 105, 181];>> SIMPSON13(X, Y)

ans = 276

METODO DE SIMPSON 3/8

PROGRAMA

function S = SIMPSON38(X, FX)% Sintaxis% I = SIMPSON38(X, FX)% Entrada% - X es un vector que contiene la lista de variables independientes% - FX es un vector que contiene la lista de variables dependientes o integrando% - a y b son los extremos inferior y superior del intervalo de integración% Salida% - S es la aproximación a la integral con la regla compuesta del Simpson 3/8N = length(X);a = X(1);b = X(N);H = (b - a) / (N - 1);

S1 = 0;S2 = 0;for K = 2 : (N - 1) if mod(K - 1, 3) == 0 S1 = S1 + FX(K); else S2 = S2 + FX(K); endendS = (3 * H / 8) * (FX(1) + 2 * S1 + 3 * S2 + FX(N));

SOLUCION

>> X=[0, 1, 2, 3, 4, 5, 6]; Y = [-5, 1, 9, 25, 55, 105, 181];>> SIMPSON38(X,Y)

ans = 276PROBLEMA 9Integrar la función en forma tabular:

x =[0 1 2 3 4 5] y = f(x)=[ -5 1 9 25 55 105]

Como el numero de subintervalos es impar (en este caso 5) aplicamos una combinacion de las formulas de Simpson 1/3 y Simpson 3/8, veamos:

>> X1 = [0, 1, 2, 3]>> Y1 = [-5, 1, 9, 25]>> X2 = [3, 4, 5]>> Y2 = [25, 55, 105]>> I = SIMPSON38(X1, Y1) + SIMPSON13(X2, Y2)

I = 135.4167

METODO DE ROMBERG

PROBLEMA 10Encontrar la integral de la función de x en el intervalo de 0 a 1.

function y = f(x) y = 4 * x^3 - 3 * x^2 + 2 * x + 1;

return;

PROGRAMA

function [R, Q, EPS, H] = ROMBERG(f, a, b, K, TOL)% Sintaxis% [R, Q, EPS, H] = ROMBERG(F, a, b, K, TOL)% Entrada% - f es la función integrando, almacenada como un archivo f.m% - a y b son los extremos inferior y superior del intervalo de% integración% - K es el número máximo de fi las de la tabla

% - TOL es la tolerancia% Salida% - R es el esquema de Romberg% - Q es la aproximación a la integral% - EPS es una estimación del error% - H es el menor de los incrementos utilizadosN = 1;H = b - a;EPS = 1;J = 0;R = zeros(4, 4);R(1, 1) = H * (feval(F, a) + feval(F, b)) / 2;while ((EPS > TOL) && (J < K)) || (J < 4) J = J + 1; H = H / 2; S = 0; for P = 1 : N X = a + H * (2 * P - 1); S = S + feval(F, X); end R(J + 1, 1) = R(J, 1) / 2 + H * S; N = 2 * N; for M = 1 : J R(J + 1, M + 1) = R(J + 1, M) + (R(J + 1, M) - R(J, M)) / (4^M - 1); end EPS = abs(R(J, J) - R(J + 1, M + 1));endQ = R(J + 1, J + 1);

SOLUCION

>> [R, I, EPS, H]= ROMBERG('f',0, 1, 4, 1e-2)

R =

2.5000 0 0 0 0 2.1250 2.0000 0 0 0 2.0313 2.0000 2.0000 0 0 2.0078 2.0000 2.0000 2.0000 0 2.0020 2.0000 2.0000 2.0000 2.0000

I = 2EPS = 0H = 0.0625

METODOS DE DIFERENCIACION NUMERICA

METODO DE EULER

PROBLEMA 11Resolver el siguiente problema de valor inicial:

function y = f(X, Y) y(0)=1y = (Y + 1) / (X - 1);return;

PROGRAMA

function [t, Y] = EULER(F, a, b, Y0, N)% Sintaxis% [t, Y] = EULER(F, a, b, Y0, N)% Entrada% - F es la función, almacenada como un archivo F.m% - a y b son los extremos del intervalo% - Y0 es la condición inicial YO = Y(a)% - N es ell número de pasos% Salida% - t es el vector de la abscisas o variable independiente% - Y es el vector de las ordenadas o variable dependienteH = (b - a) / N;t = zeros(1, N + 1);Y = zeros(1, N + 1);t = [a: H: b];Y(1) = Y0;for J = 1 : N Y(J + 1) = Y(J) + H * feval(F, t(J), Y(J));endt = t';Y = Y';

SOLUCION

>> [X, Y] = EULER('f', 0, 0.4, 1, 4)

X =

0 0.1000 0.2000 0.3000 0.4000

Y =

1.0000 0.8000 0.6000 0.4000 0.2000

METODO DE RUNGE KUTTA DE CUARTO ORDEN

PROBLEMA 12Resolver el siguiente problema de valor inicial:

function y = f(X, Y) y(0.5)=1

y = X + 2 * X * Y;return;

PROGRAMA

function [t, Y] = RK4(F, a, b, Y0, N)% Sintaxis% [t, Y] = RK4(F, a, b, Y0, N)% Entrada% - F es la función, almacenada como un archivo F.m% - a y b son los extremos del intervalo% - Y0 es la condición inicial YO = Y(a)% - N es ell número de pasos% Salida% - t es el vector de la abscisas o variable independiente% - Y es el vector de las ordenadas o variable dependienteH = (b - a) / N;t = zeros(1, N + 1);Y = zeros(1, N + 1);t = (a: H: b);Y(1) = Y0;for J = 1 : N K1 = H * feval(F, t(J), Y(J)); K2 = H * feval(F, t(J) + H/2, Y(J) + K1/2); K3 = H * feval(F, t(J) + H/2, Y(J) + K2/2); K4 = H * feval(F, t(J) + H, Y(J) + K3); Y(J + 1) = Y(J) + (K1 + 2 * K2 + 2 * K3 + K4)/6;endt = t';Y = Y';

SOLUCION

>> [t, Y] = RK4('f', 0.5, 1, 1, 5)

t =

0.5000 0.6000 0.7000 0.8000 0.9000 1.0000

Y =

1.0000 1.1744 1.4069 1.7155 2.1260 2.6755