Fortran Coder

查看: 7106|回复: 6
打印 上一主题 下一主题

[其他行业算法] 拟牛顿法求解轴承静力学模型

[复制链接]

5

帖子

2

主题

0

精华

入门

F 币
34 元
贡献
18 点
跳转到指定楼层
楼主
发表于 2014-12-18 14:51:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人借鉴徐士良的Fortran常用算法程序集的拟牛顿法求解非线性方程组,方程总共3个方程3个未知量,求解发现计算老是出现error,或者fail求解失败。初值与计算步长也不知道如何选取,附件中是我编写的程序,求大神支招。
GAUSS.F90与NTN.F90是借鉴的徐士良的程序(电子版可在百度上随意搜到---[size=14.3999996185303px]Fortran常用算法程序集)。FS为我的方程,NTN0是主函数。FS中的Fa,Fr,M分别为轴向力,径向力与力矩,数值可变化,一般更改Fa为0-40000,Fr=0,M=0。 X为未知量,y为方程组。


如果大神有高招,如果方便的话,希望不吝赐教。多谢。

FS.F90

2.6 KB, 下载次数: 30

方程组

GAUSS.F90

1.88 KB, 下载次数: 13

高斯消去法

NTN.F90

1.8 KB, 下载次数: 13

拟牛顿法

NTN0.F90

360 Bytes, 下载次数: 13

主函数

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

796

帖子

2

主题

0

精华

大宗师

F 币
3787 元
贡献
2266 点
沙发
发表于 2014-12-18 18:17:19 | 只看该作者
太复杂了。你可以先用简单的方程去调试代码,方程太复杂,调试很难。

5

帖子

2

主题

0

精华

入门

F 币
34 元
贡献
18 点
板凳
 楼主| 发表于 2014-12-18 19:19:25 | 只看该作者
li913 发表于 2014-12-18 18:17
太复杂了。你可以先用简单的方程去调试代码,方程太复杂,调试很难。

其实方程形式很简单,估计就是中间变量太多了。我现在想不出方程该如何简化?我想问一下你对拟牛顿法了解吗?  对于初值和步长的选择我很困惑。还有就是拟牛顿法的收敛方向我也不是很清楚

796

帖子

2

主题

0

精华

大宗师

F 币
3787 元
贡献
2266 点
地板
发表于 2014-12-19 15:05:02 | 只看该作者
方法不懂。只能讲讲调试代码的技巧。先用已知解的简单方程去调试代码,这样比较容易找出逻辑错误(计算结果不符合预期)。

5

帖子

2

主题

0

精华

入门

F 币
34 元
贡献
18 点
5#
 楼主| 发表于 2014-12-23 09:28:51 | 只看该作者
li913 发表于 2014-12-19 15:05
方法不懂。只能讲讲调试代码的技巧。先用已知解的简单方程去调试代码,这样比较容易找出逻辑错误(计算结果 ...

ok,多谢

59

帖子

2

主题

0

精华

大师

F 币
810 元
贡献
476 点
6#
发表于 2015-3-21 23:11:10 | 只看该作者
你的方程最好写出来,如果是非线性的方程组,你在牛顿法中,雅克比矩阵往往接近奇异,高斯消元法往往不能进行下去,即便能进行下去,求解结果也未必正确,看你的程序里面好象没有雅克比矩阵,你说的拟牛顿法也不像,里面也没看见海塞矩阵。

牛顿法是这样的:假设你的方程组用F表示,S = X_{n+1}-X_n;假设J是雅克比矩阵,迭代是这样:S =- (J^tJ)^{-1}J^tF(X_n);X_{n+1} = X_n +S

2

帖子

0

主题

0

精华

新人

F 币
15 元
贡献
4 点
7#
发表于 2023-8-4 15:47:34 | 只看该作者
您好。请问您的问题解决了吗?
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-4-20 11:09

Powered by Tencent X3.4

© 2013-2024 Tencent

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