Fortran Coder

查看: 7605|回复: 8
打印 上一主题 下一主题

[其他行业算法] 高斯牛顿法,迭代无法终止(死循环)

[复制链接]

5

帖子

2

主题

0

精华

入门

F 币
42 元
贡献
19 点
跳转到指定楼层
#
发表于 2014-10-17 11:12:45 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
在用高斯牛顿法计算数据时,当输入的数据是连续时(比如2、3、4、5、6)程序能跳出循环,但是当输入数据不连续时,会出现死循环情况。由于本人能力有限,无法找出其中的原因,希望那位大侠能够帮我指出。由于代码比较长,所以我就打包上传。
本人使用广义逆修正。

高斯牛顿代码.zip

3.6 KB, 下载次数: 20

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

12

帖子

2

主题

0

精华

熟手

小菜鸟

F 币
270 元
贡献
131 点
QQ
8#
发表于 2014-10-18 20:33:08 | 只看该作者
百事可乐 发表于 2014-10-17 22:56
有一个错误,可能不是主要原因,但至少是一个隐患.

主程序里的 v(col) 应该是二维数组.v(col,col) ??

这个是用徐士良算法集里面的SVD奇异值分解子程序出了问题。徐书这个子程序不稳定。。。

评分

参与人数 1F 币 +8 贡献 +8 收起 理由
fcode + 8 + 8

查看全部评分

莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。
料峭春风

100

帖子

0

主题

0

精华

专家

F 币
550 元
贡献
291 点

规矩勋章元老勋章

QQ
7#
发表于 2014-10-17 22:56:28 | 只看该作者
有一个错误,可能不是主要原因,但至少是一个隐患.

主程序里的 v(col) 应该是二维数组.v(col,col) ??

看起来你的问题属于算法问题了,没太多时间细致研究。你可以确认一下,每次迭代,u,v,s,e,work的值是不是需要重置?

5

帖子

2

主题

0

精华

入门

F 币
42 元
贡献
19 点
6#
 楼主| 发表于 2014-10-17 13:38:46 | 只看该作者
楚香饭 发表于 2014-10-17 13:29
OK ,改了以下代码 就可以了

[mw_shl_code=fortran,true]REAL*8::G(row,col),Gt(col,row),GtG(col,col)=0. ...

谢谢你,但是初始化之后,输入数据还是不能

5

帖子

2

主题

0

精华

入门

F 币
42 元
贡献
19 点
5#
 楼主| 发表于 2014-10-17 13:31:21 | 只看该作者
楚香饭 发表于 2014-10-17 13:09
你用的什么编译器?我试过 ivf,cvf,gfortran,都无法跳出循环。

谢谢,我用的是ivf

725

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
657 元
贡献
337 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

地板
发表于 2014-10-17 13:29:27 | 只看该作者
OK ,改了以下代码 就可以了

[Fortran] 纯文本查看 复制代码
REAL*8::G(row,col),Gt(col,row),GtG(col,col)=0.0D0,GtGl(col,col)=0.0D0,ds(row)=0.0D0,dl(row)=0.0D0,d(row)=0.0D0,&
Gtd(col)=0.0D0,Gdm(row)=0.0D0,u(col,col)=0.0D0,v(col)=0.0D0,s(ka)=0.0D0,e(ka)=0.0D0,work(ka)=0.0D0,dd(row)=0.0D0


变量要初始化。

725

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
657 元
贡献
337 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

板凳
发表于 2014-10-17 13:09:05 | 只看该作者
你用的什么编译器?我试过 ivf,cvf,gfortran,都无法跳出循环。

5

帖子

2

主题

0

精华

入门

F 币
42 元
贡献
19 点
沙发
 楼主| 发表于 2014-10-17 12:46:10 | 只看该作者
这是我运行的结果

捕获.JPG (14.76 KB, 下载次数: 258)

捕获.JPG

725

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
657 元
贡献
337 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

楼主
发表于 2014-10-17 12:37:00 | 只看该作者
在我这里,输入 2,3,4,5,6 也一样无法跳出循环。ei 越来越大,最后变成无穷大
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-11-23 10:00

Powered by Tencent X3.4

© 2013-2024 Tencent

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