Beruflich Dokumente
Kultur Dokumente
Objetivo:
sistemticamente los extremos del intervalo hasta que obtengamos un intervalo de anchura sufcie
Variables de entrada: y
Variables de salida: xr
Variables auxiliares: t,q,xl,xu
Uso del programa y Programa:
function [ xr ] = biseccion( y )
%la funcin recibe una funcin y que depende de x
%este programa retorna el valor de la raz de una
%funcin
%con un error aproximado del 0.000001%
%recibe la funcin simblica dependiente de x
%se hace un anlisis, graficando la funcin, para poder
% elegir bien el intervalo
clc, clear
syms x
t=linspace(-50,50,10000);
q=subs(y,t);
plot(t,q)
grid on
%se pide el ingreso de los limites
xl=input('Ingrese el limite inferior: ');
xu=input('Ingrese el limite superior: ');
xr=0;
error=100;
if ((subs(y,xu)*subs(y,xl))>0)%sentencia de control para
descartar el intervalo
MADDY FAVER, ELMER MAQUERAVI CICLO
[MTODOS NUMRICOS]
disp(' ')
disp('Intervalo no valido para hallar la raiz')
error=0.00001;
xr=NaN;
end
%se inicia el metodo de biseccion, con un ciclo en este
caso while y
%error=0.000001%
while (abs(error)>0.000001 %Aqui podemos modificar el
error
aux=xr;
xr=(xl+xu)/2;
fxl=subs(y,xl); %se evalua la funcion en XL
fxr=subs(y,xr); %se evalua la funcion en Xr
h=fxl*fxr;
%se multiplican los reultados para
f(Xr)*f(XL)
if (h<0)
%sentencias condicionales para definir
los nuevos limites.
xu=xr;
elseif(h>0)
xl=xr;
else
error=0.000001; %en caso de que h=0 se terminan
las iteraciones
end
error=((xr-aux)/xr)*100; %se calcula el error
relativo aproximado
end
end
Ejemplo:
[MTODOS NUMRICOS]
2. Mtodo de Regula-Falsi
Objetivo:
Construir una sucesin de intervalos [an,bn] cada uno de los cuales contiene un cero.
function raiz=falsa(def,x0,x1,tol)
%Metodo de la cuerda o Regla-falsa
%def es la funcion 'ingresada'
%x0,x1 son los limites
%tol es la Tolerancia
f=inline(def);
if f(x0)*f(x1)<0
x=x0;
while abs(f(x))>tol
x=x1-f(x1)*((x1-x0)/(f(x1)-f(x0)));
if f(x0)*f(x)<0
x1=x;
MADDY FAVER, ELMER MAQUERAVI CICLO
[MTODOS NUMRICOS]
else
x0=x;
end
end
raiz=x;
else
raiz='no hay cambio de signo';
end
Ejemplo:
[MTODOS NUMRICOS]
Mtodos abiertos
1. Mtodo de Newton- Raphson
Objetivo:
ren seguida se evala la funcin en Xi obteniendo se f(Xi) se traza una recta tangente que intercepta en Xi
Variables de entrada:
Variables de salida: x1
Variables auxiliares: t
Uso del programa y Programa:
Mtodo de Newton-Raphson
function [X1] = Newton_Raphson()
syms x
%declaramos a X una variable simblica
Y=input('Ingrese la funcin: '); %se solicita la
entrada de la funcin
%graficamos la funcin en un intervalo para poder tomar
una buena
%estimacin de la raz
sup = input('Ingrese el limite superior para graficar:
');
in = input('Ingrese el limite inferior para la
visualizacin: ');
t = linspace(in,sup,500);
%generamos un vector con
los valores
plot(t,subs(Y,t))
%generamos la grfica
grid on
Xn=input('Ingrese el valor aprximado de la raz: ');
%se solicita la estimacin inicial
MADDY FAVER, ELMER MAQUERAVI CICLO
[MTODOS NUMRICOS]
Ydx = diff(Y,x);
%derivamos la funcion Y con respecto
a X y lo asignamos a la variable Ydx
%inicializar varibles
error = 1;
tolerancia = 0.000001;
while error>=tolerancia
%condicin de terminacin
cuando el error sea menor a la tolerancia
X1 = Xn - (subs(Y,Xn)/subs(Ydx,Xn));%formula de NewtonRaphson
error = abs((X1-Xn)/X1);%calculo del error
Xn=X1; %asignacin del nuevo valor de Xn para la
siguiente iteracin
end
end
Ejemplo:
2. Mtodo de la secante
Objetivo:
en vez de calcular la derivada de la funcin en el punto de estudio, teniendo en mente la defnicin de deriv
MADDY FAVER, ELMER MAQUERAVI CICLO
[MTODOS NUMRICOS]
Variables de entrada:
Variables de salida: xa
Variables auxiliares: t
Uso del programa y Programa:
[MTODOS NUMRICOS]
end
end
Ejemplo:
Sistemas lineales
1. Mtodo de Cramer
Objetivo:
regla de Cramer que permite resolver sistemas cuadradas de ecuaciones lineales usando determina
Variables de entrada: A, m
Variables de salida: x
Variables auxiliares: dA,B
[MTODOS NUMRICOS]
%METODO DE CRAMER
function x=cramer(A,m)
%A es la matriz de coeficientes
%m es el vector de constantes
dA=det(A);
if dA==0
x='El sistema no tiene solucion';
return;
end;
n=length(m);
for i=1:n
B=A;
B(:,i)=m;
x(i)=det(B)/dA;
end
x=x';
Ejemplo:
2. Sustitucin Regresiva
MADDY FAVER, ELMER MAQUERAVI CICLO
[MTODOS NUMRICOS]
Objetivo:
Variables de entrada: A, B
Variables de salida: x
Variables auxiliares: n,k
Uso del programa y Programa:
function[x]=backsub(A,B)
%A matriz triangular superior nxn
%B matriz de orden n*1
%x la solucion del sistema lineal Ax=B
n=length(B);
x=zeros(n,1);
x(n)= B(n)/A(n,n);
for k=n-1:-1:1
x(k)=(B(k)-A(k,k+1:n)*x(k+1:n))/A(k,k);
end
end
Ejemplo:
10
[MTODOS NUMRICOS]
3. Mtodo de gauss
Objetivo:
s coefcientes de la diagonal principal de un sistema sean unos y el resto de los coefcientes valgan
Variables de entrada: A, B
Variables de salida: X
Variables auxiliares: C,N,j,q
Uso del programa y Programa:
11
[MTODOS NUMRICOS]
%
Detailed explanation goes here
[N N]=size(A);
X=zeros(N,1);
C=zeros(1,N+1);
Aug=[A B];
for q=1:N-1
[Y,j]=max(abs(Aug(q:N,q)));
C=Aug(q,:);
Aug(j+q-1,:)=C;
if Aug(q,q)==0
'A es singular. No hay solucion o no es unica'
break
end
for k=q+1:N
m=Aug(k,q)/Aug(q,q);
Aug(k,q:N+1)=Aug(k,q:N+1);
end
end
X=backsub(Aug(1:N,1:N),Aug(1:N,N+1));
end
Ejemplo:
12
[MTODOS NUMRICOS]
4.
Factorizacin triangular
Objetivo:
producto de un matriz triangular inferiorLy una matriz triangular superiorU; y despus resolver el sistemaA
Variables de entrada: A, B
Variables de salida: X
Variables auxiliares: C,N,C,R.j.k
Uso del programa y Programa:
13
[MTODOS NUMRICOS]
[N,N]=size(A);
X=zeros(N,1);
Y=zeros(N,1);
C=zeros(1,N);
R=1:N;
for q=1:N-1
% determinacin de la fila pivote para la columna qsima
[max1,j]=max(abs(A(q:N,q)));
%Intercambio en las filas q-sima y j-sima
C=A(q,:);
A(q,:)=A(j+q-1,:);
A(j+q-1,:)=C;
d=R(q);
R(q)=R(j+q-1);
R(j+q-1)=d;
if A(q,q)==0
'A es singular no hay solucion o es unica'
break
end
%calculo del multiplicador ,
%que se guarda en la parte subdiagonal de A
for k=q+1:N
mult=A(k,q)/A(q,q);
A(k,q)=mult;
A(k,q+1:N)=A(k,q+1:N)-mult*A(q,q+1:N);
end
end
%resolucion para hallar Y
Y(1)=B(R(1));
for k=2:N
Y(k)=B(R(k))-A(k,1:k-1)*Y(1:k-1);
end
%resolucion para hallar x
X(N)=Y(N)/A(N,N);
for k=N-1:-1:1
X(k)=(Y(k)-A(k,k+1:N)*X(k+1:N))/A(k,k);
end
end
Ejemplo:
14
[MTODOS NUMRICOS]
Objetivo:
un sistema de ecuaciones lineales, por medio de la realizacin de varios clculos, los cuales se realizan por e
15
[MTODOS NUMRICOS]
end
err=abs(norm(X'-P));
relerr=err/(norm(X)+eps);
P=X';
if (err<delta)|(relerr<delta)
break
end
end
X=X'
end
Ejemplo:
2.
2.
2.
2.
2.
2.
Mtodo de gauss-seidel
Objetivo:
el est basado en el concepto de punto fjo, es decir ( xi = gi (x), i = 1.. n), para resolver sistemas de ecuacio
16
[MTODOS NUMRICOS]
Variables de salida: X
Variables auxiliares: N,j,P
Uso del programa:
Programa:
Ejemplo:
17
[MTODOS NUMRICOS]
Sistemas
no Lineales
Objetivo:
ineales en n variables. Este mtodo se puede usar para aproximar las soluciones complejas de una ecuacin p
18
[MTODOS NUMRICOS]
end
end
Q=P-(J\Y')';
Z=feval(F,Q);
err=norm(Q-P);
relerr=err/(norm(Q)+eps);
P=Q;
Y=Z;
iter=K;
if (err<delta)|(relerr<delta)|(abs(Y)<epsilon)
break
end
Ejemplo:
Objetivo:
19
[MTODOS NUMRICOS]
Ejemplo:
20
[MTODOS NUMRICOS]
2.
Polinomio
interpolador de Newton
Objetivo:
de calcularlo. Este mtodo es til para situaciones que requieran un nmero bajo de puntos para interpolar, y
21
[MTODOS NUMRICOS]
D(:,1)=Y';
% Usamos la formula 20 para hallar
% la tabla de diferencias divididas
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));
end
end
% Calculo del vector que contiene los coeficientes
% del polinomio interpolador de newton,escrito
% de forma habitual,en potencia decreciente de x
C=D(n,n);
for k=(n-1):-1:1
C=conv(C,poly(X(k)));
m=length(C);
C(m)=C(m)+D(k,k);
end
C
D
End
Ejemplo:
Ajuste de Curvas
1. Recta de regresin
Objetivo:
cin matemtica sencilla que describa el comportamiento de una variable dados los valores de otra u otras v
MADDY FAVER, ELMER MAQUERAVI CICLO
22
[MTODOS NUMRICOS]
% Recta de Regresin
% Datos
%
- X es el vector de abscisas 1 x n
%
- y es el vector de ordenadas 1 x n
% Resultados
%
- A es el coefciente de x en Ax + B
%
- B es el coeficiente independiente en Ax+b
xmean=mean(X);
ymean=mean(Y);
sumx2=(X-xmean)*(X-xmean)';
sumxy=(Y-ymean)*(X-xmean)';
A=sumxy/sumx2;
B=ymean-A*xmean;
A
B
end
Ejemplo:
23
[MTODOS NUMRICOS]
Objetivo:
El objetivo en esta seccin es determinar una frmulay= (x) que relacione las variables.
Variables de entrada: X, Y, M
Variables de salida: C
Variables auxiliares: n,B,F,k
Uso del programa y Programa:
24
[MTODOS NUMRICOS]
%
- M es el grado del polinomio optimo
% Resultados
%
- C es el vector de coeficientes del polinomio
%
en potencias decrecientes de x
n=length(X);
B=zeros(1:M+1);
F=zeros(n,M+1);
% Se rellenan las columnas de F con las potencias de X
for k=1:M+1
F(:,k)= X'.^(k-1);
end
% Resolucion de las ecuaciones normales
A=F'*F;
B=F'*Y';
C=A\B;
C=flipud(C);
end
Ejemplo:
F(x)=1.44/(X^2-0.24x)
P2(x) = 22.93-16.96x+2.553x^2
25
[MTODOS NUMRICOS]
P3(x) =33.04-46.51x+19.51x^2-2.296x^3
P4(x) =39.02-80.93x+58.39x^2-17.5x^3+1.680X^4
P5(x)=46.02-118.1x+119.4x^2-57.51x^3+13.03x^4-1.085x^5
26
[MTODOS NUMRICOS]
Integracin numrica
1. Integracin Numrica General
a.
b.
c.
d.
e.
f.
g.
Objetivo:
Variables de entrada:
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
Variables de salida:
'El valor aproximado es: %10.15f\n\n'
27
[MTODOS NUMRICOS]
fprintf('\n\t::::::::::INTEGRACION NUMERICA::::::::::::::\n');
while 1
disp('[1] TRAPECIO SIMPLE (h>0)')
disp('[2] TRAPECIO COMPUESTO(h<0)')
disp('[3] FORMULA DE SIMPSON SIMPLE')
disp('[4] FORMULA DE LOS TRES OCTAVOS DE SIMPSON')
disp('[5] FORMULA DE SIMPSON COMPUESTO')
disp('[6] INTEGRACION DE ROMBERG')
disp('[7] ROMBERG MODIFICADO')
disp('[8] VOLVER')
elecc3 = input('ELIGA OPCION ');
switch elecc3
case 1
clc; clear;
fprintf('\t\tTRAPECIO SIMPLE\n')
funcion=input('ingrese la funcion \n f(x)=','s');
b=input('ingrese el limite superior de la integral\n');
a=input('ingrese el limite inferior de la integral\n');
h=b-a;
x=a;
f=eval(funcion); x=b;
f= (f+eval(funcion))*(h/2);
fprintf('El valor aproximado es: %10.15f\n\n',f)
case 2
clc; clear;
fprintf('\t\tTRAPECIO COMPUESTO\n')
funcion=input('ingrese la funcion \n f(x)=','s');
b=input('ingrese el limite superior de la integral\n');
a=input('ingrese el limite inferior de la integral\n');
n=input('ingrese el numero de intervalos\n');
h=(b-a)/n;
f=0;
for k=1:n-1
x=a+h*k;
f=f+eval(funcion);
end
f=2*f;
x=a; f=f+eval(funcion); x=b; f=f+eval(funcion);
f=(h/2)*(f);
fprintf('El valor aproximado es: %10.15f\n\n',f)
case 3
clc; clear;
fprintf('\t\tFORMULA DE SIMPSON SIMPLE\n')
funcion=input('ingrese la funcion \n f(x)=','s');
b=input('ingrese el limite superior de la funcion\n');
a=input('ingrese el limite inferior de la integral\n');
h=(b-a)/2;
x=a; f=eval(funcion); x=b; f=f+eval(funcion);
x=a+h; f=f+ 4*(eval(funcion));
f=(h/3)*f;
fprintf('El valor aproximado de la integral es: %10.15f\n\n',f)
case 4
clc; clear;
fprintf('\t\tFORMULA DE LOS TRES OCTAVOS DE SIMPSON\n')
funcion=input('ingrese la funcion \n f(x)=','s');
b=input('ingrese el limite superior de la funcion\n');
a=input('ingrese el limite inferior de la integral\n');
28
[MTODOS NUMRICOS]
h=(b-a)/3;
x=a;
f=eval(funcion);x=a+h; f=f+3*(eval(funcion));
x=a+2*h; f=f+3*(eval(funcion)); x=b;
f=f+eval(funcion);
f=(3*h/8)*f;
fprintf('El valor aproximado de la integral es: %10.15f\n\n',f)
case 5
clc; clear;
fprintf('\t\tFORMULA DE SIMPSON COMPUESTO\n')
funcion=input('ingrese la funcion \n f(x)=','s');
b=input('ingrese el limite superior de la integral\n');
a=input('ingrese el limite inferior de la integral\n');
n=input('ingrese el numero de intervalos');
h=(b-a)/(2*n);
f=0;
for k=1:n-1
x=a+h*(2*k);
f=f+eval(funcion);
end
f1=0;
for k=1:n
x=a+h*(2*k-1);
f1=f1+eval(funcion);
end
f=2*f+4*f1;
x=a; f=f+eval(funcion); x=b; f=f+eval(funcion);
f=(h/3)*f;
fprintf('el valor aproximado de la integral es: %10.15f\n\n',f)
case 6
clc; clear;
fprintf('\t\tINTEGRACION DE ROMBERG\n')
funcion=input('ingrese la funcion \n f(x)=','s');
b= input('ingrese el lmite superior de la integral \n');
a= input('ingrese el lmite inferior de la integral \n');
n= input('ingrese el nmero de intervalos\n');
h=(b-a);
M=1;
J=0;
R=zeros(n,n);
x=a;
f1=eval(funcion);
x=b;
f2=eval(funcion);
R(1,1)=h*(f1+f2)/2;
while (J<(n-1))
J=J+1;
h=h/2;
s=0;
for p=1:M
x=a+h*(2*p-1);
f3=eval(funcion);
s=s+f3;
end
R(J+1,1)=(1/2)*(R(J,1))+h*s;
M=2*M;
for k =1:J
29
[MTODOS NUMRICOS]
R(J+1,k+1)=R(J+1,k)+(R(J+1,k)-R(J,k))/(4^k-1);
end
end
R
fprintf('La aproximacion buscada es: %10.15f\n\n', R(J+1,J+1))
case 7
clc; clear;
fprintf('\t\tINTEGRACION DE ROMBERG\n')
funcion=input('ingrese la funcion \n f(x)=','s');
b=input('Ingrese el limite superior:\n');
a=input('Ingrese el limite inferior:\n');
n=input('Ingrese el numero de particiones:\n');
tol=input('Ingrese la tolerancia:\n');
M=1;
h=b-a;
err=1;
J=0;
R=zeros(4,4);
x=a;
f_a=eval(funcion);
x=b;
f_b=eval(funcion);
R(1,1)=h*(f_a+f_b)/2;
disp(' quad err h')
while((err>tol)&(J<n))|(J<4)
J=J+1;
h=h/2;
s=0;
for p=1:M
x1=a+h*(2*p-1);
x=x1;
f_x1=eval(funcion);
s=s+f_x1;
end
R(J+1,1)=R(J,1)/2+h*s;
M=2*M;
for K=1:J
R(J+1,K+1)=R(J+1,K)+(R(J+1,K)-R(J,K))/(4^K-1);
end
err=abs(R(J,J)-R(J+1,K+1));
fprintf('%10.9f %10.9f %10.9f\n',R(J+1,J+1),err,h)
end
disp('LA MATRIZ TRIANGULAR INFERIOR ES:')
disp(R)
disp('El error es para el numero de particiones:')
disp(err)
disp('El tamao de la ultima particion es:')
disp(h)
disp('La respuesta es:')
disp(R(J+1,J+1))
otherwise
clc
fprintf('\n\t::::::::::::::::::METODOS NUMERICOS:::::::::::\n');
fprintf('\t:::::::::::::::::::::12/2014:::::::::::::::::::::\n');
fprintf('\n :::::::::::::::::::::::GRACIAS::::::::::::::::::::::\n');
break
end
30
[MTODOS NUMRICOS]
end
Ejemplo:
1. Trapecio simple
2. Simpson simple
31
[MTODOS NUMRICOS]
2. Mtodo Romberg
Objetivo:
etacin geomtrica de la integral defnida, calcular numricamente, las aproximaciones de algunas integrales
function romberg
32
[MTODOS NUMRICOS]
global fun
fun=input('ingrese la funcion\n','s');
b=input('ingrese el limite superior de la integral\n');
a=input('ingrese el limite inferior de la integral\n');
n=input('ingrese el numero de intervalos\n');
h=(b-a);
M=1;
J=0;
R=zeros(n,n);
x=a;
f1=eval(fun);
x=b;
f2=eval(fun);
R(1,1)=h*(f1+f2)/2;
while(J<(n-1))
J=J+1;
h=h/2;
s=0
for p=1:M
x=a+h*(2*p-1);
f3=eval(fun)
s=s+f3;
end
R(J+1,1)=(1/2)*(R(J,1))+h*s;
M=2*M
for k=1:J
R(J+1,k+1)=R(J+1,k)+(R(J+1,k)-R(J,k))/(4^k-1)
end
end
i=R(J+1,J+1)
Ejemplo:
33
[MTODOS NUMRICOS]
Derivacin numrica
1. Mtodo de Euler
Objetivo:
Variables de entrada: y
Variables de salida: yo
Variables auxiliares: h,b,x0,xf.yo
Uso del programa:
Programa:
34
[MTODOS NUMRICOS]
function [ yo ] = euler( y )
%
programa realizado por Julio Echeverri
%esta funcion recibe derivada simbolica en terminos de
%la variabe X para calcular numericamente su integral
%esta no es una derivada cualquiera es un problema de valor inicial
%si quiere probar el programa, puede dar una concidion inicial de
% Y(xo)=0 y comparar con el resultado que entregaria un calculadora
normal
%el numero de puntos N varia, dependiendo la precisin deseada.
xo=input('Ingrese el limite inferior del intervalo: ');
xf=input('Ingrese el limite superior del intervalo: ');
yo=input(sprintf('Ingrese el valor inicial de y(%.2f): ',xo));
n=input('Ingrese el numero de puntos: ');
h=(xf-xo)/n;
while xo<=xf
yo=yo+h*subs(y,xo);
xo=xo+h;
end
end
Ejemplo:
35