爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3369|回复: 8

[求助] Fortran编程求助

[复制链接]

新浪微博达人勋

发表于 2013-11-15 15:18:24 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
对以下算法进行fortran编程:
1.jpg

其中xn是一维数组,也就是说每迭代计算一步,Y数组就扩大一维,对于这样的算法要怎么编程呢?求Fortran大神帮助,谢谢!(不知道我有没有将我的问题说清楚)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-11-15 15:34:27 | 显示全部楼层
嗯,不明白你最后是要一个算式还是要一个结果。
不过不管怎么说,这看起来都不难,为啥不先动手试试呢。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-11-15 16:31:02 | 显示全部楼层
本帖最后由 Delta 于 2013-11-15 16:39 编辑

这样的算法是不科学

首先,数组的维数在声明以后是不可改变的,除了reshape可以,但大小一旦确定则绝不可更改,没试过用指针可不可以实现
其次,Fortran对数组维数是有限制的,77/95/03分别多少可以去相应的Fortran标准去查

所以,修改算法,看看用allocatable数组是否可同样实现,粗略看下,应该是可以的。
尽量降低数组维数是编程基本原则
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-11-15 18:04:48 | 显示全部楼层

我最大要算到17维,allocate不是只能定义每一维上不知道有多少个数的数组嘛,还能定义层不知道多少维数的数组?我的设想是每算一步,将算到的多维数组转化成二维的,不知道这个是否可行
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-11-15 18:43:31 | 显示全部楼层
声明两个可变大小数组,交替allocate、赋值、deallocate不知是否可行
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-11-19 14:27:08 | 显示全部楼层
一种可行方案时,每算一步就将结果输出,下一步再读进来;每一步的计算可以想办法通过子程序的迭代进行,可以只需要一维数组。你这个程序,想一下子弄个数组一起算了,不太可能,fortran中,可变数组变的只是长度,而不是维数。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-11-20 08:18:33 | 显示全部楼层
IMPLICIT NONE
INTEGER::lobs,mobs
REAL,DIMENSION(lobs)::ry,rx
ry(1)=f(x(1))
DO mobs=2,n-1
   ry(mobs)=f(x(i))*ry(i-1)
ENDDO
END
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-11-20 08:18:54 | 显示全部楼层
IMPLICIT NONE
INTEGER::lobs,mobs
REAL,DIMENSION(lobs)::ry,rx
ry(1)=f(x(1))
DO mobs=2,n
   ry(mobs)=f(x(i))*ry(i-1)
ENDDO
END
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-11-20 08:19:21 | 显示全部楼层
第一个下标搞错了
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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