CODIGOS METODOS NUMERICOS PARA MATLAB
disp('METODO DE BISECCION');
disp('-------------------');
f=input('INGREESE FUNCION: ','s');
xai=input('INGRESE LIMITE INFERIOR DEL INTERVALO:');
xbi=input('INGRESE LIMITE SUPERIOR DEL INTERVALO:');
tol=input('INGRESE PORCENTAJE DE ERROR:');
f=inline(f);
i=1;
ea(1)=100;
if f(xai)*f(xbi)<0
xa(1)=xai;
xb(1)=xbi;
xr(1)=(xa(1)+xb(1))/2;
fprintf('It. Xa Xr Xb Error aprox \n');
fprintf('%2d\t %11.7f \t %11.7f \t %11.7f \n',i,xa(i),xr(i),xb(i));
while abs(ea(i)) >= tol,
if f(xa(i))*f(xr(i))<0
xa(i+1)=xa(i);
xb(i+1)=xr(i);
end
if f(xa(i))*f(xr(i))>0
xa(i+1)=xr(i);
xb(i+1)=xb(i);
end
xr(i+1)=(xa(i+1)+xb(i+1))/2;
ea(i+1)=abs((xr(i+1)-xr(i))/(xr(i+1))*100);
fprintf('%2d \t %11.7f \t %11.7f \t %11.7f \t %7.3f \n',...
i+1,xa(i+1),xr(i+1),xb(i+1),ea(i+1));
i=i+1;
end
else
fprintf('NO EXISTEUNA RAIZ EN ESTE INTERVALO');
end
Algoritmo del metodo de Biseccion.
1- Iniciar programa.
2-Introducir la funcion (polinomio).
3-Introducir limite inferior.
4- Introducir limite Superior.
5- Introducir porcentaje de error.
6- El programa multiplica los limites y espera que sean menores a cero.
7- El programa calcula la primera aproximacion de la raiz.
8- Se determina en que sub-intervalose encuentra la raiz.
9- Si el producto de los limites es menor que cero volver al paso 7.
10- Si el producto de los limites es mayor que cero volver al paso 3.
11- Si el producto de los limites es igual a cero la raiz se a encontrado.
12- Imprimir resultados.
13-Fin.
newton-raphson
disp('Newton-Raphson');
disp('--------------');
a=input('Introduzca el valor de la funcion');%xd=input('Introduzca la derivada de la funcion','s');
xi=input('Introduzca el valor de xi:');
Es=input('Introduzca el valor del error limite:');
syms x
sd=diff(a);
derivada =inline(xd);
formula=inline(a);
Ea(1)=100;
i=1;
fxi=feval(formula,xi);
fds1=fedal(derivada,x1);
xi1-xi-(fxi/fdxi);
fprintd('it xi Funcion de xi Derivada de xi Error aproximado\n');
fprintf('%2d\t %11.7f\t %11.7f\t %11.7f\t%11.7f\n',i,xi,fxi,fdxi,Ea);
xi=xi1;
i=i+1;
while (Ea>Es)
fxi=feval(formula,xi);
fdx1=feval(derivada,x1);
xi1=xi-(fxi/fdxi);
Ea=abs(((xi1-xi)/xi1)*100);
fprintf('%2d\t %11.7f\t %11.7f\t %11.7f\t %11.7f\n',i,xi,fxi,fdxi,Ea);
xi=xi1;
i=i+1;
end
1- Iniciar.
2- Introducir la funcion, ecuacion o polinomio.
3- Introducir la derivada de la funcion.
4- Introducir el valor de X0.
5-introducir el error limite.
6-Analizar si el error aprox. es mayor que el error limite.
7- Calcular raiz mejorada.
8- Calcular error aprox.
9- Si el error aprox. es mayor regresar al paso 6, sino continuar.
10- Imprimir resultados.
11- Fin.
punto fijjo
%programa que calcula una raiz de una funcion mediante el metodo punto fijo
clear
disp('ingrese la funcion');
g=input('puede ser cualquier literal');
r=input('ingrese suposicioninicial del punto');
alto=0;
while alto==0
disp('selecciona 1 para el criterio de error relativo entre aproximaciones o 2 para seleccionar por un numero');
s=input('no. de iteraciones');
switch s
case 1
epsilon=input('ingresa maximo error relativo:');
alto=1;
case 2
maxit=input('ingresa maximo numero de iteraciones');
alto=1;
otherwise
disp('opcion no valida, selecciona 1 o 2');
end
end
it=1;alto=0;
while alto==0
gr=subs(g,r);
err=abs((gr-r)/(gr));
if s==1
if epsilon >=err
alto=1;
end
end
if s==2
if maxit<=it
alto=1;
end
end
disp(' iteracion no. num2str(it)');
disp('la aprocimacion es num2str(gr)');
disp('el error relativo es num2(err)');
r=gr;
it=it+1;
end
GAUSS.JORDAN
clear
a=input('INGRESE LA MATRIZ AUMENTADA a=');
%a=[1 -1 2 -1 -8; 2 -2 3 -3 -20; 1 1 1 0 -2; 1 -1 4 3 4];
%PASO 1[n,m]=size(a);
bol=0;
%PASO 2 Haga pasos 3-5
for i=1:n-1
for p=i:n
if a(p,i)~=0
break;
end
end
if p==n
disp('EL SISTEMA TIENE INFINITAS SOLUCIONES O NO EXISTE SOLUCION');
bol=1;
break;
end
%PASO 4 intercambio de filas
if p~=i
disp('pivoteando')
aux=a(i,:);
a(i,:)=a(p,:);
a(p,:)=aux;
end
%PASO 5 Haga los pasos 6-7
for j=i+1:n
%PASO 6
m(j,i)=a(j,i)/a(i,i);
%PASO 7...
Regístrate para leer el documento completo.