24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 673  |  回复: 9

zouji1983

金虫 (正式写手)

[求助] 求助一个小程序!

我是fortran的初学者,现在用别人的程序。但我现在需要用newton-raphson解一个非线性方程,例如:lnx+x^3+A=0, 这里我要解的未知数x和常量A都是一个数组,像x是这样一个数组:(1,1,100,100), A是(1,100,100). 我只能从网上找到关于解x不是数组的code,如下:
subroutine calculation (x,A)
        integer ::k  
        real(8) :: x,x0,A
        real(8):: tol

        f(x)=lnx+x**3+A
        df(x)=1/x+3*x**2
        tol=1e-6
        x0=0.2d0
        k=0
        10 k=k+1
        x=x0-f(x0)/df(x0)
        if(abs(x-x0).lt.tol)goto 20
            x0= x
        goto 10
        20 write(*,*) x
                  end do
                end do
                        
end subroutine calculation

但是对于数组来说应该怎么改呢?我想把这个作为一个subroutine。非常感谢各位的帮组!
回复此楼

» 猜你喜欢

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

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

chembetsey

木虫 (小有名气)

【答案】应助回帖


感谢参与,应助指数 +1
jjdg: 金币+1, 感谢说明 2012-12-05 01:49:57
call subroutine的时候把数组元素值传进去就是了,call calculation (x(i,j,k),A(i,j,k))
或者先把数组元素值赋给一个临时变量,再传递进去
2楼2012-12-04 23:00:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zouji1983

金虫 (正式写手)

引用回帖:
2楼: Originally posted by chembetsey at 2012-12-04 23:00:54
call subroutine的时候把数组元素值传进去就是了,call calculation (x(i,j,k),A(i,j,k))
或者先把数组元素值赋给一个临时变量,再传递进去

谢谢你的回复!
所以我不需要把subroutine也写成数组的形式,对吗?
3楼2012-12-04 23:49:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zouji1983

金虫 (正式写手)

引用回帖:
2楼: Originally posted by chembetsey at 2012-12-04 23:00:54
call subroutine的时候把数组元素值传进去就是了,call calculation (x(i,j,k),A(i,j,k))
或者先把数组元素值赋给一个临时变量,再传递进去

我按照你说的做了,编译都过了,但是运行的时候,显示:log domian error. 不知道怎么解决呢?谢谢!
4楼2012-12-04 23:54:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chembetsey

木虫 (小有名气)

【答案】应助回帖


jjdg: 金币+1, 感谢解释 2012-12-05 01:50:07
引用回帖:
4楼: Originally posted by zouji1983 at 2012-12-04 23:54:32
我按照你说的做了,编译都过了,但是运行的时候,显示:log domian error. 不知道怎么解决呢?谢谢!...

因为log(x)中x的值必须大于零,迭代的时候x若小于零,就会出错
5楼2012-12-05 01:47:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zouji1983

金虫 (正式写手)

引用回帖:
5楼: Originally posted by chembetsey at 2012-12-05 01:47:49
因为log(x)中x的值必须大于零,迭代的时候x若小于零,就会出错...

谢谢!我的X已经用绝对值表示了。是不是我传递到subroutine里的是数组元素,所以我subroutine里的变量x也必须是数组呢?还是像现在这样也没有问题?我想让你确认一下这个问题。因为有人说,subroutine里的变量也需要时数组。非常感谢你的帮助!
6楼2012-12-05 16:54:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chembetsey

木虫 (小有名气)

【答案】应助回帖

引用回帖:
6楼: Originally posted by zouji1983 at 2012-12-05 16:54:09
谢谢!我的X已经用绝对值表示了。是不是我传递到subroutine里的是数组元素,所以我subroutine里的变量x也必须是数组呢?还是像现在这样也没有问题?我想让你确认一下这个问题。因为有人说,subroutine里的变量也需 ...

不需要,只要变量类型一致就可以。因为Fortran参数传递的时候是传址,所以可以直接使用数组元素。
7楼2012-12-05 22:12:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zouji1983

金虫 (正式写手)

引用回帖:
7楼: Originally posted by chembetsey at 2012-12-05 22:12:41
不需要,只要变量类型一致就可以。因为Fortran参数传递的时候是传址,所以可以直接使用数组元素。...

谢谢!还想问一下,log的自变量我都用绝对值表示了,为什么还会出现log domain error呢?我的问题比较多,不好意思。谢谢!
8楼2012-12-06 18:44:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chembetsey

木虫 (小有名气)

【答案】应助回帖

引用回帖:
8楼: Originally posted by zouji1983 at 2012-12-06 18:44:33
谢谢!还想问一下,log的自变量我都用绝对值表示了,为什么还会出现log domain error呢?我的问题比较多,不好意思。谢谢!...

绝对值也不行啊,当x=0的时候log(x)一样出错。你需要对x设定范围。
9楼2012-12-06 22:16:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zouji1983

金虫 (正式写手)

引用回帖:
9楼: Originally posted by chembetsey at 2012-12-06 22:16:46
绝对值也不行啊,当x=0的时候log(x)一样出错。你需要对x设定范围。...

我的X的值应该是0.2~0.999之间的,问题是我要解出x的值,他为什么说domain错误呢?
另外,怎样设定x的值呢?
非常感谢!!!我真是编程白痴啊
10楼2012-12-07 23:53:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zouji1983 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 化工调剂303分,过四级 +5 栖梧待风 2026-04-02 5/250 2026-04-02 11:49 by ms629
[考研] 初试301,代码085701环境工程,本硕一致,四六级已过,有二区一作,共发表5篇论文 +4 axibli 2026-04-01 4/200 2026-04-02 11:28 by Sammy2
[考研] 一志愿厦门大学材料工程专硕354找调剂!!! +6 贝呗钡钡 2026-03-30 6/300 2026-04-02 11:25 by Sammy2
[考研] 266分,一志愿电气工程,本科材料,求材料专业调剂 +3 哇呼哼呼哼 2026-04-02 3/150 2026-04-02 10:41 by caotw2020
[考研] 材料调剂 +3 一样YWY 2026-04-02 3/150 2026-04-02 10:37 by longlotian
[考研] 070300化学求调剂 +14 小黄鸭宝 2026-03-30 14/700 2026-04-02 10:07 by oooqiao
[考研] 279求调剂 +6 学而思兮知 2026-04-01 6/300 2026-04-02 09:16 by vgtyfty
[考研] 805600专硕材料与化工348分求调剂 +6 上学啦! 2026-04-01 6/300 2026-04-02 07:49 by 2026材料调剂
[考研] 085600 295分求调剂 +15 W55j 2026-03-30 18/900 2026-04-01 23:00 by 来看流星雨10
[考研] 266分,一志愿电气工程,本科材料,求材料专业调剂 +10 哇呼哼呼哼 2026-04-01 11/550 2026-04-01 21:48 by chyhaha
[考研] 292求调剂 +17 木虫er12138 2026-04-01 17/850 2026-04-01 21:37 by 七度不信任
[考研] 食品学硕362求调剂 +3 xuanxianxian 2026-04-01 3/150 2026-04-01 21:05 by 啊李999
[考研] 266分求材料化工冶金矿业等专业的调剂 +7 哇呼哼呼哼 2026-03-26 7/350 2026-04-01 20:47 by cqupH
[考研] 379求调剂 +3 ?苦瓜不苦 2026-04-01 3/150 2026-04-01 20:09 by 暮云清寒
[考研] 材料与化工(0856)304求B区调剂 +8 邱gl 2026-03-30 16/800 2026-04-01 17:58 by 邱gl
[考研] 省双一流重点一本大学招收调剂 +4 wwwwffffff 2026-03-31 7/350 2026-04-01 15:23 by wwwwffffff
[硕博家园] 博一被送出联培感觉不适应怎么办 +3 全村的狗 2026-03-31 3/150 2026-04-01 10:44 by 328838485
[考研] 085701环境工程,267求调剂 +17 minht 2026-03-26 17/850 2026-04-01 09:11 by xiayizhi
[考研] 一志愿中海洋材料357 +4 麦恩莉. 2026-03-30 4/200 2026-03-31 14:35 by 记事本2026
[考研] 一志愿中海洋320化学工程与技术学硕求调剂 +8 披星河 2026-03-30 8/400 2026-03-31 08:53 by lbsjt
信息提示
请填处理意见