拟牛顿法求解轴承静力学模型
本人借鉴徐士良的Fortran常用算法程序集的拟牛顿法求解非线性方程组,方程总共3个方程3个未知量,求解发现计算老是出现error,或者fail求解失败。初值与计算步长也不知道如何选取,附件中是我编写的程序,求大神支招。GAUSS.F90与NTN.F90是借鉴的徐士良的程序(电子版可在百度上随意搜到---Fortran常用算法程序集)。FS为我的方程,NTN0是主函数。FS中的Fa,Fr,M分别为轴向力,径向力与力矩,数值可变化,一般更改Fa为0-40000,Fr=0,M=0。 X为未知量,y为方程组。
如果大神有高招,如果方便的话,希望不吝赐教。多谢。
太复杂了。你可以先用简单的方程去调试代码,方程太复杂,调试很难。 li913 发表于 2014-12-18 18:17
太复杂了。你可以先用简单的方程去调试代码,方程太复杂,调试很难。
其实方程形式很简单,估计就是中间变量太多了。我现在想不出方程该如何简化?我想问一下你对拟牛顿法了解吗?对于初值和步长的选择我很困惑。还有就是拟牛顿法的收敛方向我也不是很清楚 方法不懂。只能讲讲调试代码的技巧。先用已知解的简单方程去调试代码,这样比较容易找出逻辑错误(计算结果不符合预期)。 li913 发表于 2014-12-19 15:05
方法不懂。只能讲讲调试代码的技巧。先用已知解的简单方程去调试代码,这样比较容易找出逻辑错误(计算结果 ...
ok,多谢:-handshake 你的方程最好写出来,如果是非线性的方程组,你在牛顿法中,雅克比矩阵往往接近奇异,高斯消元法往往不能进行下去,即便能进行下去,求解结果也未必正确,看你的程序里面好象没有雅克比矩阵,你说的拟牛顿法也不像,里面也没看见海塞矩阵。
牛顿法是这样的:假设你的方程组用F表示,S = X_{n+1}-X_n;假设J是雅克比矩阵,迭代是这样:S =- (J^tJ)^{-1}J^tF(X_n);X_{n+1} = X_n +S 您好。请问您的问题解决了吗?
页:
[1]