- •3.1.5 Instrumentación computacional del método de la bisección
- •3.3.7 Instrumentación computacional del método de Newton
- •3.5.5 Instrumentación computacional del método de Newton para un sistema de n
- •4.2.5 Instrumentación computacional del método de Gauss-Jordan
- •4.3.4 Instrumentación computacional de método de Gauss
- •4.3.7 Instrumentación computacional del método de Gauss con pivoteo
- •4.3.10 Instrumentación computacional para calcular el determinante
- •4.5.2 Instrumentación computacional para sistemas singulares
- •6.3.1 Instrumentación computacional del método de Lagange con dos variables
- •6.10.3 Instrumentación computacional del trazador cúbico natural
- •6.10.6 Instrumentación computacional del trazador cúbico sujeto
- •9.2.4 Instrumentación computacional de la fórmula de Runge-Kutta para dos edo de
- •9.6.3 Instrumentación computacional del método de diferencias finitas para una e. D. O.
- •9.6.5 Instrumentación computacional del método de diferencias finitas con derivadas
- •10.2.3 Instrumentación computacional del método de diferencias finitas para una e.D.P.
- •10.2.5 Instrumentación computacional del método implícito para una e.D.P. De tipo
- •10.2.8 Instrumentación computacional para una e.D.P. Con derivadas en los bordes
- •10.3.2 Instrumentación computacional para una e.D.P. De tipo elíptico
- •10.4.2 Instrumentación computacional para una e.D.P. De tipo hiperbólico
4.3.10 Instrumentación computacional para calcular el determinante
function d=determinante(a)
%Determinante de una matriz cuadrada
%Mediante reducción a una matriz triangular
%El determinante es el producto de los pivotes
[n,m]=size(a);
if n~=m %La matriz debe ser cuadrada
d=0;
return
end
signo=1; %cambios de fila
d=1;
for e=1:n
[z, p]=max(abs(a(e:n,e))); %Pivoteo por filas
p=p+e-1;
t=a(e,e:n); %Intercambio de filas
a(e,e:n)=a(p,e:n);
a(p,e:n)=t;
if e~=p %Cambio de fila = cambio de signo
signo=signo*(-1);
end
if abs(a(e,e))<1.0e-10 %Divisor cercano a 0: matriz singular
d=0;
return;
end
d=d*a(e,e); %Multiplicación de pivotes
a(e,e:n)=a(e,e:n)/a(e,e); %Normalizar la fila e
for i=e+1:n %Reducir otras filas
a(i,e:n)=a(i,e:n)-a(i,e)*a(e,e:n);
end
end
d=d*signo;
4.5.2 Instrumentación computacional para sistemas singulares
function [x,a]=slin(a,b)
[n,m]=size(a);
z=max(max(a));
v=[n+1:m]; %Vector inicial de variables libres
a(1:n,m+1)=b; %Matriz aumentada
if n>m %Mas ecuaciones que variables
x=[ ];
a=[ ];
return;
end
a=a/z; %Estandarizar la matriz para reducir error
for e=1:n %Ciclo para n etapas
[z,p]=max(abs(a(e:n,e))); %Pivoteo por filas
p=p+e-1;
t=a(e,e:m+1); %Cambiar filas
a(e,e:m+1)=a(p,e:m+1);
a(p,e:m+1)=t;
if abs(a(e,e))<1.0e-10 %Sistema singular
v=[v, e]; %Agregar variable libre y continuar
else
a(e,e:m+1)=a(e,e:m+1)/a(e,e); %Normalizar la fila e
for i=1:n %Reducir otras filas
if i~=e
a(i,e:m+1)=a(i,e:m+1)-a(i,e)*a(e,e:m+1);
end
end
end
end
x=[ ];
if length(v)==0; %Sistema consistente. Solución única
x=a(1:n,m+1); %El vector X es la última columna de A
a(:,m+1)=[ ]; %Eliminar la última columna de A
return;
end
4.6.2 Instrumentación computacional del Método de Thomas
function x = tridiagonal(a, b, c, d)
n = length(d);
w(1) = b(1);
g(1) = d(1)/w(1);
for i = 2:n %Transformación matricial
w(i) = b(i) - a(i)*c(i-1)/w(i-1);
g(i) = (d(i) - a(i)*g(i-1))/w(i);
end
x(n) = g(n);
for i = n-1:-1:1 %Obtención de la solución
x(i) = g(i) - c(i)*x(i+1)/w(i);
end
5.1.2 Manejo computacional de la fórmula de Jacobi
function x = jacobi(a,b,x)
n=length(x);
t=x; % t es asignado con el vector X ingresado
for i=1:n
s=a(i,1:i-1)*t(1:i-1)+a(i,i+1:n)*t(i+1:n);
x(i) = (b(i) - s)/a(i,i);
end
5.1.4 Instrumentación computacional del método de Jacobi
function [x,k] = jacobim(a,b,x,e,m)
n=length(x);
for k=1:m
t=x;
for i=1:n
s=a(i,1:i-1)*t(1:i-1)+a(i,i+1:n)*t(i+1:n);
x(i) = (b(i) - s)/a(i,i);
end
if norm((x-t),inf)<e
return
end
end
x=[ ];
k=m;
5.2.2 Manejo computacional de la fórmula de Gauss-Seidel
function x = gaussseidel(a,b,x)
n=length(x);
for i=1:n
s=a(i,1:i-1)*x(1:i-1)+a(i,i+1:n)*x(i+1:n); %Usa el vector x actualizado
x(i) = (b(i) - s)/a(i,i);
end
5.2.3 Instrumentación computacional del método de Gauss-Seidel
function [x,k] = gaussseidelm(a,b,x,e,m)
n=length(x);
for k=1:m
t=x;
for i=1:n
s=a(i,1:i-1)*x(1:i-1)+a(i,i+1:n)*x(i+1:n);
x(i) = (b(i) - s)/a(i,i);
end
if norm((x-t),inf)<e
return
end
end
x=[ ];
k=m;
5.3.2 Manejo computacional de la fórmula de relajación
function x = relajacion(a,b,x,w)
n=length(x);
for i=1:n
s=a(i,1:n)*x(1:n); %Usa el vector x actualizado
x(i)=x(i)+w*(b(i)-s)/a(i,i);
end
5.7 Instrumentación del método de Jacobi con el radio espectral
function [x,k]=jacobie(a,b,e)
d=diag(diag(a));
l=tril(a)-d;
u=triu(a)-d;
T=-inv(d)*(l+u); %Matriz de transición
v=eig(T);
r=max(abs(v)); %Radio espectral
if r>=1
x=[ ];
k=r;
return;
end
x=[1; 1; 1];
for i=1:1000000000
xn=inv(d)*b-inv(d)*(l+u)*x;
if norm(x-xn,inf)<e
k=i;
return;
end
x=xn;
end
6.2.3 Instrumentación computacional del método de Lagrange
function p = lagrange(x, f, v)
n=length(x);
if nargin==2
syms t; %variable para construir el polinomio
else
t=v; %evaluar el polinomio con el valor dado
end
p=0;
for i=1:n
L=1;
for j=1:n
if i ~= j
L=L*(t-x(j))/(x(i)-x(j));
end
end
p=p+L*f(i); %entrega p(t) simbólico o el valor el valor interpolado
end
if nargin==2
p=expand(p); %simplificación algebraica (expandir factores)
end
