24小时热门版块排行榜    

查看: 3103  |  回复: 17

宇天旅梦

铜虫 (小有名气)

[求助] 编一个fortran程序

需要一个fortran程序,比较简单的那种,例如f=((5x+6z)*e^(2i) )/(2x-z),其中z=(3y-1)*(x+2)

要求输出的结果是三列数据,分别对应x,y,f .并且每列有20个数。

这三组数据是要导入orgin中进行图像模拟的。
初学fortran,很多东西还不连贯。
请大师们对上面给的式子编个程序示范一下。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

phy_yo

铁虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
open(10,file='data.dat',status='unknown')
real*8 x,y,z,x(20),y(20)
do 1 i=1,20
input (*,*)  x,y
x(i)=x
y(i)=y
1 continue
do 2 1,20
z=(3y(i)-1)*(x(i)+2)
f=((5x+6z)*e^(2i) )/(2x-z)
write(*,*) x(i),y(i),f
write(10,*) x(i),y(i),f
2 continue
pause
end
网络错误 无法获取数据
2楼2013-08-24 20:27:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

宇天旅梦

铜虫 (小有名气)

引用回帖:
2楼: Originally posted by phy_yo at 2013-08-24 20:27:45
open(10,file='data.dat',status='unknown')
real*8 x,y,z,x(20),y(20)
do 1 i=1,20
input (*,*)  x,y
x(i)=x
y(i)=y
1 continue
do 2 1,20
z=(3y(i)-1)*(x(i)+2)
f=((5x+6z)*e^(2i) )/(2x-z)
write(*,* ...

式子中的 i 是虚数
3楼2013-08-24 22:35:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

phy_yo

铁虫 (小有名气)

【答案】应助回帖

引用回帖:
3楼: Originally posted by 宇天旅梦 at 2013-08-24 22:35:22
式子中的 i 是虚数...

哦 那就把real*8改成complex*16
然后再在前面加一行parameter(i=(0,1))

[ 发自手机版 http://muchong.com/3g ]
网络错误 无法获取数据
4楼2013-08-24 23:14:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

宇天旅梦

铜虫 (小有名气)

引用回帖:
4楼: Originally posted by phy_yo at 2013-08-24 23:14:52
哦 那就把real*8改成complex*16
然后再在前面加一行parameter(i=(0,1))
...

运行不了啊,提示有11个错。我用的是fortran90.
下面这些是显示的错误:
--------------------Configuration: Textxcx - Win32 Debug--------------------
Compiling Fortran...
C:\Users\Administrator\Desktop\Textxcx.for
C:\Users\Administrator\Desktop\Textxcx.for(6) : Error: Syntax error, found IDENTIFIER 'X' when expecting one of: ( % . = =>
      input (*,*)  x,y
-------------------^
C:\Users\Administrator\Desktop\Textxcx.for(10) : Error: Syntax error, found INTEGER_CONSTANT '20' when expecting one of: <END-OF-STATEMENT> ; <IDENTIFIER>
      do 2 1,20
-------------^
C:\Users\Administrator\Desktop\Textxcx.for(11) : Error: Syntax error, found IDENTIFIER 'Y' when expecting one of: * :: , <END-OF-STATEMENT> ; : ) (/ [ + - . ] /) ** / > // .LT. < ...
      z=(3y(i)-1)*(x(i)+2)
----------^
C:\Users\Administrator\Desktop\Textxcx.for(12) : Error: Unrecognized token '^' skipped
      f=((5x+6z)*e^(2i) )/(2x-z)
------------------^
C:\Users\Administrator\Desktop\Textxcx.for(12) : Error: Syntax error, found IDENTIFIER 'X' when expecting one of: * :: , <END-OF-STATEMENT> ; : ) (/ [ + - . ] /) ** / > // .LT. < ...
      f=((5x+6z)*e^(2i) )/(2x-z)
-----------^
C:\Users\Administrator\Desktop\Textxcx.for(3) : Error: A specification statement cannot appear in the executable section.
      parameter(i=(0,1))
------^
C:\Users\Administrator\Desktop\Textxcx.for(4) : Error: A specification statement cannot appear in the executable section.
complex*16 x,y,z,x(20),y(20)
--------^
C:\Users\Administrator\Desktop\Textxcx.for(7) : Error: This name has not been declared as an array.   [X]
      x(i)=x
------^
C:\Users\Administrator\Desktop\Textxcx.for(8) : Error: This name has not been declared as an array.   [Y]
      y(i)=y
------^
C:\Users\Administrator\Desktop\Textxcx.for(10) : Error: An unterminated block exists.
      do 2 1,20
^
C:\Users\Administrator\Desktop\Textxcx.for(10) : Error: This label is undefined.   [21]
      do 2 1,20
---------^
Error executing df.exe.

Textxcx.exe - 11 error(s), 0 warning(s)
5楼2013-08-24 23:27:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

phy_yo

铁虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
宇天旅梦: 金币+15, ★★★★★最佳答案, 很帮助 2013-08-25 22:31:16
抱歉 之前写得太着急了 所以献丑啦 哈哈
        parameter(n=20)
        integer k
        real*8 x1,x2,y1,y2
        complex*16 z,x(n),y(n),i,f
        open(10,file='data.dat',status='unknown')
        i=(0,1)
        do 1 k=1,20
        print*, "insert xr,","xi,","yr,","yi"
        read*, x1,x2,y1,y2
        x(k)=cmplx(x1,x2)
        y(k)=cmplx(y1,y2)
1        continue
        do 2 k=1,20
        z=(3*y(k)-1)*(x(k)+2)
        f=((5*x(k)+6*z)*zexp(2*i))/(2*x(k)-z)
        write(*,*) x(k),y(k),f
        write(10,*) x(k),y(k),f
2         continue
        pause
        end
以上 fortran77测试后可用  x,y的输入是键盘输入
网络错误 无法获取数据
6楼2013-08-25 09:21:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

宇天旅梦

铜虫 (小有名气)

引用回帖:
6楼: Originally posted by phy_yo at 2013-08-25 09:21:29
抱歉 之前写得太着急了 所以献丑啦 哈哈
        parameter(n=20)
        integer k
        real*8 x1,x2,y1,y2
        complex*16 z,x(n),y(n),i,f
        open(10,file='data.dat',status='unknown')
        i=(0,1)
        do 1 k=1,20
        print*, &q ...

嗯,多谢啦。

程序运行时为什么要输入4个数,式子只要x,y啊,
print*, "insert xr,","xi,","yr,","yi"
        read*, x1,x2,y1,y2
        x(k)=cmplx(x1,x2)
        y(k)=cmplx(y1,y2)
这一段为何要这样?

如果x按照从0开始,每运行出一个结果后自动加0.1,
y从0开始,每次加0.01,这样自动输入数据,不用手动,这怎么弄啊。
7楼2013-08-25 10:50:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

phy_yo

铁虫 (小有名气)

引用回帖:
7楼: Originally posted by 宇天旅梦 at 2013-08-25 10:50:28
嗯,多谢啦。

程序运行时为什么要输入4个数,式子只要x,y啊,
print*, "insert xr,","xi,","yr,","yi"
        read*, x1,x2,y1,y2
        x(k)=cmplx(x1,x2)
   ...

既然运算式里有虚数符号  x和y也就用虚数形式表示了  当然  如果他是实数  虚部为零就可以了
至于设定均匀步长的自变量  你仔细看看fortran的循环体格式  自己就能写出来
如要x从0到1.9,步长为0.1  则:
        x(1)=0
        do 10 i=1,19
        x(i+1)=x(i)+0.1
10        continue
网络错误 无法获取数据
8楼2013-08-25 14:29:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

宇天旅梦

铜虫 (小有名气)

引用回帖:
8楼: Originally posted by phy_yo at 2013-08-25 14:29:45
既然运算式里有虚数符号  x和y也就用虚数形式表示了  当然  如果他是实数  虚部为零就可以了
至于设定均匀步长的自变量  你仔细看看fortran的循环体格式  自己就能写出来
如要x从0到1.9,步长为0.1  则:
        x(1) ...

这个循环现在差不多了。
还有几个小问题:
1、还是不明白为什么要输入4个数呢?
2、real*8 x1,x2,y1,y2
        complex*16 z,x(n),y(n),i,f 中,这里的8和16是什么意思?规定这样吗?
3、open语句中为何要有status='unknown',这又表示什么?

再次感谢你的回答
9楼2013-08-25 17:02:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

phy_yo

铁虫 (小有名气)

引用回帖:
9楼: Originally posted by 宇天旅梦 at 2013-08-25 17:02:44
这个循环现在差不多了。
还有几个小问题:
1、还是不明白为什么要输入4个数呢?
2、real*8 x1,x2,y1,y2
        complex*16 z,x(n),y(n),i,f 中,这里的8和16是什么意思?规定这样吗?
3、open语句中为何要有 ...

虚数可以看成两个实数组成 实部一个 虚部一个
real*8 x1,x2,y1,y2 就是定义四个精度为8位的实数 这样就可以组成两个虚数
complex*16 z,x(n),y(n),i,f   就好理解了 就是定义精度为8位的虚数(实质是两个精度为8的实数)
status='unknown' 是规定   新建的文本  没有特别要求  就以这个做声明
网络错误 无法获取数据
10楼2013-08-25 19:05:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 宇天旅梦 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 什么时候开奖? +4 CrisMessi 2026-08-18 4/200 2026-08-19 00:53 by gatelove
[基金申请] 咱们一起用铁证分析2026国家社科基金中标与否 +7 启萌科技 2026-08-12 27/1350 2026-08-18 21:44 by Noways
[教师之家] 为什么余额宝的年化利率越来越低?主要原因有哪些? +3 瞬息宇宙 2026-08-15 3/150 2026-08-18 21:40 by xiaohuixin
[基金申请] 2027广东省杰青 +3 奶牛小黑 2026-08-15 9/450 2026-08-18 20:09 by 奶牛小黑
[基金申请] 朋友圈看到的 +4 wangzilk 2026-08-18 5/250 2026-08-18 19:25 by wangzilk
[基金申请] 明天放榜? +5 Shxjjxjkx 2026-08-18 5/250 2026-08-18 18:14 by -大大大大大-
[基金申请] 时间戳变了,能看出什么问题? +8 基诺咪客 2026-08-17 11/550 2026-08-18 17:13 by 悠然熊猫
[基金申请] 重要消息,中午系统在维护 +9 yuleib84 2026-08-18 10/500 2026-08-18 16:52 by archvillain
[论文投稿] 投稿咨询 +4 wwm09 2026-08-17 6/300 2026-08-18 15:36 by wwm09
[基金申请] 今天维护系统维护 祝所有人 高中 +8 gjjjzhong 2026-08-18 9/450 2026-08-18 13:01 by 家与远方
[基金申请] 哪位老哥知道今年的国自然具体哪一天放榜? +13 Ldrop2023 2026-08-13 16/800 2026-08-18 12:25 by 淀粉搬运工
[基金申请] 快农历七夕节了,轻松一下,男人悄悄话,女施主请不要进来。 +4 Tide man 2026-08-14 5/250 2026-08-18 11:35 by Tide man
[基金申请] 93BebMhtakh前后11位开头都是大写 +4 且听虎啸 2026-08-17 5/250 2026-08-18 00:49 by 蔡棒棒菂
[基金申请] 感觉是下周放榜了 +6 angus9576 2026-08-17 11/550 2026-08-17 23:57 by angus9576
[基金申请] filecode=后面第一个是大写字母 +8 wangze12014 2026-08-14 10/500 2026-08-17 17:05 by xter9665
[基金申请] 今天系统多次维护,明天很可能放榜! +8 zju2000 2026-08-16 9/450 2026-08-17 12:20 by lmz0216
[精细化工] 招聘 金属平磨液,抛光液研发工程师 +3 小天0311 2026-08-14 3/150 2026-08-16 07:31 by H9PLUS
[基金申请] 各位道友,我要去昆明玩几天,回来见。 +7 Tide man 2026-08-14 8/400 2026-08-15 01:11 by arzu_hma
[基金申请] Filecode 又变了,巨变 +3 WH3796 2026-08-12 4/200 2026-08-13 14:13 by 小木虫6752397
[基金申请] 结合人工智能,周易传统文化,filecode打分制来了,3分以上希望很大。 +3 Tide man 2026-08-12 4/200 2026-08-13 08:35 by ZJTJZ
信息提示
请填处理意见