Fortran Coder

查看: 7295|回复: 4
打印 上一主题 下一主题

[流程控制] 我用k表示个数,为什么出来的个数和k对应不起来?

[复制链接]

7

帖子

2

主题

0

精华

入门

F 币
68 元
贡献
41 点

帅哥勋章

跳转到指定楼层
楼主
发表于 2014-4-11 07:45:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[Fortran] 纯文本查看 复制代码
program test
implicit none
integer :: k, j
real :: E, T1, F1, F, T, V, a
real, PARAMETER :: pi = 3.1415926535897932
write (*,*) '输入V和a,都是原子单位'
read (*,*) V, a
open (unit=100,file='E.dat')
open (unit=200,file='k.dat')
k=int(a*sqrt(2.0*V)/pi)+1   !解的总个数,通过横坐标ε进行判断
write (200,*) k             !看一下解的个数,和后面得到的E的个数应该是相等的
j=1                         !初始解个数为1个
E=0.001                     !开始寻找时E的初始数值
F1=-1.0                     !偶宇称时,表达式在E=0时的初始值
T1=-1.0                     !奇宇称时,表达式在E=0时的初始值
do while (j .LE. k)         !和解的总个数K比较,得到进行的循环的次数
  F=sqrt(E/(V-E))*tan(0.5*a*sqrt(2.0*E))-1.0  ! 偶宇称时化简后的表达式
  T=sqrt(E/(V-E))*tan(0.5*a*sqrt(2.0*E)+pi/2.0)-1.0   !奇宇称时化简后的表达式
  if (F*F1 .LE. 0.0) then                           !寻找满足的E,它使f的符号变化。
    if(abs(F) .LT. abs(F1) .and. F .GT. -1.0) write (100,*) V, E !看看谁和0更近,去进的时候的E
 if(abs(F) .GT. abs(F1) .and. F .GT. -1.0) write (100,*) V, E-0.001  !因为0.001是E的步长
    j=j+1                    !偶宇称得到一个解
   end if
  if (T*T1 .LE. 0.0)  then
    if (abs(T) .LT. abs(T1) .and. T .GT. -1.0) write (100,*) V, E
    if (abs(T) .GT. abs(T1) .and. T .GT. -1.0) write (100,*) V, E-0.001
    j=j+1                    !奇宇称时的一个解
  end if
 F1=F       !把新的f放到f1中,进行下一步的比较
 T1=T       !把新的t放到t1中,在进行下一步比较
 E=E+0.001 ! E的步长
 end do   !do 循环结束,这样随着E的增大,得到了k个解
 end program test




分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

7

帖子

1

主题

0

精华

入门

F 币
98 元
贡献
49 点
沙发
发表于 2014-4-13 22:09:35 | 只看该作者
是怎么对应不起来啊,程序看样没问题啊。

3

帖子

1

主题

0

精华

入门

F 币
47 元
贡献
26 点
板凳
发表于 2014-4-14 12:09:43 | 只看该作者
本帖最后由 Saphy 于 2014-4-14 12:11 编辑

虽然不了解你算的东西,但纯从代码方面来看,问题有两个
1. 当F=F1,T=T1时,不会输出E
2. 当F,T<-1时,也不会输出E
其中2是主要问题,你可以从这方面检查你的计算公式

7

帖子

2

主题

0

精华

入门

F 币
68 元
贡献
41 点

帅哥勋章

地板
 楼主| 发表于 2014-4-17 09:20:50 | 只看该作者
Saphy 发表于 2014-4-14 12:09
虽然不了解你算的东西,但纯从代码方面来看,问题有两个
1. 当F=F1,T=T1时,不会输出E
2. 当F,T ...

谢谢,我会好好看看的,之前没太注意

7

帖子

2

主题

0

精华

入门

F 币
68 元
贡献
41 点

帅哥勋章

5#
 楼主| 发表于 2014-4-17 09:21:22 | 只看该作者
teddy2003 发表于 2014-4-13 22:09
是怎么对应不起来啊,程序看样没问题啊。

按我的分子,k和个数应该是相等的,但是算出来后确实不相等的
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-11-1 09:25

Powered by Tencent X3.4

© 2013-2024 Tencent

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