版块导航
正在加载中...
客户端APP下载
论文辅导
申博辅导
登录
注册
帖子
帖子
用户
本版
应《网络安全法》要求,自2017年10月1日起,未进行实名认证将不得使用互联网跟帖服务。为保障您的帐号能够正常使用,请尽快对帐号进行手机号验证,感谢您的理解与支持!
24小时热门版块排行榜
小木虫论坛-学术科研互动平台
»
计算模拟区
»
程序语言
»
Fortran
»
【求助】问一个FORTRAN程序
7
1/1
返回列表
查看: 628 | 回复: 6
只看楼主
@他人
存档
新回复提醒
(忽略)
收藏
在APP中查看
zyj8119
木虫
(著名写手)
应助: 65
(初中生)
贵宾: 0.003
金币: 915.1
散金: 1440
红花: 35
帖子: 2936
在线: 1329.4小时
虫号: 664177
注册: 2008-11-29
性别: GG
专业: 理论和计算化学
[交流]
【求助】问一个FORTRAN程序
已有3人参与
CODE:
subroutine dsrrt(a,xr,xi,n,m,l,b)
dimension a(n),xr(m),xi(m),b(n)
if(abs(a(1))+1.0.eq.1.0)then
l=0
write(*,5)
return
end if
5 format(1x,'err')
l=1
k=m
is=0
w=1.0
do 10 i=1,n
10 b(i)=a(i)/a(1)
20 pp=abs(b(k+1))
if(pp.lt.1.0e-12)then
xr(k)=0.0
xi(k)=0.0
k=k-1
if(k.eq.1)then
xr(k)=-b(2)*w/b(1)
xi(k)=0.0
return
end if
goto 20
end if
q=pp**(1.0/k)
p=q
w=w*p
do 30 i=1,k
b(i+1)=b(i+1)/q
q=q*p
30 continue
x=0.0001
x1=x
y=0.2
y1=y
g=1.0e+37
dx=1.0
40 u=b(1)
v=0.0
do 50 i=1,k
p=u*x1
q=v*y1
pq=(u+v)*(x1+y1)
u=p-q+b(i+1)
v=pq-p-q
50 continue
g1=u*u+v*v
if(g1.lt.g)goto 105
if(is.ne.0)goto 80
60 t=t/1.67
x1=x-t*dx
y1=y-t*dy
if(k.ge.50)then
p=sqrt(x1*x1+y1*y1)
q=exp(85.0/k)
if(p.ge.q)goto 60
end if
if(t.ge.1.0e-03)goto 40
if(g.le.1.0e-18)goto 90
65 is=1
dd=sqrt(dx*dx+dy*dy)
if(dd.gt.1.0)dd=1.0
dc=6.28/(k+4.5)
70 c=0.0
80 c=c+dc
dx=dd*cos(c)
dy=dd*sin(c)
x1=x+dx
y1=y+dy
if(c.le.6.29)goto 40
dd=dd/1.67
if(dd.gt.1.0e-07)goto 70
90 if(abs(y).le.1.0e-06)then
p=-x
y=0.0
q=0.0
else
p=-2.0*x
q=x*x+y*y
xr(k)=x*w
xi(k)=-y*w
k=k-1
end if
do 100 i=1,k
b(i+1)=b(i+1)-b(i)*p
b(i+2)=b(i+2)-b(i)*p
100 continue
xr(k)=x*w
xi(k)=y*w
k=k-1
if(k.eq.1)then
xr(k)=-b(2)*w/b(1)
xi(k)=0.0
return
end if
goto 20
105 g=g1
x=x1
y=y1
is=0
if(g.le.1.0e-22)goto 90
u1=k*b(1)
v1=0.0
do 110 i=2,k
p=u1*k
q=v1*y
pq=(u1+v1)*(x+y)
u1=p-q+(k-i+1)*b(i)
v1=pq-p-q
110 continue
p=u1*u1+v1*v1
if(p.le.1.0e-20)goto 65
dx=(u*u1+v*v1)/p
dy=(u1*v-v1*u)/p
t=1.0+4.0/k
goto 60
end
dimension a(7),xr(6),xi(6),b(7)
data a/1.0,-5.0,3.0,1.0,-7.0,7.0,-20.0/
n=7
m=6
call dsrrt(a,xr,xi,n,m,l,b)
if(l.ne.0)then
do 400 i=1,m
400 continue
write(*,500)i,xr(i),xi(i)
end if
500 format(1x,'x(',i2,1x,')=',e13.6,2x,'j',2x,e13.6)
end
[
Last edited by 余泽成 on 2010-9-9 at 18:01
]
回复此楼
» 猜你喜欢
请问哪里可以有青B申请的本子可以借鉴一下。
已经有4人回复
真诚求助:手里的省社科项目结项要求主持人一篇中文核心,有什么渠道能发核心吗
已经有6人回复
孩子确诊有中度注意力缺陷
已经有14人回复
三甲基碘化亚砜的氧化反应
已经有4人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
请问有评职称,把科研教学业绩算分排序的高校吗
已经有5人回复
2025冷门绝学什么时候出结果
已经有3人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
AI论文写作工具:是科研加速器还是学术作弊器?
已经有3人回复
高级回复
» 本主题相关价值贴推荐,对您同样有帮助:
fortran程序open文件时的简单问题
已经有3人回复
FORTRAN新手 求助主程序循环问题
已经有10人回复
Fortran 编译问题
已经有9人回复
我编的Simpson积分法fortran程序给不出结果,大侠们看看哪里出了问题?
已经有4人回复
FORTRAN 基础知识讲解
已经有21人回复
请教一个fortran小程序编译出错的问题,谢谢
已经有9人回复
Fortran的格式化输入输出问题
已经有14人回复
有关fortran的一次而问题,希望大家能帮帮忙,谢谢
已经有4人回复
写了一个fortran90的小程序,编译通不过,请大侠帮忙
已经有59人回复
【求助】又有新的问题请大家帮忙
已经有19人回复
【交流】Fortran语言答疑专帖
已经有157人回复
好好学习,天天向上。
1楼
2010-08-07 22:52:12
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
zyj8119
木虫
(著名写手)
应助: 65
(初中生)
贵宾: 0.003
金币: 915.1
散金: 1440
红花: 35
帖子: 2936
在线: 1329.4小时
虫号: 664177
注册: 2008-11-29
性别: GG
专业: 理论和计算化学
老是数组越界,不知道为什么?
赞
一下
回复此楼
好好学习,天天向上。
2楼
2010-08-07 22:52:38
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
snoopyzhao
至尊木虫
(职业作家)
程序强帖: 16
应助: 157
(高中生)
贵宾: 0.02
金币: 18844.7
红花: 29
帖子: 3803
在线: 1422.4小时
虫号: 183750
注册: 2006-02-13
专业: 污染生态化学
★
resonant(金币+1):感谢提供:-) 2010-08-07 23:55:03
zyj8119(金币+4):在寻找,你添加的这个程序好像还是数组越界。 2010-08-08 16:44:09
问题在于你的数组 b 下标变成负值了。你跑一下下面的代码看看,加了几个 write,可以看出问题出在哪里,呵呵……至于怎么改,我不了解你的算法,没有办法……
CODE:
subroutine dsrrt(a,xr,xi,n,m,l,b)
dimension a(n),xr(m),xi(m),b(n)
if(abs(a(1))+1.0.eq.1.0)then
l=0
write(*,5)
return
end if
5 format(1x,'err')
l=1
k=m
is=0
w=1.0
do 10 i=1,n
10 b(i)=a(i)/a(1)
20 pp=abs(b(k+1))
write(*,*) 'i am at line 16', k, pp
if(pp.lt.1.0e-12)then
xr(k)=0.0
xi(k)=0.0
k=k-1
write(*,*) 'i am at line 21', k
if(k.eq.1)then
xr(k)=-b(2)*w/b(1)
xi(k)=0.0
return
end if
goto 20
end if
q=pp**(1.0/k)
p=q
w=w*p
do 30 i=1,k
b(i+1)=b(i+1)/q
q=q*p
30 continue
x=0.0001
x1=x
y=0.2
y1=y
g=1.0e+37
dx=1.0
40 u=b(1)
v=0.0
do 50 i=1,k
p=u*x1
q=v*y1
pq=(u+v)*(x1+y1)
u=p-q+b(i+1)
v=pq-p-q
50 continue
g1=u*u+v*v
if(g1.lt.g)goto 105
if(is.ne.0)goto 80
60 t=t/1.67
x1=x-t*dx
y1=y-t*dy
if(k.ge.50)then
p=sqrt(x1*x1+y1*y1)
q=exp(85.0/k)
if(p.ge.q)goto 60
end if
if(t.ge.1.0e-03)goto 40
if(g.le.1.0e-18)goto 90
65 is=1
dd=sqrt(dx*dx+dy*dy)
if(dd.gt.1.0)dd=1.0
dc=6.28/(k+4.5)
70 c=0.0
80 c=c+dc
dx=dd*cos(c)
dy=dd*sin(c)
x1=x+dx
y1=y+dy
if(c.le.6.29)goto 40
dd=dd/1.67
if(dd.gt.1.0e-07)goto 70
90 if(abs(y).le.1.0e-06)then
p=-x
y=0.0
q=0.0
else
p=-2.0*x
q=x*x+y*y
xr(k)=x*w
xi(k)=-y*w
k=k-1
end if
write(*,*) 'i am at line 88', k
do 100 i=1,k
b(i+1)=b(i+1)-b(i)*p
b(i+2)=b(i+2)-b(i)*p
100 continue
xr(k)=x*w
xi(k)=y*w
k=k-1
if(k.eq.1)then
xr(k)=-b(2)*w/b(1)
xi(k)=0.0
return
end if
write(*,*) 'i am at line 101', k
goto 20
105 g=g1
x=x1
y=y1
is=0
if(g.le.1.0e-22)goto 90
u1=k*b(1)
v1=0.0
do 110 i=2,k
p=u1*k
q=v1*y
pq=(u1+v1)*(x+y)
u1=p-q+(k-i+1)*b(i)
v1=pq-p-q
110 continue
p=u1*u1+v1*v1
if(p.le.1.0e-20)goto 65
dx=(u*u1+v*v1)/p
dy=(u1*v-v1*u)/p
t=1.0+4.0/k
goto 60
end
program test
dimension a(7),xr(6),xi(6),b(7)
data a/1.0,-5.0,3.0,1.0,-7.0,7.0,-20.0/
n=7
m=6
call dsrrt(a,xr,xi,n,m,l,b)
if(l.ne.0)then
do 400 i=1,m
400 continue
write(*,500)i,xr(i),xi(i)
end if
500 format(1x,'x(',i2,1x,')=',e13.6,2x,'j',2x,e13.6)
end
赞
一下
(1人)
回复此楼
3楼
2010-08-07 23:31:38
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
weibangxin
★
nono2009(金币-1):专业区请勿纯表。谢谢。 2010-08-09 06:43:37
zyj8119(金币+1): 2010-09-09 08:29:21
4楼
2010-08-08 00:10:07
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
snoopyzhao
至尊木虫
(职业作家)
程序强帖: 16
应助: 157
(高中生)
贵宾: 0.02
金币: 18844.7
红花: 29
帖子: 3803
在线: 1422.4小时
虫号: 183750
注册: 2006-02-13
专业: 污染生态化学
我说得很清楚啊,我只能找到哪个地方有问题,但我没有能力解决问题,呵呵……
赞
一下
回复此楼
5楼
2010-08-08 21:25:01
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
snoopyzhao
至尊木虫
(职业作家)
程序强帖: 16
应助: 157
(高中生)
贵宾: 0.02
金币: 18844.7
红花: 29
帖子: 3803
在线: 1422.4小时
虫号: 183750
注册: 2006-02-13
专业: 污染生态化学
★
resonant(金币+1):en,goto太多的程序很烦人奈...哈哈 2010-08-08 23:31:08
试着跟了一下,发现太困难了,被里面的 goto 搞晕了?这个程序是你写的吗?如果是,想办法重新理一下结构,尽可能少用 goto……
赞
一下
(1人)
回复此楼
6楼
2010-08-08 22:27:53
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
zyj8119
木虫
(著名写手)
应助: 65
(初中生)
贵宾: 0.003
金币: 915.1
散金: 1440
红花: 35
帖子: 2936
在线: 1329.4小时
虫号: 664177
注册: 2008-11-29
性别: GG
专业: 理论和计算化学
此贴结贴。
回复此楼
好好学习,天天向上。
7楼
2010-09-09 08:29:35
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
相关版块跳转
第一性原理
量子化学
计算模拟
分子模拟
仿真模拟
程序语言
我要订阅楼主
zyj8119
的主题更新
7
1/1
返回列表
如果回帖内容含有宣传信息,请如实选中。否则帐号将被全论坛禁言
普通表情
龙
兔
虎
猫
高级回复
(可上传附件)
百度网盘
|
360云盘
|
千易网盘
|
华为网盘
在新窗口页面中打开自己喜欢的网盘网站,将文件上传后,然后将下载链接复制到帖子内容中就可以了。
信息提示
关闭
请填处理意见
关闭
确定