MATLAB 的非线性系统求解,牛顿法真的挺好用的,是搞 3 变量那种复杂模型的时候。这套资源就是用牛顿法搞定三元非线性方程组,代码写得还蛮清晰,结构也比较实用。newton3v1.m
里定义了方程、雅可比矩阵,还有完整的迭代逻辑,基本上打开就能跑。
非线性系统的牛顿法,其实就是在不断线性化一个原本弯弯曲曲的函数,用矩阵求解逼近零点。你只要搞清楚F(x)和J(x)怎么写,剩下的就是多跑几次就出结果了。嗯,初始值关键,选不好容易跑飞哦~
实现上用到了inv
来求矩阵的逆,不过你也可以改成linsolve
或者用LU 分解
提高效率,尤其变量一多,速度差挺的。还有,收敛判断那里也留了接口,可以自己加点输出看看迭代过程。
压缩包里还有个license.txt
,规范清楚代码怎么用。如果你是做工程仿真、控制算法或者搞数值的,这份资源用来练手或者做二次开发都挺合适。
顺带推荐几篇相关的参考:
- BP 神经网络非线性系统建模,适合搞 AI 的你
- 简单迭代法、牛顿法、弦割法,对比着看思路更清晰
- 解空间可视化,适合喜欢图形化的朋友
如果你手上有非线性模型,变量数在 3 个左右,又想图快图稳,这个脚本还挺值得一试的。