非线性方程组的求解方法一般是作线性化处理,搭建迭代格式。具体参见
如图所示的串联弹簧,F=100,弹簧刚度为k1 = 50 + 500u ,k2 = 100+ 200u ,u是弹簧伸长量,则平衡方程为
k1,k2带入得
Newton–Raphson方法就是一种线性迭代方法,其算法如下:
1 设置初值tol=0.001,迭代步i=0,最大迭代数max_iter=20以及初始位移u;
2 计算不平衡力 R=f–P(u);
3 计算误差conv,如果conv<tol,则停止迭代
4 计算切线刚度矩阵KT;
5 计算位移增量Δu;
6 计算当前位移u=u+Δu;
7 迭代步数i=i+1,若i>max_iter,则停止迭代;
8 返回第二步。
MATLAB代码如下