24小时热门版块排行榜    

CyRhmU.jpeg
查看: 439  |  回复: 0

hbxcyys

铜虫 (小有名气)

[求助] Fortran转化 C++

1、试将下列描述大气对流的洛伦兹微分方程组用C 语言实现出来,要求编写出完整的程序代码。(时间步长取0.001)
   其中参数值分别为: ,
=====================================================================
2、罗斯勒设计了一个新的吸引子方程组,如下:
  其中参数值分别为: ,
时间步长取0.001。试将该微分方程组用C 语言实现出来,要求编写出完整的程序代码。
==============================================================================
3.将杜芬方程组用C 语言实现出来,要求编写出完整的程序代码。时间步长取0.001。



下面是用Fortran 语言编写的程序代码,拜托转化为C++语言代码。




program lorenz
implicit none
integer  N
real x, y, z, dx, dy, dz, dt
Real r, sigma, b
integer  i,j
   sigma=10.0;b=8/3; N=1E6;dt=0.001; r=28.0
open (unit=1,file='1.dat',status='unknown')

x=0.10;  y=0.30;  z=0.2

do         i=1,100000         
                dx=dt*( sigma*(y-x) )
        dy=dt*(  r*x-y-x*z   )
        dz=dt*(  x*y - b*z    )
        x=x+dx
        y=y+dy
        z=z+dz
   if  (         MOD( i, 20 )==0) then          
   write (1,'(1x, 3f12.5)')   x, y, z
   end if
end do
  close (1)       
end program lorenz
  
================================================================!!!
program rossler

implicit none
integer  N
integer, parameter:: NN=7
real x, y, z, dx, dy, dz, dt
Real a, b, c, x_c(NN),c1,c2
integer  i,j,k
! The values of parameters about the sy(i)s
character aa*1,  bb*1, cc*2
!------------------------------------------------------------------------------------!
a=0.2; b=0.2; N=1E6;  dt=0.01; !c=2.6 !,3.5, 4.1, 4.18, 4.21, 4.6, 5.7
x_c(1:7) =(/2.6, 3.5, 4.1, 4.18, 4.21, 4.6, 5.7/)  
!------------------------------------------------------------------------------------!
  x=0.10;   y=0.30;   z=0.2

do k=1,NN
           c=x_c(k)
         c1=(c*100)/100
         c2=c*100.0-100*int(c)
        write(aa, '(i1.1)')  int(k)       
    write(bb, '(i1.1)')  int(c1)
        write(cc, '(i2.2)')  int(c2*1.01)
   open (unit=1,file='Data\rossler_c'//aa//'='//bb//'.'//cc//'.dat',status='unknown')
  do         i=1,40000         
        dx=dt*(  -y-z      )
        dy=dt*(  x+a*y     )
        dz=dt*(  b+(x-c)*z  )
        x=x+dx
        y=y+dy
        z=z+dz
      if(         MOD( i, 40 )==0   ) then          
         write (1,'(1x, 3f12.5)')   x, y, z
      end if
   end do
   
  close (1)
   
  end do
end program rossler


integer  i, j, ii
character  aa*1, bb*1, cc*2
! The values of parameters about the sy(i)s
  pi=3.14; N=1E6
  x_k(1:8)=(/0.5, 0.7, 0.9, 1.0, 1.2, 1.3, 1.4, 1.5/)

do ii=1, NN
   k=x_k(ii)
   k1=(k*10.0)/10
   k2=k*10.0-10*int(k)
        write(aa, '(i1.1)')  ii
    write(bb, '(i1.1)')  int(k1)
        write(cc, '(i1.1)')  int(k2*1.01)
open (unit=1,file='Data\bzys_k'//aa//'='//bb//'.'//cc//'.dat',status='unknown')         

do j=1, 20
  x_0(j)=2*pi*j/20
  y_0(j)=1.0*pi

do         i=1,100000
        x(1)=x_0(j)
        y(1)=y_0(j)

    if( x(i)>=2*pi ) then
      x(i)=x(i)-2*pi
        else if( x(i)<=0.0 ) then
          x(i)=x(i)+2*pi
   end if
             
    if( y(i)>=2*pi ) then
     y(i)=y(i)-2*pi
        else if( y(i)<=0.0 ) then
          y(i)=y(i)+2*pi
    end if       
       
            dx=dt* y
        dy=dt*(  k*x-x**3     )
        
        x=x+dx
        y=y+dy
        
     if  (         MOD( i, 40 )==0) then          
          write (1,'(1x, 2f12.5)')  x,          y
     end if
end do
end do
  close (1)       
end do
end program duff
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

找到一些相关的精华帖子,希望有用哦~

科研从小木虫开始,人人为我,我为人人
相关版块跳转 我要订阅楼主 hbxcyys 的主题更新
信息提示
请填处理意见