24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 678  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 282求调剂 +11 呼吸都是减肥 2026-04-01 11/550 2026-04-02 12:58 by GouQ
[考研] 材料专硕322分 +11 哈哈哈吼吼吼哈 2026-04-01 11/550 2026-04-02 10:52 by lnilvy
[考研] 292求调剂 +14 是妍子也是研子 2026-03-30 14/700 2026-04-02 10:17 by sanrepian
[考研] 336求调剂 +5 kiyy 2026-04-01 5/250 2026-04-02 07:14 by chixmc
[考研] 304求调剂 +12 素年祭语 2026-03-31 15/750 2026-04-01 22:41 by peike
[考研] 275求调剂 +12 waltzh 2026-04-01 12/600 2026-04-01 21:44 by chyhaha
[考研] 环境工程297分求调剂一志愿杭高院 +10 GENJIOW 2026-03-31 11/550 2026-04-01 21:38 by GENJIOW
[考研] 307分求调剂 +14 (o~o) 2026-03-31 15/750 2026-04-01 20:43 by longlotian
[考研] 化学0703 调剂 306分 一志愿211 +12 26要上岸 2026-03-28 12/600 2026-04-01 11:10 by chemdavid
[考研] 085701环境工程,267求调剂 +17 minht 2026-03-26 17/850 2026-04-01 09:11 by xiayizhi
[考研] 070300化学专业279调剂 +10 哈哈哈^_^ 2026-03-31 10/500 2026-03-31 23:13 by liu823948201
[考研] 353求调剂 +3 江上枫_26 2026-03-28 3/150 2026-03-31 15:53 by jp9609
[考研] 286求调剂 +6 Faune 2026-03-30 6/300 2026-03-31 14:37 by jp9609
[考研] 287求调剂 +17 land xuxu 2026-03-26 17/850 2026-03-31 11:16 by Zzxxxs
[考研] 22408 359分调剂 +4 Qshers 2026-03-27 8/400 2026-03-31 08:53 by Qshers
[考研] 一志愿大连理工大学材料求调剂 +6 Gymno 2026-03-30 6/300 2026-03-31 07:26 by 无际的草原
[考研] 11408总分309,一志愿东南大学求调剂,不挑专业 +5 天赋带到THU 2026-03-29 6/300 2026-03-30 20:49 by dick_runner
[考研] 291求调剂 +5 Y-cap 2026-03-29 6/300 2026-03-29 13:18 by mumin1990
[考研] 340求调剂 +6 Amber00 2026-03-26 6/300 2026-03-29 12:06 by 无际的草原
[考研] 331环境科学与工程求调剂 +3 熠然好运气 2026-03-27 3/150 2026-03-28 04:11 by fmesaito
信息提示
请填处理意见