LOS SIGUIENTES TRABAJOS HAN SIDO DESARROLADOS PARA EL CURSO DE
          ANALISIS NUMERICO  Y  HAN SIDO ELABORADOS EN EL PROGRAMA DE:
                                                              MATLAB  


 Los programas que siguen a continuación, han sido hechos para el programa MATLAB por los alumnos: Sugerencias:
Se recomienda para un mejor uso, copiar al editor del matlab y grabar como: nombre_del_archivo.m y quitar las
negritas al texto. Tener en cuenta que hay archivos function y script, que estan a continuación mesclados. Las lineas horizontales separan a un programa de otro. Copiar tambien las SUB RUTINASindicadas en cada programa en el mismo directorio o archivo para que se puedan ejecutar. Los letras en azul indican el nombre del programa.
Tambien puedes ver algunas APLICACIONES hechas con los programas, tales como sacar derivadas, promedios, etc.....................


BISEC2.M
function bisec2(xl,xu,es,maxit)
% Este programa sirve para calcular raices por el metodo de biseccion.
% Sugerencia, dar xl:0, xu:1.3, es:0.001, maxit:5
%%%%%%%%%%%%%%%%%%%%
clc
iter=0;
ea=1.1.*es;
vv=1;
while ((ea>es)&(iter<maxit));
     xr=(xl+xu)/2;
     iter=iter+1;
     if ~(xl+xu==0)
        ea=abs((xu-xl)/(xu+xl))*100;
        et=abs(vv-xr/vv).*100;
     end
   fprintf('%3.0f \t %4.6f \t %4.6f \t %4.6f \t %4.6f \t %4.6f\n',iter,xl,xu,xr,ea,et);
     test=f(xl).*f(xr);
     if test==0;
        ea=0;
     else
         if test<0
             xu=xr;
         else
             xl=xr;
         end
      end
end
disp('-------------------------------------------------------------')
fprintf(' El resultado es :%4.6f\n',xr);
disp('-------------------------------------------------------------')


FALSAP.M
function falsap(xl,xu,es,maxit)
% ESTE PROGRAMA SIRVE PARA HALLAR LAS RAICES O CEROS DE UNA ECUACION
% POR MEDIO DEL "METODO DE FALSA POCISION"
%    xl=estimado inferior
%    xu=estimado superior
%    es=minimo error aceptable o tolerancia
%    xr=raiz o cero
%    maxit=maximo de iteraciones
%%%%%%%%%%%%%%%%%%%%%%%
clc
iter=0;
ea=1.1*es;
disp('          METODO DE FALSA POSICION    ');
disp('****************************************************************************** ');
disp('iter       xl           xu          xr                ea             et   ');
disp('*******************************************************************************');
while ((ea>es)&(iter<maxit));
        xr=xu-f(xu).*(xl-xu)/(f(xl)-f(xu));
        iter=iter+1;
        vv=1;
        et=abs((vv-xr/vv))*100;
        if~((xl+xu)==0)
           ea=abs((xr-xl)/xr)*100;
        end
fprintf('%3.0f     %4.5f     %4.5f\t %4.5f\t %4.5f\t %4.5f\t\n',iter,xl,xu,xr,ea,et);
        test=f(xl)*f(xr);
        if test==0
           ea=0;
        else
           if test<0
             xu=xr;
           else
               xl=xr;
           end
        end
end
disp('******************************************************  ');
fprintf(' EL RESULTADO FINAL ES =%4.5f\n',xr);
disp('******************************************************');


SECAN.M
function secan(i,tole,miter,j,k)
% Este programa sirve para determinar las raices de x=g(x)
% por el metodo de la secante
% pi=punto inicial
% tole=es la tolerancia
% miter= es le numero maximo de iteraciones
%    probar con secan(0,0.05,10,'funp1','funp2')
%%%%%%%%%%%%%%%%%%%%
clc
iter=1;
errora=1.1.*tole;
x(1)=pi;
while ((errora>tole)&(iter<miter))
      fprintf('\n %3.0f \t %2.10f \t %2.10f\n',iter,x(iter))
      iter=iter+1;
      et=(x(1)-pi/x(1))*100;
      x(iter)=x(iter-1)-feval(j,x(iter-1))/feval(k,x(iter-1));
       if x(iter) ~= 0
         errora=abs(x(iter)-x(iter-1)/x(iter)).*100;
       end
end


PROG32.M
function prog32(x,y,orden)
% Programa que ajusta un polinomio de orden n, usando regresion polinomial de minimos cuadrados y
% grafica dicho ajuste.
%%%%%%%%%%%%%%%%%%%%%%
clc
n=length(x);
min=x(1);
max=x(1);
for i=2:n
    if min > x(i)
       min=x(i);
    end
    if max < x(i)
       max=x(i);
    end
end
for i=1:orden+1
    for j=1:i
 k=i+j-2;
 sum=0;
 for l=1:n
     sum=sum+(x(l)^k);
 end
 a(i,j)=sum;
 a(j,i)=sum;
    end
    sum=0;
    for l=1:n
 sum = sum + y(l).*(x(l)^(i-1));
    end
    a(i,orden+2)=sum;
end
[m,n]=size(a);
A=a(1:m,1:m);
b=a(1:m,m+1:n);
a=prog14(A,b)
hold on
plot(x,y,'g*')
x=min:0.1:max;
y=a(1)+a(2).*x+a(3).*(x.^2);
plot(x,y,'b')
grid
hold off


PROG33.M
function prog33(y,x1,x2,orden)
% Programa que ajusta una curva, usando regresión lineal multiple y grafica dicho ajuste
%%%%%%%%%%%%%%%%%%
clc
n=length(x1);
x0=diag(eye(n));
x=[x0';x1;x2];
for i=1:orden+1
    for j=1:i
 sum=0;
 for l=1:n
     sum=sum+x(i,l).*x(j,l);
 end
 a(i,j)=sum;
 a(j,i)=sum;
    end
    sum=0;
    for l=1:n
 sum=sum+y(l).*x(i,l);
    end
    a(i,orden+2)=sum;
end
[m,n]=size(a);
A=a(1:m,1:m);
b=a(1:m,m+1:n);
a=prog14(A,b)
hold on
plot3(x1,x2,y,'g.')
y1=a(1)+a(2)*x1+a(3)*x2;
plot3(x1,x2,y1,'b')
hold off


P_INTLAG.M
function p_intlag(x,n,x1)
% Programa que ajusta una curva, usando polinomio de interpolación de LAGRANGE.
% Definición de Variables:
%    x = variable independiente (vector)
%    f = variable dependiente (vector)
%   x1 = valor de x para interpolación
%    n = grado del polinomio
%    m = número de datos
% Sub-rutina que utiliza PROG35:
%    func2 = función: ln(x)
% Se recomienda usar:
%    x = [1 4 6]
%%%%%%%%%%%%%%%%%%%%%
clc
m=length(x);
for i=1:m
    f(i)=feval('func2',x(i));
end
y=0;
for i=1:n
    producto=f(i);
    for j=1:n
 if (i ~= j)
           producto=producto*(x1-x(j))/(x(i)-x(j));
 end
    end
    y = y + producto;
end


P_INTNEW.M
function fdd=p_intnew(x,x1)
% Programa que ajusta una curva, usando polinomio de interpolación de diferencias finitas divididas de Newton.
% Definición de Variables:
%    x = variable independiente (vector)
%    f = variable dependiente (vector)
%  fdd = diferencia finita dividida (matris)
%   x1 = valor de x para interpolación
%    n = número de datos
% Sub-rutina que utiliza PROG35:
%    func2 = función: ln(x)
% prog341 = calcula el fdd
% Se recomienda usar:
%    x = [1 4 6 5]
%%%%%%%%%%%%%%%%%%%%
clc
vv=feval('func2',x1);
n=length(x);
for i=1:n
    f(i)=feval('func2',x(i));
end
fdd=p_difd(x,f,n);
xterm=1;
fa(1)=fdd(1,1);
for i=1:n-1
    xterm=xterm*(x1-x(i));
    fa2=fa(i)+fdd(1,i+1)*xterm;
    et(i)=fa2-fa(i);
    fa(i+1)=fa2;
end
fa
plot(x,f,'g')
hold on
plot(x,fa,'b')
hold off


PIVOT.M
function pivot(A,b)
% ESTE PROGRAMA SIRVE PARA CALCULAR LAS RAICES DE UN
% SISTEMA DE ECUACIONES (CON PIVOTEO)
%  A = matriz de coeficientes del sistema
%  b = vector columna
%%%%%%%%%%%%%%%%%%%%%
pivot=k;
big=abs(a(k,k));
for ii=k+1:m
    dummy=abs(a(ii,k));
    if (dummy>big)
        big=dummy;
        pivot=ii;
    end
end
if pivot ~= k
   for jj=1:m
       dummy=a(pivot,jj);
       a(pivot,jj)=a(k,jj);
       a(k,jj)=dummy;
   end
   dummy=c(pivot);
   c(pivot)=c(k);
   c(k)=dummy;
end


PROG14.M
function prog14(A,b)
% Este es un programa que sirve para calcular las raices de un sistema de
% ecuaciones Ax = b , por el método de Eliminación  Gaussiana
% Se recomienda usar con la matriz:
%                A=[3,-0.1,-0.2;0.1,7,-0.3;0.3,-0.2,10]
%                b=[7.85,-19.3,71.4]'
%%%%%%%%%%%%%%%%%%%%%%%%%
clc
[m n]=size(A);
disp('   ');
disp(' "ELIMINACION GAUSIANA" para: Ax=b')
disp('___________________________________')
disp('  ')
for k=1:n-1
    for i=k+1:n
        factor=A(i,k)/A(k,k);
        for j=k+1:n
   A(i,j)=A(i,j)-factor.*A(k,j);
        end
        b(i)=b(i)-factor.*b(k);
    end
end
x(n)=b(n)/A(n,n);
for i=n-1:-1:1
    sum=0;
    for j=i+1:n
        sum=sum+A(i,j)*x(j);
    end
    x(i)=(b(i)-sum)/A(i,i);
end
for i=1:n
    fprintf('X(%d) = %2.7f\n',i,x(i))
end


PROG15.M
function prog15(A,b)
% Este es un programa que sirve para calcular las raices de un sistema de
% ecuaciones Ax = b , por el método de Eliminación Gauss con pivoteo
% Se recomienda usar con la matriz:
%                   A=[3,-0.1,-0.2;0.1,7,-0.3;0.3,-0.2,10]
%                   b=[7.85,-19.3,71.4]'
%%%%%%%%%%%%%%%%%%%
clc
[m n]=size(A);
disp('   ');
disp(' "ELIMINACION CON PIVOTEO" para: Ax=b')
disp(' ____________________________________')
disp('  ')
for k=1:n-1
    for i=k+1:n
        pivot
        factor=A(i,k)/A(k,k);
        for j=k+1:n
   A(i,j)=A(i,j)-factor.*A(k,j);
        end
        b(i)=b(i)-factor.*b(k);
    end
end
x(m)=b(m)/A(m,m);
for i=n-1:-1:1
    sum=0;
    for j=i+1:m
        sum=sum+A(i,j)*x(j);
    end
    x(i)=(b(i)-sum)/A(i,i);
end
for i=1:m
    fprintf('X(%d) = %2.7f\n',i,x(i))
end


PROG16.M
function prog16(A,c)
% Definición de varialbles :
%    A = matriz de coeficientes del sistema
%    c = vector columna de segundo miembro
%    x = vector columna de incognitas
%    m = numero de ecuaciones
%  ord = vector de ordenamiento
%    S =  vector de escalamiento
% Este es un programa que sirve para calcular las raices de un sistema de
% ecuaciones Ax = b , con pivoteo o sin pivoteo
% Se recomienda usar con la matriz:
%                   A=[3,-0.1,-0.2;0.1,7,-0.3;0.3,-0.2,10]
%                   c=[7.85,-19.3,71.4]'
%%%%%%%%%%%%%%%%%%%%%%%
clc
[m,n]=size(A);
for i=1:m
    ord(i)=i;
end

s=prog161(ord,A,m);
[A,c]=prog162(s,c,A,ord,m);
x=prog163(c,A,ord,m);
disp('Resultado de la Ecuación Ax = b')
disp('_______________________________')
disp('  ')
for i=1:n
    fprintf('X(%d) = %2.7f\n',i,x(i))
end



PROG17.M
function prog17(A,b)
% Definición de variables :
%    A = matriz de coeficientes del sistema
%    b = vector columna de segundo miembro
%    x = vector columna de incognitas
%    m = numero de ecuaciones
% Este es un programa que sirve para calcular las raices de un sistema de
% ecuaciones Ax = b , por eliminación Gauss-Jordan sin pivoteo
% Se recomienda usar con la matriz:
%                   A=[3,-0.1,-0.2;0.1,7,-0.3;0.3,-0.2,10]
%                   b=[7.85,-19.3,71.4]'
%%%%%%%%%%%%%%%%%
clc
a=[A,b];
[m n]=size(a);
for k=1:m
    dummy = a(k,k);
    for j=1:n
 a(k,j)=a(k,j)/dummy;
    end
    for i=1:m
 if i ~= k
    dummy = a(i,k);
    for j=1:n
        a(i,j)=a(i,j)-dummy.*a(k,j);
    end
 end
    end
end
disp('                   Eliminación Gauss-Jordan')
disp('                  ___________________________')
disp('  ')
disp('Resultado de la Ecuación Ax=b')
disp('_____________________________')
disp('  ')
for i=1:m
    fprintf('X(%d) = %2.7f\n',i,a(i,n))
end


PROG18.M
function prog18(A,b)
% Este es un programa que sirve para calcular las raices de un sistema de
% ecuaciones Ax = b , por elimanación Gauss-Jordan con pivoteo
% Se recomienda usar con las matrices anteriores.
%%%%%%%%%%%%%%
clc
a=[A,b];
[m n]=size(a);
for k=1:m
    pivot
    dummy = a(k,k);
    for j=1:n
 a(k,j)=a(k,j)/dummy;
    end
    for i=1:m
 if i ~= k
    dummy = a(i,k);
    for j=1:n
        a(i,j)=a(i,j)-dummy.*a(k,j);
    end
 end
    end
end
disp('             Eliminación Gauss-Jordan con pivoteo')
disp('            ______________________________________')
disp('  ')
disp('Resultado de la Ecuación Ax=b')
disp('_____________________________')
disp('  ')
for i=1:m
    fprintf('X(%d) = %2.7f\n',i,a(i,n))
end

Si deseas ver mas programas pincha aqui, ok


                        Ir al principio                                                                        Volver a la pagina principal