24小时热门版块排行榜    

查看: 738  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 今年也是没消息就是没中么 +4 vito刘 2026-06-13 5/250 2026-06-14 09:30 by zzahkj
[找工作] *囍 +4 m584r2z4j3 2026-06-12 4/200 2026-06-14 09:06 by 8bmv3h4hvh
[硕博家园] T^T +7 m584r2z4j3 2026-06-11 8/400 2026-06-14 08:34 by 8bmv3h4hvh
[考博] →_→ +4 q1zg6x4lf3 2026-06-12 4/200 2026-06-14 08:28 by 8bmv3h4hvh
[硕博家园] O(∩_∩)O +6 jk31rb6vyz 2026-06-12 8/400 2026-06-14 08:10 by 8bmv3h4hvh
[公派出国] π_π +5 m584r2z4j3 2026-06-11 5/250 2026-06-14 08:08 by 8bmv3h4hvh
[考研] ╭(╯ε╰)╮ +5 m584r2z4j3 2026-06-11 5/250 2026-06-14 08:03 by 8bmv3h4hvh
[基金申请] 函评 +3 布布和一二 2026-06-13 3/150 2026-06-13 23:35 by 芋圆香飘飘
[找工作] 售SCI文章,我:8.O.5.51O.5.4,科目齐全,可十急 +3 q1zg6x4lf3 2026-06-12 3/150 2026-06-13 19:07 by 1js5n6upxm
[公派出国] +4 q1zg6x4lf3 2026-06-12 4/200 2026-06-13 19:05 by 1js5n6upxm
[文学芳草园] 咸菜 +3 myrtle 2026-06-10 3/150 2026-06-13 18:29 by ahsoarli
[考博] π_π +4 m584r2z4j3 2026-06-11 4/200 2026-06-13 18:25 by lkmi35jdzt
[考研] o>_<o +5 m584r2z4j3 2026-06-11 5/250 2026-06-13 18:22 by lkmi35jdzt
[考博] T^T +4 jk31rb6vyz 2026-06-12 4/200 2026-06-13 12:09 by 80j16ujcu8
[找工作] 售SCI文章,我:8.O.5.51O.5.4,科目齐全,可十急 +4 q1zg6x4lf3 2026-06-12 4/200 2026-06-13 08:53 by t4hz8376wy
[论文投稿] →_→ +5 m584r2z4j3 2026-06-11 5/250 2026-06-13 08:13 by t4hz8376wy
[基金申请] 前几天时间戳更新了 +8 vito刘 2026-06-11 13/650 2026-06-12 14:17 by BlakeReary
[教师之家] AASSDDFF +3 m584r2z4j3 2026-06-11 3/150 2026-06-12 11:28 by zs48m4lz8g
[考博] 还有课题组有博士名额吗 +5 冻雨天 2026-06-07 6/300 2026-06-08 20:59 by RCS_tyro
[考博] 博士申请 +3 张城斐 2026-06-07 3/150 2026-06-08 09:15 by A大朋同学
信息提示
请填处理意见