为什么四阶龙格库塔法原理格

君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
二阶 四阶龙格库塔法
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口小木虫 --- 600万学术达人喜爱的学术科研平台
&&查看话题
【求助】四阶龙格-库塔方法!!!!
double precision qx,qy,qz,qx0,qy0,qz0,qx1,qy1,qz1,a,b,c,h,t,d
& && &double precision qkx1,qkx2,qkx3,qkx4,qky1,qky2,qky3,qky4,qkz1,qkz2
& &&&&,qkz3,qkz4
& && &double precision px,py,pz,px0,py0,pz0,px1,py1,pz1
& && &double precision pkx1,pkx2,pkx3,pkx4,pky1,pky2,pky3,pky4,pkz1,pkz2
& &&&&,pkz3,pkz4
& & & & double precision k1,k2 !耦合强度
& & & & double precision&&delta, eps&&! 误差精度
& && &a=0.66d0
& && &b=0.201d0
& && &c=0.165d0
& & & & d=1d0/0.407d0
& && &h=1.0d-3
& && &px0=0.3d0
& && &py0=0.5d0
& && &pz0=1.0d0
& & & & qx0=0.8d0
& & & & qy0=1.5d0
& & & & qz0=0.2d0
& & & & eps=1d-4
& & & & open(10,file='delta.dat')
& & & & k1=0.4
& & & & k2=0.2
!& & & &&&do k1=0.001d0,1.0d0,0.05d0
!& & & && && &do k2=0.001d0,1.0d0,0.05d0
& & & & & & & &&&& & & && &&&& & & &&&
& && && && & do 30 t=h,2.0d2,h
& & & && && &&&qkx1=h*qx(qy0,qz0,a)
& && && && & qky1=h*qy(qx0,qy0,qz0,py0,b,c,k1,k2)
& && && && & qkz1=h*qz(qx0,qz0,d)
& & & && && &&&pkx1=h*px(py0,pz0,a)
& && && && & pky1=h*py(px0,py0,pz0,qy0,b,c,k1,k2)
& && && && & pkz1=h*pz(px0,pz0,d)
& && && && & qx1=qx0+qkx1/2.0d0
& && && && & qy1=qy0+qky1/2.0d0
& && && && & qz1=qz0+qkz1/2.0d0
& & & & & & & && & px1=px0+pkx1/2.0d0
& && && && & py1=py0+pky1/2.0d0
& && && && & pz1=pz0+pkz1/2.0d0
& && &&&qkx2=h*qx(qy1,qz1,a)
& && &&&qky2=h*qy(qx1,qy1,qz1,py1,b,c,k1,k2)
& && &&&qkz2=h*qz(qx1,qz1,d)
& & & && &pkx2=h*px(py1,pz1,a)
& && &&&pky2=h*py(px1,py1,pz1,qy1,b,c,k1,k2)
& && &&&pkz2=h*pz(px1,pz1,d)
& && &&&qx1=qx0+qkx2/2.0d0
& && &&&qy1=qy0+qky2/2.0d0
& && &&&qz1=qz0+qkz2/2.0d0
& & & && &px1=px0+pkx2/2.0d0
& && &&&py1=py0+pky2/2.0d0
& && &&&pz1=pz0+pkz2/2.0d0
& && &&&qkx3=h*qx(qy1,qz1,a)
& && &&&qky3=h*qy(qx1,qy1,qz1,py1,b,c,k1,k2)
& && &&&qkz3=h*qz(qx1,qz1,d)
& & & && &pkx3=h*px(py1,pz1,a)
& && &&&pky3=h*py(px1,py1,pz1,qy1,b,c,k1,k2)
& && &&&pkz3=h*pz(px1,pz1,d)
& && &&&qx1=qx0+qkx3
& && &&&qy1=qy0+qky3
& && &&&qz1=qz0+qkz3
& && &&&px1=px0+pkx3
& && &&&py1=py0+pky3
& && &&&pz1=pz0+pkz3
& && &&&qkx4=h*qx(qy1,qz1,a)
& && &&&qky4=h*qy(qx1,qy1,qz1,py1,b,c,k1,k2)
& && &&&qkz4=h*fz(qx1,qz1,d)
& & & && &pkx4=h*px(py1,pz1,a)
& && &&&pky4=h*py(px1,py1,pz1,qy1,b,c,k1,k2)
& && &&&pkz4=h*pz(px1,pz1,d)
& && &&&qx1=qx0+(qkx1+2.0*qkx2+2.0*qkx3+qkx4)/6.0d0
& && &&&qy1=qy0+(qky1+2.0*qky2+2.0*qky3+qky4)/6.0d0
& && &&&qz1=qz0+(qkz1+2.0*qkz2+2.0*qkz3+qkz4)/6.0d0
& && &&&px1=px0+(pkx1+2.0*pkx2+2.0*pkx3+pkx4)/6.0d0
& && &&&py1=py0+(pky1+2.0*pky2+2.0*pky3+pky4)/6.0d0
& && &&&pz1=pz0+(pkz1+2.0*pkz2+2.0*pkz3+pkz4)/6.0d0
& & & && & qx0=qx1& && && &
& & & && & qy0=qy1& && && && &
& & & && & qz0=qz1
& & & && & px0=px1& &
& && && &py0=py1& && && &
& & & && & pz0=pz1
大家看看我&&我要用四阶龙格-库塔方法解一个六变量的方程组(六个方程) 如何去解&&这里我写了一点了&&
这个是方程组!求大侠帮忙
展开阅读全文
学术科研必备,90%的学术科研者都在使用
关于【求助】四阶龙格-库塔方法!!!!的相关话题在小木虫APP已经有190位虫友给出了详细回复。
赶快查看回复吧!
看我后面的函数写的是否有问题&&编译能过 但运行不了
double precision function qx(y1,z1,a)
& && &real*8 y1,z1,a
& && &&&qx=y1-a*z1
& && &&&return
& && &&&end
& && &&&double precision function qy(x1,y1,z1,y2,b,c,k1,k2)
& && & double precision x1,y1,z1,y2,b,c,k1,k2
& && && &qy=-x1+2*b*y1+c*z1-k1*(y1-y2)+k2*(y1**2.0-y2**2.0)
& & & && & return
& && &&&end
& && &&&double precision function qz(x1,z1,d)
& && &&&double precision x1,z1,d
& && &&&qz=d*(x1-z1**3.0+z1)
& && &&&return
& && &&&end
& & & &&&double precision function px(y2,z2,a)
& && &&&double precision y2,z2,a
& && &&&px=y2-a*z2
& && &&&return
& && &&&end
& && & double precision function py(x2,y2,z2,y1,b,c,k1,k2)
& && &&&double precision x2,y2,z2,y1,b,c,k1,k2
& && && &py=-x2+2*b*y2+c*z2+k1*(y1-y2)-k2*(y1**2.0-y2**2.0)
& & & && & return
& && &&&end
& && & double precision function pz(x2,z2,d)
& && &&&double precision x2,z2,d
& && &&&pz=d*(x2-z2**3.0+z2)
& && &&&return
& && &&&end
主程序中,fz 应该改成 pz 吧我刚开始的时候也像你一样迷茫,同学给我推荐了,上面很多牛人分享的科研经验,对新手很有帮助,你也可以下载来试试!
这个问题你一讲过,我就发现了,改了过来。编译能通过。还是不能运行出现两个错误&&nonlinear coupling.obj : error LNK2001: unresolved external symbol _Z@8
Debug/nonlinear coupling.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
这个是一本书吗?现在是程序通不过,那个思想我知道的
double precision qx,qy,qz,qx0,qy0,qz0,qx1,qy1,qz1,a,b,c,h,t,d
& && &double precision qkx1,qkx2,qkx3,qkx4,qky1,qky2,qky3,qky4,qkz1,qkz2
& &&&&,qkz3,qkz4
& && &double precision px,py,pz,px0,py0,pz0,px1,py1,pz1
& && &double precision pkx1,pkx2,pkx3,pkx4,pky1,pky2,pky3,pky4,pkz1,pkz2
& &&&&,pkz3,pkz4
& & & & double precision k1,k2 !耦合强度
& & & & double precision&&delta, eps&&! 误差精度
& && &a=0.66d0
& && &b=0.201d0
& && &c=0.165d0
& & & & d=1d0/0.407d0
& && &h=1.0d-3
& && &px0=0.3d0
& && &py0=0.5d0
& && &pz0=1.0d0
& & & & qx0=0.8d0
& & & & qy0=1.5d0
& & & & qz0=0.2d0
& & & & eps=1d-4
& & & & open(10,file='delta.dat')
!& & & & k1=0.4
!& & & & k2=0.2
& & & &&&do k1=0.001d0,1.0d0,0.05d0
& & & && && &do k2=0.001d0,1.0d0,0.05d0
& & & & & & & &&&& & & && &&&& & & &&&
& && && && & do 30 t=h,2.0d2,h
& & & && && &&&qkx1=h*qx(qy0,qz0,a)
& && && && & qky1=h*qy(qx0,qy0,qz0,py0,b,c,k1,k2)
& && && && & qkz1=h*qz(qx0,qz0,d)
& & & && && &&&pkx1=h*px(py0,pz0,a)
& && && && & pky1=h*py(px0,py0,pz0,qy0,b,c,k1,k2)
& && && && & pkz1=h*pz(px0,pz0,d)
& && && && & qx1=qx0+qkx1/2.0d0
& && && && & qy1=qy0+qky1/2.0d0
& && && && & qz1=qz0+qkz1/2.0d0
& & & & & & & && & px1=px0+pkx1/2.0d0
& && && && & py1=py0+pky1/2.0d0
& && && && & pz1=pz0+pkz1/2.0d0
& && &&&qkx2=h*qx(qy1,qz1,a)
& && &&&qky2=h*qy(qx1,qy1,qz1,py1,b,c,k1,k2)
& && &&&qkz2=h*qz(qx1,qz1,d)
& & & && &pkx2=h*px(py1,pz1,a)
& && &&&pky2=h*py(px1,py1,pz1,qy1,b,c,k1,k2)
& && &&&pkz2=h*pz(px1,pz1,d)
& && &&&qx1=qx0+qkx2/2.0d0
& && &&&qy1=qy0+qky2/2.0d0
& && &&&qz1=qz0+qkz2/2.0d0
& & & && &px1=px0+pkx2/2.0d0
& && &&&py1=py0+pky2/2.0d0
& && &&&pz1=pz0+pkz2/2.0d0
& && &&&qkx3=h*qx(qy1,qz1,a)
& && &&&qky3=h*qy(qx1,qy1,qz1,py1,b,c,k1,k2)
& && &&&qkz3=h*qz(qx1,qz1,d)
& & & && &pkx3=h*px(py1,pz1,a)
& && &&&pky3=h*py(px1,py1,pz1,qy1,b,c,k1,k2)
& && &&&pkz3=h*pz(px1,pz1,d)
& && &&&qx1=qx0+qkx3
& && &&&qy1=qy0+qky3
& && &&&qz1=qz0+qkz3
& && &&&px1=px0+pkx3
& && &&&py1=py0+pky3
& && &&&pz1=pz0+pkz3
& && &&&qkx4=h*qx(qy1,qz1,a)
& && &&&qky4=h*qy(qx1,qy1,qz1,py1,b,c,k1,k2)
& && &&&qkz4=h*qz(qx1,qz1,d)
& & & && &pkx4=h*px(py1,pz1,a)
& && &&&pky4=h*py(px1,py1,pz1,qy1,b,c,k1,k2)
& && &&&pkz4=h*pz(px1,pz1,d)
& && &&&qx1=qx0+(qkx1+2.0*qkx2+2.0*qkx3+qkx4)/6.0d0
& && &&&qy1=qy0+(qky1+2.0*qky2+2.0*qky3+qky4)/6.0d0
& && &&&qz1=qz0+(qkz1+2.0*qkz2+2.0*qkz3+qkz4)/6.0d0
& && &&&px1=px0+(pkx1+2.0*pkx2+2.0*pkx3+pkx4)/6.0d0
& && &&&py1=py0+(pky1+2.0*pky2+2.0*pky3+pky4)/6.0d0
& && &&&pz1=pz0+(pkz1+2.0*pkz2+2.0*pkz3+pkz4)/6.0d0
& & & && & qx0=qx1& && && &
& & & && & qy0=qy1& && && && &
& & & && & qz0=qz1
& & & && & px0=px1& &
& && && &py0=py1& && && &
& & & && & pz0=pz1
& & & & !响应系统的时间序列写出
& & & & delta=((z(1,i)-z(4,i))**2.0+(z(2,i)-z(5,i))**2.0+
& &&&&(z(3,i)-z(6,i))**2.0)**0.5
30& &&&continue
& && &if(delta.le.eps)then
& && &&&write(10,'(3f15.6)')k1,k2,0
& & & & write(*,'(3f15.6)')k1,k2,0
& & & & else
& && &&&write(10,'(3f15.6)')k1,k2,1
& & & & write(*,'(3f15.6)')k1,k2,1
& & & & endif
& & & & enddo
& & & & enddo
& && & close(10)
& & & & end
& && &&&double precision function qx(y1,z1,a)
& && &real*8 y1,z1,a
& && &&&qx=y1-a*z1
& && &&&return
& && &&&end
& && &&&double precision function qy(x1,y1,z1,y2,b,c,k1,k2)
& && & double precision x1,y1,z1,y2,b,c,k1,k2
& && && &qy=-x1+2*b*y1+c*z1-k1*(y1-y2)+k2*(y1**2.0-y2**2.0)
& & & && & return
& && &&&end
& && &&&double precision function qz(x1,z1,d)
& && &&&double precision x1,z1,d
& && &&&qz=d*(x1-z1**3.0+z1)
& && &&&return
& && &&&end
& & & &&&double precision function px(y2,z2,a)
& && &&&double precision y2,z2,a
& && &&&px=y2-a*z2
& && &&&return
& && &&&end
& && & double precision function py(x2,y2,z2,y1,b,c,k1,k2)
& && &&&double precision x2,y2,z2,y1,b,c,k1,k2
& && && &py=-x2+2*b*y2+c*z2+k1*(y1-y2)-k2*(y1**2.0-y2**2.0)
& & & && & return
& && &&&end
& && & double precision function pz(x2,z2,d)
& && &&&double precision x2,z2,d
& && &&&pz=d*(x2-z2**3.0+z2)
& && &&&return
& && &&&end
z是误差函数&&就是两个方程组&&对应变量的差值&&例如 第一个系统的x和第二个系统的x的差值&&一次类推y z&&总共是三对六变量
恩&&是的&&你写了调试没有?我目前在外地不在学校&&调试不了
这个是解决那个误差函数的吗?作为一个子函数来调用的吗》?整体的调试了没有?最近家里有点事!
我不知道你的误差函数是不是通常所指 的那个:
erf(x)=\frac{2}{\pi}\int ^x_0{exp{-t^2}dt}
误差函数是这样的:e=((x(:,4)-x(:,1)).^2+(x(:,5)-x(:,2)).^2+(x(:,6)-x(:,3)).^2).^0.5;& &X1 X2 X3 X4 X5 X6 分别对应两系统的六变量
关于【求助】四阶龙格-库塔方法!!!!的相关话题在小木虫APP已经有190位虫友给出了详细回复。
赶快查看回复吧!
学术必备与600万学术达人在线互动!
扫描下载送金币
浏览器进程
打开微信扫一扫
随时随地聊科研用四阶龙格-库塔法解求解微分方程初值问题_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
用四阶龙格-库塔法解求解微分方程初值问题
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 四阶龙格库塔算法 的文章

 

随机推荐