Les Codes MN

Vous aimerez peut-être aussi

Vous êtes sur la page 1sur 5

program racine

implicit real(a-h,o-z)
write(*,*)'entrer la valeur de A'
read(*,*)A
write(*,*)'entrer la valeur de x0'
read(*,*)x0
tol=1E-12
x1=(A+x0**2)/(2.*x0)
esp=(A-x0**2)/(2.*x0)
kmax=1000000
k=0
do while(abs(esp)>=tol)
x1=(A+x0**2)/(2.*x0)
x0=x1
esp=(A-x0**2)/(2.*x0)
k=k+1
nk=k
write(*,*)'x1=',x1,'nk',k
if(nk==kmax)stop
enddo
stop
end

program racineN
implicit none
integer k,kmax,n
real x0,x1,A,eps0
write(*,*)'Entrer la valeur de A'
read(*,*)A
write(*,*)'Entrer la valeur de n'
read(*,*)n
write(*,*)'Entrer la valeur de x0'
read(*,*)x0
write(*,*)"Entrer la valeur maximale d'iteraton,kmax"
read(*,*)kmax
eps0=1E-7
do 1 k=1,kmax
x1=1./n*((n-1)*x0+A/(x0**(n-1)))
if(abs(x1-x0)>=eps0) then
x0=x1
goto 1
endif
goto 2
1 continue
write(*,*)'Resultat sqns convergence,x=',x1
stop
2 continue
write(*,*)'La solution est x1=',x1,'k=',k
stop
end
! méthode de point fixe proposé par le prof
program pointFixe
implicit none
real x0,x1,tol,f
integer k,maxiter
write(*,*)'x0='
read(*,*) x0
write(*,*)"max d'iteration maxiter"
read(*,*) maxiter
write(*,*)'tolérance,tol:'
read(*,*) tol

do k=1,maxiter
x1=f(x0)
if(abs(x1-x0)>tol) then
x0=x1
else
write(*,*)'k=',k,'x1',x1
stop
endif
enddo
end program
function f(x0)
implicit none
real f,x0
f=cos(x0)
return
end

program methodeDeNewton
implicit none
integer k,maxiter
real x0,x1,tol,f,fp,g,gp
write(*,*)'x0='
read(*,*) x0
write(*,*)'tol'
read(*,*) tol
x1=x0+2*tol
k=0
do while(abs(x1-x0)>=tol)
x0=x1
call newton(x0,f,fp)
x1=x0-f/fp
k=k+1
enddo
if(abs(x1-x0)<tol)then
write(*,*)'iterations k=',k,'solution x1=',x1
stop
endif
stop
end
subroutine newton(x,f,fp)
real x,f,g,fp,gp
f=x-exp(1./x)
fp=x+exp(1./x)/x**2
g=1./x-exp(x)
gp=1./x**2-exp(x)
return
end

Program lagrange
implicit none
!
double precision :: p0, p1, tol, q0, q1, p, q
double precision :: f
integer k, maxiter
!
! Lecture des donnees
!
write(*,*) "Intervalle a etudier?:[a,b] "
read(*,*) p0, p1
write(*,*) "Tolérance necessaire?: epsilon "
read(*,*) tol
write(*,*) "Nombre maximal d'iteration: maxiter "
read(*,*) maxiter

k=2
q0 = f(p0)
q1 = f(p1)
! print *, cos(0.5), p0, p1, q0, q1

write(*,*) p0
write(*,*) p1
do while(k <= maxiter)
p = p1 - q1*(p1 - p0)/(q1 - q0)
if(dabs(p - p1) < tol) then
write(*,*) "k = ", k, "p0 = ", p0, "p = ", p, "p1 = ", p1
stop
end if
write(*,*) "k = ", k, "p0 = ", p0, "p = ", p, "p1 = ", p1
k=k+1
q = f(p)
! print *, q*q1
if(q*q1 < 0.) then
p0 = p1
q0 = q1
end if
p1 = p
q1 = q
end do
write(*,*) "La methode a echouee apres maxiter iterations, maxiter = ", maxiter
!
end program lagrange

double precision function f(x)


!
!Cette fonction est juste un exemple.
!Elle doit etre remplacee
!
double precision :: x
! f= dcos(x)-x
f=x**2+ 4*x-8.95
! f = x**3 - 4.*x - 8.95
!x*x*x − 4.*x − 8.95
!-x*x + 2.*x + 3.

end function f

!!!!!! Methode de dichotomie


!!! UAC, le 19-05-2022

Implicit real(a-h,o-z)
Write(*,*)'Entrer l''intervalle [a,b] '
Read(*,*)a,b
Write(*,*)'Entrer la tolerance, epsilon=tol'
Read(*,*) tol
Write(*,*)'Entrer la valeur maximale d''iterations,maxiter'
Read(*,*) maxiter

do 1 iter=0,maxiter
ak=a
bk=b
pk=f(ak)
qk=f(bk)
xk=(ak+bk)/2.

if(pk*qk<0.)then
a=xk
b=bk
pk=f(a)
qk=f(b)
Write(*,*)'iter=',iter,'a=',a,'b=',b
goto 1
endif
if(pk*qk<0.)then
a=ak
b=xk
pk=f(a)
qk=f(b)
Write(*,*)'iter=',iter,'a=',a,'b=',b
goto 1
endif
fk=f(xk)
if(abs(fk)<tol)then
Write(*,*)'la solution est:',xk,iter
stop
endif
1 continue
! Write(*,*)'Maxiter atteint sans solutions'
stop
end

function f(x)
Implicit real(a-h,o-z)
f= x**2+4.*x-8.95
Return
end

! oscillateur harmonique

program oscillateur
implicit real(a-h,o-z)
parameter(N=1000)
real x(0:N),y(0:N),t(0:N)
open(1,file='data3.out',status='unknown')
pi=4.*atan(1.)
omega0=pi/3.
t(0)=0.
x(0)=1.
y(0)=0.
t0=t(0)
x0=x(0)
y0=y(0)
h=0.01
write(1,*)t0,x0,y0

do i=1,1000
t(i)=t(i-1)+h
y(i)=y(i-1)-omega0**2*h*x(i-1)
x(i)=x(i-1)+h*y(i-1)
write(1,*)t(i),x(i),y(i)
enddo
stop
end

Personne n'est parfait


Mais il faut bien lire

Vous aimerez peut-être aussi