Sunteți pe pagina 1din 11

program linearizacionexponencial

real(4) x(100),y(100),n,y2(100),nn,k
write(*,*)' linearizacion exponencial y=k*exp(nx)'
write(*,*)''
write(*,*)' ingrese numero de pares para ajuste (max(100))'
read(*,*)n
write(*,*)' ingrese pares uno por uno'
do i=1,n
write(*,*)'ingrese par nro.',i,' x e y'
read(*,*)x(i),y(i)
y(i)=log(y(i))
end do
suma1=0
suma2=0
suma3=0
suma4=0
do i=1,n
suma1=suma1+x(i)
suma2=suma2+y(i)
suma3=suma3+x(i)*x(i)
suma4=suma4+x(i)*y(i)
end do
nn=(suma4-(suma1*suma2)/n)/(suma3-(suma1*suma1)/n)
k=exp((suma2-nn*suma1)/(n))
write(*,*)'resultados'
write(*,15)nn
write(*,16)k
write(*,*)' n x y(linearizado y ajustado)'
!reevaluacion de la funcion
open (1,file='linexp.txt')
do i=1,n
y2(i)=nn*x(i)+log(k)
write(*,10)i,x(i),y2(i)
write(1,10)i,x(i),y2(i)
end do
10 format(1x,i3,2(f8.4,1x))
15 format(1x,'exponente n=',f8.4)
16 format(1x,'coeficiente k=',f8.4)
End
program interpolacionlagrange
real(4) xx,fx,x(1000),f(1000),n
write(*,*)''
write(*,*)' programa interpolacion de lagrange'

write(*,*)' ================================'
write(*,*)''
write(*,*)' ingreso de datos'
write(*,*)' ================'
write(*,*)' ingrese numero de pares de datos'
read(*,*)n
write(*,*)' pares de datos'
do i=1,n
read(*,*)x(i),f(i)
end do
write(*,*)' ingrese el punto a interpolar x'
read(*,*)xx
write(*,*)' ==============================='
fx=0
do i=1,n
z=f(i)
do j=1,n
if(i.ne.j) z=z*(xx-x(j))/(x(i)-x(j))
end do
fx=fx+z
end do
write(*,*)''
write(*,*)' resultado de interpolacion'
write(*,*)' =========================='
write(*,10)fx
write(*,*)' =========================='
write(*,15)n
10 format(3x,f9.5)
15 format(' puntos evaluados:',f8.4)
End
program interpolacionformadenewtonadelante
real(4) n,h,s,xp,fxp,x(100),fx(100)
write(*,*)''
write(*,*)' interpolacion forma de newton adelante'
write(*,*)'======================================='
write(*,*)' espaciamiento uniforme orden=3'
write(*,*)''
write(*,*)' ingrese numero de pares de datos(max(4))'
write(*,*)' ======================================='
5 read(*,*)n
if(n.gt.4)goto 5
10 write(*,*)' ingrese el punto a interpolar x'
read(*,*)xp
write(*,*)' ingrese pares de datos'

do i=1,n
write(*,*)'punto',i
read(*,*)x(i),fx(i)
end do
h=x(2)-x(1)
s=(xp-x(1))/h
if((xp.ge.x(4)).or.(xp.le.x(1)))then
write(*,*)' punto a interpolar fuera de dominio'
write(*,*)' ingrese nuevamente el punto a interpolar'
goto 10
end if
fxp=fx(1)+s*(fx(2)-fx(1))+0.5*s*(s-1)*(fx(3)-2*fx(2)+fx(1))+s*(0.166666)*(s-1)*(s-2)*(fx(4)3*fx(3)+3*fx(2)-fx(1))
write(*,*)' resultados'
write(*,*)' ================='
write(*,*)' x
fx'
write(*,*)'=================='
write(*,15)xp,fxp
15 format(6x,f10.5,3x,f12.7)
write(*,*)' ============='
write(*,20)n
20 format(' puntos evaluados:',f8.4)
End
program drivadataylorpil3p2l3p3l4
real(4) x(10),y(10),h
5 write(*,*)' derivada por desarrollo de taylor'
write(*,*)' p=1,l=3 y p=2,l=3'
write(*,*)''
write(*,*)' ingrese punto a evaluar x0 y h'
read(*,*)x0,h
!evaluacion de funcion
x(1)=x0
x(2)=x0+h
x(3)=x0+2.0*h
x(4)=x0+3.0*h
y(1)=f(x(1))
y(2)=f(x(2))
y(3)=f(x(3))
y(4)=f(x(4))
!calculo por formula
d13=(1.0/h)*(-1.5*y(1)+2.0*y(2)-0.5*y(3))
d23=(1.0/(h**2))*(y(1)-2.0*y(2)+y(3))
d34=(1.0/(h**3))*(-y(1)+3.0*y(2)-3.0*y(3)+y(4))
write(*,*)'primera derivada p=1,l=3'
write(*,10)d13

write(*,*)'segunda derivada velocidad p=2,l=3'


write(*,10)d23
write(*,*)'tercera derivada aceleracion p=3,l=4'
write(*,10)d34
write(*,*)'repetir la operacion(1,si/2,no)'
read(*,*)r
if(r.eq.1)then
goto 5
else
end if
10 format(1x,f10.4)
end
function f(x)
f=3.0*cos(5.0*x+3.1415926)
return
end
program trapecioextendido
real(4) a,b,n,ainteg
5 write(*,*)''
write(*,*)'programa para el calculo de las integrales metodo del trapecio extendido'
write(*,*)' ================================================='
write(*,*)''
write(*,*)' ingrese de datos'
write(*,*)' -------------------------------------'
write(*,*)' ingrese el limite inf.;limite sup.[a,b]'
read(*,*)a,b
write(*,*)' ingrese el ancho de paso h'
read(*,*)h
write(*,*)' -----------------'
write(*,*)''
n=(b-a)/h
fa=f(a)
fb=f(b)
a1=0
do j=1,(n-1)
a1=a1+f(a+h*j)
end do
ainteg=(0.5*h)*(fa+fb+(2*a1))
write(*,*)' resultados'
write(*,*)' ----------'
write(*,15)a,b,n
write(*,*)' el valor de la integral'
write(*,12)ainteg
12 format(9x,f9.6)
15 format(9x,'lim inf:',f9.6,'lim sup:',f9.6,' nro de intervalos:',f9.4)

write(*,*)' ------------'
end
function f(x)
f=x*(sin(x))**3
return
end
program simpsonuntercioextendido
real(4) h,n,a,b,areat
write(*,*)''
write(*,*)' calculo de integrales metodo de simpson un tercio extendido'
write(*,*)'======================================'
write(*,*)''
write(*,*)' ingrese datos'
write(*,*)' --------------------------------'
write(*,*)' ingrese los limites de operacion [a,b]'
read(*,*)a,b
write(*,*)' ingrese n'
read(*,*)n
write(*,*)'--------------------------------------'
write(*,*)''
write(*,*)''
h=(b-a)/n
fa=f(a)
fb=f(b)
area1=0
area2=0
do j=1,n-1,2
area1=area1+f(a+j*h)
end do
do i=2,n-2,2
area2=area2+f(a+i*h)
end do
areat=(h*0.33333)*(fa+fb+(4*area1)+(2*area2))
write(*,*)n
write(*,*)' resultados'
write(*,*)'----------'
write(*,*)' el valor de la integral'
write(*,12)areat
12 format(9x,f9.6)
write(*,*)' -----------------'
write(*,*)''
write(*,*)''
write(*,*)''
end
function f(x)

!f=4-x**2
!f=4*x-x**3
f=x*2*sqrt(x)
return
end
program simpsontresoctavos
real(4) h,n,a,b,areat
write(*,*)''
write(*,*)' calculo de integrales metodo de simpson tres octavos'
write(*,*)'======================================'
write(*,*)''
write(*,*)' ingrese datos'
write(*,*)' --------------------------------'
write(*,*)' ingrese los limites de operacion [a,b]'
read(*,*)a,b
write(*,*)' ingrese el nuemero de intervalos multiplo de 3'
read(*,*)n
write(*,*)'--------------------------------------'
write(*,*)''
write(*,*)''
h=(b-a)/n
fa=f(a)
fb=f(b)
area1=0
area2=0
area3=0
do j=2,n-1,3
area1=area1+f(a+j*h)
end do
do i=1,n-2,3
area2=area2+f(a+i*h)
end do
do m=3,n-3,3
area3=area3+f(a+m*h)
end do
areat=(h*0.375)*(fa+fb+3*area1+3*area2+2*area3)
write(*,12)h
write(*,*)' resultados'
write(*,*)'----------'
write(*,*)' el valor de la integral'
write(*,12)areat
12 format(9x,f9.6)
write(*,*)' -----------------'
write(*,*)''
write(*,*)''

write(*,*)''
read(*,*)
end
function f(x)
f=sin(x)-cos(x)
return
end
program euleradelante
real(4) x0,y0,a,b,h,xk(1000),yk(1000),n
10 write(*,*)''
write(*,*)' solucion de E.D.O metodo euler hacia adelante'
write(*,*)' ============================================ '
write(*,*)''
write(*,*)' ingrese datos '
write(*,*)'
'
write(*,*)' ingrese el numero de puntos (n)'
read(*,*)n
write(*,*)' ingrese los limites de la operacion [a,b]'
read(*,*)a,b
write(*,*)' ingrese las condiciones iniciales (xo,yo)'
read(*,*)x0,y0
xk(1)=x0
yk(1)=y0
h=(b-a)/n
do i=2,n+1
yk(i)=yk(i-1)+h*f(xk(i-1),yk(i-1))
xk(i)=xk(i-1)+h
end do
write(*,*)' resultados'
write(*,*)'
'
write(*,*)'===================='
write(*,*)' x y(x)'
write(*,*)'===================='
do j=1,n+1
write(*,20)xk(j),yk(j)
end do
20 format(2x,f10.6,4x,f10.6)
write(*,*)' ================'
end
function f(x,y)
f=4.05-0.0005*y+0.0*x
return
end

program eulermodificado
real(4) x0,y0,a,b,h,n,yk(1000),xk(1000)
10 write(*,*)''
write(*,*)' solucion de E.D.O metodo euler modificado'
write(*,*)' ============================================ '
write(*,*)''
write(*,*)' ingrese datos '
write(*,*)'
'
write(*,*)' ingrese el numero de puntos (n)'
read(*,*)n
write(*,*)' ingrese los limites de la operacion [a,b]'
read(*,*)a,b
write(*,*)' ingrese las condiciones iniciales (xo,yo)'
read(*,*)x0,y0
write(*,*)' ingrese error porcentual solicitado (es)'
read(*,*)es
write(*,*)'
'
h=(b-a)/n
xk(1)=x0
yk(1)=y0
yy=y0
do i=2,n+1
xk(i)=xk(i-1)+h
15 yk(i)=yk(i-1)+(h*0.5)*(f(xk(i-1),yk(i-1))+f(xk(i),yy))
ea=abs((yk(i)-yy)/yk(i))*100
if(ea.gt.es)then
yy=yk(i)
goto 15
end if
end do
write(*,*)' resultados'
write(*,*)'
'
write(*,*)'===================='
write(*,*)' x y(x)'
write(*,*)'===================='
do j=1,n+1
write(*,20)xk(j),yk(j)
end do
20 format(2x,f10.6,4x,f10.6)
write(*,*)' ================'
end
function f(x,y)
f=-0.7*y+14+0.0*x
return

end

program rungekutta2orden
real(4) x0,y0,a,b,h,yk(1000),xk(1000)
10 write(*,*)''
write(*,*)' solucion de E.D.O metodo rung kutta 2 orden'
write(*,*)' ============================================ '
write(*,*)''
write(*,*)' ingrese datos '
write(*,*)'
'
write(*,*)' ingrese el numero de puntos (n)'
read(*,*)n
write(*,*)' ingrese los limites de la operacion [a,b]'
read(*,*)a,b
write(*,*)' ingrese las condiciones iniciales (xo,yo)'
read(*,*)x0,y0
write(*,*)'
'
write(*,*)''
xk(1)=x0
yk(1)=y0
h=(b-a)/n
do i=1,n+1
xk(i+1)=xk(i)+h
yy=yk(i)+h*f(xk(i),yk(i))
yk(i+1)=yk(i)+(0.5)*h*(f(xk(i),yk(i))+f(xk(i+1),yy))
end do
write(*,*)' resultados'
write(*,*)'
'
write(*,*)'===================='
write(*,*)' x y(x)'
write(*,*)'===================='
do i=1,n+1
write(*,20)xk(i),yk(i)
end do
20 format(2x,f9.4,3x,f10.6)
write(*,*)' ================'
end
function f(x,y)
f=10*cos(5*x)-5*y
return
end

program rungekutta3orden
real(4) x0,y0,a,b,h,y(1000),x(1000)
10 write(*,*)''
write(*,*)' solucion de E.D.O metodo runge kutta 3 orden'
write(*,*)' ============================================ '
write(*,*)''
write(*,*)' ingrese datos '
write(*,*)'
'
write(*,*)' ingrese el numero de puntos (n)'
read(*,*)n
write(*,*)' ingrese los valor inicial y final del dominio'
read(*,*)a,b
write(*,*)' ingrese las condiciones iniciales (xo,yo)'
read(*,*)x0,y0
write(*,*)'
'
write(*,*)''
x(1)=x0
y(1)=y0
h=(b-a)/n
do i=1,n+1
x(i+1)=x(i)+h
a=y(i)+h*0.5*f(x(i),y(i))
b=y(i)+h*f(x(i)+h*0.5,a)
y(i+1)=y(i)+h*0.33333*(f(x(i),y(i))+4*f(x(i)+0.5*h,a)+f(x(i+1),b))
end do
write(*,*)' resultados'
write(*,*)'
'
write(*,*)'===================='
write(*,*)' x y(x)'
write(*,*)'===================='
do j=1,n+1
write(*,20)x(j),y(j)
end do
20 format(2x,f9.4,3x,f10.3)
write(*,*)' ================'
end
function f(x,y)
f=0.1035*y+0.0*y
return
end
program rungekutta4orden
real(4) x0,y0,a,b,h,y(1000),x(1000)

10 write(*,*)''
write(*,*)' solucion de E.D.O metodo runge kutta 4 orden'
write(*,*)' ============================================ '
write(*,*)''
write(*,*)' ingrese datos '
write(*,*)'
'
write(*,*)' ingrese el numero de puntos (n)'
read(*,*)n
write(*,*)' ingrese los valor inicial y final del dominio'
read(*,*)a,b
write(*,*)' ingrese las condiciones iniciales (xo,yo)'
read(*,*)x0,y0
write(*,*)'
'
write(*,*)''
x(1)=x0
y(1)=y0
h=(b-a)/n
do i=1,n+1
x(i+1)=x(i)+h
a=h*f(x(i),y(i))
b=h*f(x(i)+h*0.333333,y(i)+a*0.333333)
c=h*f(x(i)+h*0.666666,y(i)+a*0.333333+b*0.333333)
d=h*f(x(i)+h,y(i)+a-b+c)
y(i+1)=y(i)+h*0.125*(a+3*b+3*c+d)
end do
write(*,*)' resultados'
write(*,*)'
'
write(*,*)'===================='
write(*,*)' x y(x)'
write(*,*)'===================='
do j=1,n+1
write(*,20)x(j),y(j)
end do
20 format(2x,f9.5,3x,f9.5)
write(*,*)' ================'
write(*,*)''
read(*,*)
end
function f(x,y)
f=0.0*x+0.1-y/0.22
return
end

S-ar putea să vă placă și