Fortran Coder

楼主: 薛定谔方程
打印 上一主题 下一主题

[其他行业算法] 差分法解一维含时薛定谔方程,急...

[复制链接]

59

帖子

2

主题

0

精华

大师

F 币
810 元
贡献
476 点
楼主
发表于 2017-1-3 20:11:06 | 显示全部楼层
时间步长选着不合适
你可以找本时域有限差分法(FDTD)看看,
附件是一个解释


评分

参与人数 1贡献 +9 收起 理由
vvt + 9 赞一个!

查看全部评分

59

帖子

2

主题

0

精华

大师

F 币
810 元
贡献
476 点
沙发
发表于 2017-1-5 19:56:19 | 显示全部楼层
你搜一下courant condition
双曲类偏微分方程差分法求解,对dx,dy,dt等有一定要求,你自己搜一下

59

帖子

2

主题

0

精华

大师

F 币
810 元
贡献
476 点
板凳
发表于 2017-1-5 22:39:40 | 显示全部楼层
[Fortran] 纯文本查看 复制代码
do j=1,n-1
        do i=2,m-1
            x(i)=i*h
            t(j+1)=(j+1)*tao
            y(i,j+1)=y(i,j)+tao*((y(i+1,j)-2*y(i,j)+y(i-1,j))/(h**2))
            write(22,*) x(i),t(j+1),y(i,j+1)
        end do
    end do

这样求解不行
试一下这样
[Fortran] 纯文本查看 复制代码
do k=1,m*n
do j=1,n-1
        do i=2,m-1
            x(i)=i*h
            t(j+1)=(j+1)*tao
            y(i,j+1)=y(i,j)+tao*((y(i+1,j)-2*y(i,j)+y(i-1,j))/(h**2))
            if(k==m*n)write(22,*) x(i),t(j+1),y(i,j+1)
        end do
    end do
enddo

59

帖子

2

主题

0

精华

大师

F 币
810 元
贡献
476 点
地板
发表于 2017-1-6 11:48:11 | 显示全部楼层
你是用迭代法求解,你只迭代了一次,对于AX=B这样的方程至少要迭代A的阶数次才能得到近似解,你的那两层循环只是把边值在整个区域“匀和”了一次,你需要“匀和”N次结果才能比较接近解
或说回来,如果你先形成细数矩阵A,然后用直接法求解,X=A^{-1}B就不会有问题
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-2 23:43

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表