jueves, 3 de noviembre de 2011
martes, 1 de noviembre de 2011
jueves, 20 de octubre de 2011
newto divididas
function newton(x,b,xk)
n=length(xk);
for i=1:n
f(i,1)=b(i);
end
for j=2:n
k=j-1;
for i=1:n+1-j
f(i,j)=(f(i+1,k)-f(i,k))/(a(i+j-1)-a(i));
end
end
prod=1;
sum=0;
for j=1:n
sum=sum+f(1,j)*prod;
prod=prod*(xk-x(j));
end
fprintf('\n x F[]\n');
fprintf('=============');
for j=1:n
fprintf('=============');
end
fprintf('\n');
for i=1:n
fprintf('%10.6f',x(i));
for j=1:n+1-i
fprintf('%10.6f',f(i,j));
end
end
P=sum;
disp('EL RESULTADO DE LA INTERPOLACION ES:');
disp(P);
newton infinitas
function infinitas(x,y,xb)
m(:,1)=x;
m(:,2)=y;
c=0;
r=zeros(length(x)-1,length(x)+1);
for i=3:length(x)+1
c=c+1;
for j=1:length(y)-c
m(j,i)=y(j+1)-y(j);
end
y=m(:,i);
end
p(1)=1;
p1(1)=1;
c=length(x);
for i=1:length(x)-1
for j=1:i
p1(2)=-x(j);
p=conv(p,p1);
end
k=1;
in=c;
ind2=1;
while k<=length(p);
r(i,in)=p(ind2);
k=k+1;
in=in+1;
ind2=ind2+1;
end
c=c-1;
p=ones(1);
end
h=x(2)-x(1);
disp(m);
ind=1;
for i=1:length(x)+1
for j=3:length(x)+1
r(ind,i)=r(ind,i)*(m(1,j)/(fact(ind)*(h^ind)));
ind=ind+1;
end
ind=1;
end
pol=zeros(1,length(x)+1);
for i=1:length(x)+1
for j=1:length(x)-1
pol(i)=pol(i)+r(j,i);
end
end
pol(length(x)+1)=pol(length(x)+1)+m(1,2);
f=poli(pol,xb);
disp(r);
disp(pol);
disp(f);
--------------------------------------------------------
function s=poli(x,y)
s=0;
n=length(x);
for i=1:n
s=s+x(i)*y^(n-i);
end
-----------------------------------------------------
function f=fact(x)
f=1;
for i=1:x
f=f*i;
end
miércoles, 12 de octubre de 2011
Lagrange
function Lagrange(x,y,xk)
n=length(x);
pol1(1)=1;
for i=1:n
p1=1;
p2=1;
for j=1:n
if(j~=i)
p1=p1*(xk-x(j));
p2=p2*(x(i)-x(j));
end
end
d(i)=y(i)/p2;
l(i)=p1/p2;
end
c(1)=1;
for i=1:n
z=length(c);
for j=1:n
if(j~=i)
pol1(2)=-x(j);
c=conv(c,pol1);
end
end
for a=1:length(c)
m(i,a)=c(a);
end
c=ones(z);
end
for i=1:length(m)
for j=1:n
m(j,i)=m(j,i)*d(j);
end
end
for i=1:length(m)
s=0;
for j=1:n
s=s+m(j,i);
end
r(i)=s;
end
p=0;
for i=1:n
p=p+l(i)*y(i);
end
s=0;
n=length(r);
for i=1:n
s=s+r(i)*(xk^(n-i));
end
disp 'EL RESULTADO ES:';
disp(r);
disp(s);
EL RESULTADO ES:
0 1 0 0
6.7600
polinomio
function x=polinomio(a,b,xb)
n=length(a);
m=zeros(n);
p=n;
for i=1:n
for j=1:n
m(i,j)= (a(i)^(p-1));
p=p-1;
end
p=n;
end
x=inv(m)*b';
p=n;
r=0;
for i=1:n
r=r+x(i)*(xb^(p-1));
p=p-1;
end
disp('los coef del polinomio')
disp(x)
disp('el resultado es de p(x)=')
disp(r);
por ejemplo si a=[0 1 2 3] y b=[0 1 4 9] y xb=2.6
el resul est
los coef del polinomio
-0.0000
1.0000
-0.0000
0
el resultado es de p(xb)=
6.7600
martes, 27 de septiembre de 2011
programa LU
function lu()
n=input('introduzca la cantidad de ecu ');
for i=1:n
for j=1:n
A(i,j)=input('los elementos de la matriz A ');
end
end
for i=1:n
b(i)=input('los elementos del vector B ');
end
U=zeros(n);
L=zeros(n);
for j=1:n
L(j,j)=1;
end
for j=1:n
U(1,j)=A(1,j);
end
for i=2:n
for j=1:n
for k=1:i-1
s1=0;
if k==1
s1=0;
else
for p=1:k-1
s1=s1+L(i,p)*U(p,k);
end
end
L(i,k)=(A(i,k)-s1)/U(k,k);
end
for k=i:n
s2=0;
for p=1:i-1
s2=s2+L(i,p)*U(p,k);
end
U(i,k)=A(i,k)-s2;
end
end
end
disp(A);
disp(L);
disp(U);
c=inv(L)*b';
x=inv(U)*c;
disp(x);
y se debe hacer correr es de la siguiente forma:
lu()
introduzca la cantidad de ecu 3
los elementos de la matriz A 4
los elementos de la matriz A -2
los elementos de la matriz A -1
los elementos de la matriz A 5
los elementos de la matriz A 1
los elementos de la matriz A -1
los elementos de la matriz A 1
los elementos de la matriz A 2
los elementos de la matriz A -1
los elementos del vector B 9
los elementos del vector B 7
los elementos del vector B 12
4 -2 -1
5 1 -1
1 2 -1
1.0000 0 0
1.2500 1.0000 0
0.2500 0.7143 1.0000
4.0000 -2.0000 -1.0000
0 3.5000 0.2500
0 0 -0.9286
-1.3077
-0.2308
-13.7692
n=input('introduzca la cantidad de ecu ');
for i=1:n
for j=1:n
A(i,j)=input('los elementos de la matriz A ');
end
end
for i=1:n
b(i)=input('los elementos del vector B ');
end
U=zeros(n);
L=zeros(n);
for j=1:n
L(j,j)=1;
end
for j=1:n
U(1,j)=A(1,j);
end
for i=2:n
for j=1:n
for k=1:i-1
s1=0;
if k==1
s1=0;
else
for p=1:k-1
s1=s1+L(i,p)*U(p,k);
end
end
L(i,k)=(A(i,k)-s1)/U(k,k);
end
for k=i:n
s2=0;
for p=1:i-1
s2=s2+L(i,p)*U(p,k);
end
U(i,k)=A(i,k)-s2;
end
end
end
disp(A);
disp(L);
disp(U);
c=inv(L)*b';
x=inv(U)*c;
disp(x);
y se debe hacer correr es de la siguiente forma:
lu()
introduzca la cantidad de ecu 3
los elementos de la matriz A 4
los elementos de la matriz A -2
los elementos de la matriz A -1
los elementos de la matriz A 5
los elementos de la matriz A 1
los elementos de la matriz A -1
los elementos de la matriz A 1
los elementos de la matriz A 2
los elementos de la matriz A -1
los elementos del vector B 9
los elementos del vector B 7
los elementos del vector B 12
4 -2 -1
5 1 -1
1 2 -1
1.0000 0 0
1.2500 1.0000 0
0.2500 0.7143 1.0000
4.0000 -2.0000 -1.0000
0 3.5000 0.2500
0 0 -0.9286
-1.3077
-0.2308
-13.7692
programa seidel
le codigo de seidel es de la siguiente forma:
function z=seidel(a,b,Es)
D=diag(diag(a));
L=(tril(a)-D)*(-1);
U=(triu(a)-D)*(-1);
m=inv(D)*(L+U);
c=inv(D)*b';
n=length(m);
x0=zeros(n,1);
Em=99999999999;
cont=0;
s=0;
while Em>=Es
for i=1:n
for j=1:n
s=s+(m(i,j)*x0(j));
end
x(i)=s+c(i);
s=0;
E(i)=abs(x(i)-x0(i));
x0(i)=x(i);
end
cont=cont+1;
for i=1:n
Em=max(E(i));
end
end
disp('numero de iteraciones')
disp(cont)
disp('valor del error')
disp(Em)
disp('vector x')
disp(x0)
lo mismo que jacobi A es la matriz, B es el vector, Es es el error deseado
function z=seidel(a,b,Es)
D=diag(diag(a));
L=(tril(a)-D)*(-1);
U=(triu(a)-D)*(-1);
m=inv(D)*(L+U);
c=inv(D)*b';
n=length(m);
x0=zeros(n,1);
Em=99999999999;
cont=0;
s=0;
while Em>=Es
for i=1:n
for j=1:n
s=s+(m(i,j)*x0(j));
end
x(i)=s+c(i);
s=0;
E(i)=abs(x(i)-x0(i));
x0(i)=x(i);
end
cont=cont+1;
for i=1:n
Em=max(E(i));
end
end
disp('numero de iteraciones')
disp(cont)
disp('valor del error')
disp(Em)
disp('vector x')
disp(x0)
lo mismo que jacobi A es la matriz, B es el vector, Es es el error deseado
programa jacobi
el codigo del programa es:
function jacobi(a,b,x0,Es)
D=diag(diag(a));
L=(tril(a)-D)*(-1);
U=(triu(a)-D)*(-1);
m=inv(D)*(L+U);
c=inv(D)*b;
E=99999999999;
cont=0;
n=length(m);
while E>=Es
x=m*x0+c;
cont=cont+1;
E=max(abs(x-x0));
x0=x;
end
disp('numero de iteraciones')
disp(cont)
disp('valor del error')
disp(E)
disp('vector x')
disp(x0)
para ejecuytar se tiene los siguiente
A es la matriz, B es el vector, xo es el vector nulo, Es es el error deseado
function jacobi(a,b,x0,Es)
D=diag(diag(a));
L=(tril(a)-D)*(-1);
U=(triu(a)-D)*(-1);
m=inv(D)*(L+U);
c=inv(D)*b;
E=99999999999;
cont=0;
n=length(m);
while E>=Es
x=m*x0+c;
cont=cont+1;
E=max(abs(x-x0));
x0=x;
end
disp('numero de iteraciones')
disp(cont)
disp('valor del error')
disp(E)
disp('vector x')
disp(x0)
para ejecuytar se tiene los siguiente
A es la matriz, B es el vector, xo es el vector nulo, Es es el error deseado
Suscribirse a:
Entradas (Atom)