Professional Documents
Culture Documents
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
2. Metodo de Regula-falsi
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;
else
x0=x;
end
end
raiz=x;
else
raiz='no hay cambio de signo';
end
Ejemplo
Metodos abiertos
3. Metodo de Newton- Raphson
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
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
Newton-Raphson
error = abs((X1-Xn)/X1);
%calculo del
error
Xn=X1; %asignacin del nuevo valor de Xn para la
siguiente iteracin
end
end
4. Mtodo de la
secante
%Implementacin del mtodo de la secante en Matlab
%
function [Xa] = Secante ()
syms x
y = input('Ingrese la funcin: ');
% espacio opcional en el uqe hacemos una previsualizacin
sup = input('Ingrese el lmite superior para ver la
grfica: ');
infe = input('Ingrese el limite inferior para la
visualizacin: ');
t = linspace(infe,sup,700);
plot(t,subs(y,t))
grid on
clc
%continuamos con el mtodo y pedimos dos valores iniciales,
para Xo y X1
Xo=input('Ingrese un valor para Xo: ');
X1=input('Ingrese un valor para X1: ');
%definimos las variables necesarias
error = 100; %valor arbitrario
tolerancia=0.00001; %valor arbitrario que puede ser
modificado o pedido al usuario
while error>tolerancia %condicin para continuar el ciclo
el error debe ser minimo
Xa=X1-(( subs(y,X1)*(Xo-X1) )/( subs(y,Xo)subs(y,X1) )); %Xa representa la varible Xn+1
error = abs((Xa-X1)/Xa);
%el error siempre va en
valor absoluto
%reasignamos los valores de las variables para
continuar iterando
Xo = X1;
X1 = Xa;
end
end
Sistemas lineales
1. Mtodo de Cramer
%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';
2. Sustitucin Regresiva
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
3. Mtodo de Gauss
4. Factorizacin triangular
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
err=abs(norm(X'-P));
relerr=err/(norm(X)+eps);
P=X';
if (err<delta)|(relerr<delta)
break
end
end
X=X'
end
6. Metada de Gauss-Seidel
if j==1
X(1)=(B(1)-A(1,2:N)*P(2:N))/A(1,1);
elseif j==N
X(N)=(B(N)-A(N,1:N-1)*(X(1:N-1))')/A(N,N);
else
X(j)=(B(j)-A(j,1:j-1)*X(1:j-1)A(j,j+1:N)*P(j+1:N))/A(j,j);
end
end
err=abs(norm(X'-P));
relerr=err/(norm(X)+eps);
P=X';
if(err<delta)|(relerr<delta)
break
end
end
X=X';
Sistemas no Lineales
2. Polinomio interpolador
de Newton
function [ C,D ] = newpoly( X,Y )
%Datos
% - X es un vector con la lista de las abscisas
Ajuste de Curvas
1. Recta de regresin
% Datos
%
- X es el vector de orden 1 x n de las abscisas
%
- y es el vector de orden 1 x n de las ordenadas
%
- 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
Por ejemplo
F(x)=1.44/(X^2-0.24x)
P2(x) = 22.93-16.96x+2.553x^2
P3(x) =33.04-46.51x+19.51x^2-2.296x^3
P4(x) =39.02-80.93x+58.39x^217.5x^3+1.680X^4
Xk
0,25
1
1,5
2
2,4
5
Yk
23,1
1,68
1
0,84
0,826
1,2576
P5(x)=46.02-118.1x+119.4x^2-57.51x^3+13.03x^4-1.085x^5