Beruflich Dokumente
Kultur Dokumente
ba
Suponemos que xk x0 hk son nodos equiespaciados con paso h y el punto medio
m
xk 1 xk
del subintervalo [xk-1,xk] es xk y f k f ( xk ) , la expresin matemtica de la integral
2
queda:
b
h m
I f ( x)dx ( f ( xk 1 ) 4 f ( xk ) f ( xk ))
6 k 1
a
Escribir una funcin llamada simpson que implemente el mtodo de Simpson teniendo
como argumentos de entrada la funcin a integrar, los extremos del intervalo de integracin y
el nmero de subintervalos en los que se divide ste. La funcin retornar la integral
aproximada.
sin(ln( x))dx
0
1
x(sin(ln( x)) cos(ln( x)))]12
2
Calcular el error obtenido.
Ejercicio 6.4.2
4 1 1 7
A 4 8 1 , b 21
2 1 5 15
Se trata de calcular usando un programa M las soluciones sucesivas que se obtienen utilizando
el mtodo de Jacobi explicado en este mdulo. Cul es la solucin del sistema utilizando
tolerancia 10-6?
Ejercicio 6.4.3 Sea el sistema de ecuaciones lineales Ax b . El mtodo de Gauss-Seidel es un
mtodo iterativo en el que la matriz de coeficientes A se descompone de la misma manera que
en el mtodo de Jacobi:
A D L U
( D L) x ( n 1) Ux ( n ) b, n 0,1,...
i 1 N
1
xi( n 1) (bi aij x (jn 1) aij x (jn ) ) i 1,, N
aii j 1 j i 1
SE PIDE Escribir una funcin M que implemente el mtodo iterativo de Gauss-Seidel. Los datos
de entrada sern la matriz de coeficientes del sistema, el vector columna de trminos
independientes, el nmero mximo de iteraciones permitido y la tolerancia del mtodo. Los
datos de retorno sern la solucin del sistema y el nmero de iteraciones en las que se ha
llegado a sta. Aplicarla a resolver el sistema lineal planteado en el ejercicio anterior con la
misma tolerancia.
Ejercicio 6.4.4 El mtodo de Newton hace uso de la funcin f y de su primera derivada f' lo
cual lleva a tener que calcular la derivada de la funcin. Esto puede evitarse usando frmulas
de derivacin numrica para aproximar la derivada. Existen varias posibilidades, una de las
frmulas es conocida como diferencia finita regresiva y viene dada con la expresin
f ( xn ) f ( xn h)
f '( xn )
h
que aproxima la derivada usando la pendiente de una recta que pasa por (xn f(xn)) y un punto
de la funcin situado a su izquierda h unidades.
f '( xk ) ( f ( xk ) f ( xk 1 ) / ( xk xk 1 )
que sustituyendo en la frmula iterativa del mtodo de Newton resulta el siguiente mtodo
iterativo:
( xk xk 1 )
xk 1 xk f ( xk ) , k 1, 2,...
f ( xk ) f ( xk 1 )
Este mtodo se conoce como Mtodo de la Secante. Observemos que para el clculo de la
aproximacin xk+1 se utilizan las dos aproximaciones anteriores xk y xk-1 y por tanto para
comenzar el proceso iterativo son necesarios los dos primeros puntos iniciales x0 , x1 . Se
supone que f ( xk ) f ( xk 1 ) 0 para k 1 . El mtodo de la secante es un ejemplo de
mtodo iterativo multietapa.
function [int]=simpson(fun,a,b,m)
f=inline(fun);
h=(b-a)/m;
int=0;
xm=(x(i)+x(i+1))/2;
int=int+f(x(i))+4*f(xm)+f(x(i+1));
end
int=h/6*int;
x2=2;x1=1;
exacta=1/2*x2*(sin(log(x2))-cos(log(x2)))-(1/2*x1*(sin(log(x1))-...
cos(log(x1))));
I1=simpson('sin(log(x))',1,2,5);
abs(exacta-I1));
Error: 3.755307e-007
Solucin Ejercicio 6.4.2
N=length(b);
for j=1:niter
for i=1:N
x(i)=(-A(i,1:i-1)*xx(1:i-1)-A(i,i+1:N)*xx(i+1:N)+b(i))/A(i,i);
end
if norm(x-xx)<1.e-6
disp('Solucin');
disp(x);
return;
end
xx=x;
end
disp('Solucin no encontrada');
1.5286
a)
2.2500
x
1.2000
0.6000
3.6417
b)
6.5833
x 3.8000
0.6000
1.6667
Solucin Ejercicio 6.4.3
function [x,niter]=gauss_seidel(A,b,maxiter,tol)
N=length(b);
xx=zeros(N,1);
x=zeros(N,1);
for j=1:maxiter
for i=1:N
x(i)=(-A(i,i+1:N)*xx(i+1:N)+b(i)-...
A(i,1:i-1)*x(1:i-1))/A(i,i);
end
if norm(x-xx)<tol
niter=j;
return;
end
xx=x;
end
disp('Solucin no encontrada');
>> [sol,iteraciones]=gauss_seidel(A,b,100,1.e-6)
sol =
2.0000
4.0000
3.0000
iteraciones =
9
Solucin Ejercicio 6.4.4
function [x1,k]=secante(fun,x0,x1,epsilon,maxit)
% Entrada:
% Salida:
% k- es el numero de iteraciones
f=inline(fun);
for k=1:maxit
x2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0));
err=abs(x2-x1);
x0=x1;
x1=x2;
end
x1='No converge';
k=maxit;
>> [sol,iteraciones]=secante('(x-2)^2',2.3,2.1,1e-7,100)
sol =
2.0002
iteraciones =
13
Apartado b) Llamada a la funcin:
>> [sol,iteraciones]=secante('(x-2)^5',2.3,2.1,1e-7,100)
sol =
2.0374
iteraciones =
sol =
4.7124
iteraciones =
>> [sol,iteraciones]=secante('cos(x)',3.9,4,1e-7,100)
sol =
4.7124
iteraciones =
>> [sol,iteraciones]=secante('cos(x)',1.2,1.3,1e-7,100)
sol =
1.5708
iteraciones =