카테고리 없음

로렌츠 방정식

조지 가모프 2023. 9. 18. 23:13
program mmm

real a(20000), b(20000), c(20000) 

!----------------------
!세 배열 a,b,c => x,y,z 좌표
!--------------------------

real rk1, rk2, rk3, rk4

real ak1, ak2, ak3, ak4

real ck1, ck2, ck3, ck4,h

integer i

a(1)=2

b(1)=1

c(1)=0.03

h=0.02


do i=1,15000,1

rk1=10.0*(b(i)-a(i))
rk2=10.0*(b(i)-a(i)-rk1*h/2.0)
rk3=10.0*(b(i)-a(i)-rk2*h/2.0)
rk4=10.0*(b(i)-a(i)-h*rk3)

ak1=a(i)*(28.0-c(i))-b(i)
ak2=a(i)*(28.0-c(i))-b(i)-h*ak1/2.0
ak3=a(i)*(28.0-c(i))-b(i)-h*ak2/2.0
ak4=a(i)*(28.0-c(i))-b(i)-h*ak3

ck1=a(i)*b(i)-8.0/3.0*c(i)
ck2=a(i)*b(i)-8.0/3.0*(c(i)+h*ck1/2.0)
ck3=a(i)*b(i)-8.0/3.0*(c(i)+h*ck2/2.0)
ck4=a(i)*b(i)-8.0/3.0*(c(i)+h*ck3)

a(i+1)=a(i)+(h/6.0)*(rk1+2.0*(rk2+rk3)+rk4)

b(i+1)=b(i)+(h/6.0)*(ak1+2.0*(ak2+ak3)+ak4)

c(i+1)=c(i)+(h/6.0)*(ck1+2.0*(ck2+ck3)+ck4)





end do

open (unit=5,file='lorenz.txt',status='replace')


do i=1,10000

write(5,*)a(i),b(i) ,c(i)

end do

close(5)








end program mmm