Escolar Documentos
Profissional Documentos
Cultura Documentos
[n m]=size(a);
%eliminacion gaussiana
for k=1:n-1
for i=k+1:n
r=-a(i,k)/a(k,k);
for j=k+1:n+1
a(i,j)=a(i,j)+r*a(k,j);
end
end
end
%resuelve el sistema
X(n)=a(n,n+1)/a(n,n);
for i=n-1:-1:1
c=a(i,n+1);
for j=i+1:n
c=c-a(i,j)*x(j);
end
x(i)=c/a(i,i)
end
x’
_____________________________________________________________________________
[n m]=size(a);
%eliminacion gaussiana
for k=1:n-1
a(k+1:n,k+1:n+1)=a(k+1:n,k+1:n+1)+(-a(k+1:n,k)/a(k,k))*a(k,k+1:n+1);
end
%resuelve el Sistema
X(n)=a(n,n+1)/a(n,n)
for i=n-1:-1:1
a(i,n+1)=a(i,n+1)-a(i,i+1:n)*x(i+1:n)’;
x(i)=a(i,n+1)/a(i,i);
end
x’
programa1
x=1:10;
hold on
x2=1:0.5:10;
y2=interp1(x,y,x2,'spline');
disp(y2)
programa2
function [a,b,c,d]=splineCubico
n=lenght(x(1,:));
for i=1:n;
a(i)=x(2,i);
end
for i=1:n-1;
h(i)=x(1,i+1)-x(1,i);
end
for i=2:n-1;
alfa(i)=3/h(i)*(a(i+1)-a(i))-3/h(i-1)*(a(i)-a(i-1));
end
l(1)=1;
mu(1)=0;
z(1)=0;
for i=2:n-1;
l(i)=2*(x(1,i+1)-x(1,i-1))-h(i-1)*mu(i-1);
mu(i)=h(i)/l(i);
z(i)=(alfa(i)-h(i-1)*z(i-1))/l(i);
end
l(n)=1;
z(n)=0;
c(n)=0;
for i=n-1:-1:1;
c(i)=z(i)-mu(i)*c(i+1);
b(i)=(a(i+1)-a(i))/h(i)-h(i)*(c(i+1)+2*c(i))/3;
d(i)=(c(i+1)-c(i))/(3*h(i));
end
for i=1:n-1;
x=x(1,i):0.5:x(1,i+1);
m=length(x);
disp(x)
y=a(i)+b(i)*(x-x(1,i))+c(i)*(x-x(1,i)).^2+d(i)*(x-x(1,i)).^3;
disp(y)
end
//METODO DE SIMPSON
function y=f(x)
y=exp(x)/x
endfunction
a=1;
b=2,
n=20; //numero de subintervalos
h=(b-a)/n;
s0=f(a)+f(b)
s1=0;
s2=0;
for i=1:n-1
x=a+i*h;
if modulo(i,2)==0 then
s2=s2+f(x);
else
s1=s1+f(x);
end
end
s=h*(s0+2*s2+4*s1)/3;
disp(s)
________________________________________________________________________-
S0=f(a)+f(b)
S1=0
S2=0
i=0
for i=1:n-1
x=a+i*h
if modulo(i,2)==0 then
S2=S2+f(x)
else
S1=S1+f(x)
end
end
S=h*(S0+2*S2+4*S1)/3
disp(S,'valor aproxinmado de la integral según la regla compuesta de simpson es:')
__________________________________________________________________-
real x
f=exp(x)/x
end
se grabó como Simpson.f90
program simpson
integer i,n
real a,b,s,s0,s1,s2,h,x,f
a=1
b=2
h=(b-a)/n
s0=f(a)+f(b)
s1=0
s2=0
do i=1,n-1
x=a+i*h
if (mod(i,2)==0) then
s2=s2+f(x)
else
s1=s1+f(x)
end if
end do
s=h*(s0+2*s2+4*s1)/3
print*,s
end
________________________________________________________________________-
Programa1
real x
f=exp(x)/x
end
programa2
program trapecio
integer i,n
real a,b,s,s0,s1,h,x,f
a=1;
b=2;
h=(b-a)/n;
s0=f(a)+f(b)
s1=0;
do i=1,n-1
x=a+i*h;
s1=s1+f(x);
end do
s=h*(s0+2*s1)/2;
print*,s
end
//METODO DE TRAPECIO
function y=f(x)
y=exp(x)/x
endfunction
a=1;
b=2,
n=20; //numero de subintervalos
h=(b-a)/n;
s0=f(a)+f(b)
s1=0;
for i=1:n-1
x=a+i*h;
s1=s1+f(x)
end
s=h*(s0+2*s1)/2;
disp(s)
SPLINE FRONTERA SUJETA (matlab)
n=length(x);
clear A B C D;
if n<4
return
end
for i=1:n-1
h(i)=x(i+1)-x(i);
end
B(1)=-2*h(1)/6;
c(1)=-h(1)/6;
D(1)=u-(y(2)-y(1))/h(1);
for i=2:n-1
A(i)=h(i-1);
B(i)=2*(h(i-1+h(i));
C(i)=h(i);
D(i)=6*((y(i+1)-y(i))/h(i)-(y(i)-y(i-1))/h(i-1));
end
A(n)=h(n-1)/6;
B(n)=h(n-1)/3;
D(n)=v-(y(n)-y(n-1))/h(n-1);
s=tridiagonal(A,B,C,D);
for i=1:n-1
a(i)=(s(i+1)-s(i))/(6*h(i));
b(i)=s(i)/2;
c(i)=(y(i+1)-y(i))/h(i)-(2*h(i)*s(i)+h(i)*s(i+1))/6;
d(i)=y(i);
end
if nargin==5 % puntos del trazador cubico sujeto
p=[];
m=length(z);
for k=1:m
t=z(k);
for i=1:n-1
if t>=x(i) & t<=x(i+1)
p(k)=a(i)*(t-x(i))^3+b(i)*(t-x(i))^2+c(i)*(t-x(i))+d(i);
end
end
end
if m>1
k=m;i=n-1;
p(k)=a(i)*(t-x(i))^3+b(i)*(t-x(i))^2+c(i)*(t-x(i))+d(i);
end
clear a b c d;
a=p;
end
SPLINE CUBICO NATURAL (fortran)
program splineCubicoNatural
!Numero de puntos: n
integer, parameter::n=9
integer,parameter::m=n-2;
integer k,i,j
real, dimension(n-2,n-1)::e
real,dimension(n-2)::z
real,dimension(n)::x,y,a,c
real,dimension(n-1)::b,d,h
x(:)=[1,2,5,6,7,8,10,13,17]
!y(:)=[3,5,3,4,7,6,8,9,1]
y(:)=[3.0,3.7,3.9,4.2,5.7,6.6,7.1,6.7,4.5]
do i=1,n-2
do j=1,n-1
e(i,j)=0.0
end do
end do
do j=1,n-1
h(j)=x(j+1)-x(j)
end do
do j=1,n
a(j)=y(j)
end do
do i=1,n-2
e(i,i)=2*(h(i)+h(i+1))
end do
do i=1,n-3
e(i+1,i)=h(i+1)
end do
do i=1,n-3
e(i,i+1)=h(i+1)
end do
do i=1,n-2
e(i,n-1)=3*(a(i+2)-a(i+1))/h(i+1)-3*(a(i+1)-a(i))/h(i)
end do
!Resolvue el sistema
!call gaussPivote(e,n-2,z)
do k=1,n-3
do i=k+1,n-2
r=-e(i,k)/e(k,k)
do j=k,n-1
e(i,j)=e(i,j)+r*e(k,j)
end do
end do
end do
z(n-2)=e(n-2,n-1)/e(n-2,n-2)
do i=n-3,1,-1
s=0
do j=i+1,n-2
s=s+e(i,j)*z(j)
end do
z(i)=(e(i,n-1)-s)/e(i,i)
end do
c(1)=0
do j=1,n-2
c(j+1)=z(j)
end do
c(n)=0
do j=1,n-1
b(j)=(a(j+1)-a(j))/h(j)-h(j)*(2*c(j)+c(j+1))/3
d(j)=(c(j+1)-c(j))/(3*h(j))
end do
print*,'ai bi ci di'
do i=1,n-1
!print "(f10.3)",a(i),b(i),c(i),d(i)
write(*,100) a(i),b(i),c(i),d(i)
100 format(f4.1,3f8.3)
end do
print*,' zi'
do i=1,n-2
print*,z(i)
end do
!pause
End
Spline cubico(matlab)
function [a,b,c,d]=spline3(X)
n=length(X(1,:));
for i=1:n;
a(i)=X(2,i);
end
for i=1:n-1;
h(i)=X(1,i+1)-X(1,i);
end
for i=2:n-1;
alfa(i)=3/h(i)*(a(i+1)-a(i))-3/h(i-1)*(a(i)-a(i-1));
end
l(1)=1;
mu(1)=0;
z(1)=0;
for i=2:n-1;
l(i)=2*(X(1,i+1)-X(1,i-1))-h(i-1)*mu(i-1);
mu(i)=h(i)/l(i);
z(i)=(alfa(i)-h(i-1)*z(i-1))/l(i);
end
l(n)=1;
z(n)=0;
c(n)=0;
for i=n-1:-1:1;
c(i)=z(i)-mu(i)*c(i+1);
b(i)=(a(i+1)-a(i))/h(i)-h(i)*(c(i+1)+2*c(i))/3;
d(i)=(c(i+1)-c(i))/(3*h(i));
end
for i=1:n-1;
x=X(1,i):0.1:X(1,i+1);
y=a(i)+b(i)*(x-X(1,i))+c(i)*(x-X(1,i)).^2+d(i)*(x-X(1,i)).^3;
hold on;
plot(x,y,'b');
end
for i=1:n;
hold on;
plot (X(1,i),X(2,i),'*','MarkerEdgeColor','r','LineWidth',1);
title('Interpolación por "splines" de orden 3.');
end
>>X=[1 2 3 4 5 6 7 8 9; 0 3 4 -6 2 4 0 4 3];
>>[m,b]=spline3(X)