Fortran Coder

楼主: 薛定谔方程

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

[复制链接]

56

帖子

1

主题

0

精华

大师

F 币
668 元
贡献
412 点
发表于 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
回复 支持 反对

使用道具 举报

8

帖子

1

主题

0

精华

入门

F 币
50 元
贡献
24 点
 楼主| 发表于 2017-1-5 23:22:03 | 显示全部楼层
kerb 发表于 2017-1-5 22:39
do j=1,n-1
        do i=2,m-1
            x(i)=i*h

加个k的目的是什么?感觉除了一直算下去、然后输出同样的结果,并没有什么区别呀?另外,电脑已经算10分钟了
明天起床看看库朗条件吧,谢谢啦

56

帖子

1

主题

0

精华

大师

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

8

帖子

1

主题

0

精华

入门

F 币
50 元
贡献
24 点
 楼主| 发表于 2017-1-6 16:26:57 来自移动端 | 显示全部楼层
并不是太理解您的意思,但我还是让电脑算了一下,结果和以前一样(昨天可能运行其他内容,所以速度较慢吧,今天挺快的)。库朗条件貌似没有应用到复数范围内的吧?fdtd倒是有篇论文,或许可以借鉴一下,正在研究
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|QQ群|Fcode

GMT+8, 2017-11-24 04:12

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

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