python复杂非线性方程_非线性方程python入门——屠龙刀

感谢师兄提供的题图。(这图应该是p的,我找电视剧,没谢三哥这三个字。)

早些年做科研的时候,其实就用倚天屠龙走天下,一个矩阵对角化,一个非线性方程求解。当时是研究的冷原子,算是比较新的方向,量子光学的新时代吧。研究冷原子做自洽平均场,做计算会用到非线性方程,还记得是由自由能极值条件得出的一个粒子数方程,一个能隙方程,联立求解。我当年用的c语言的科学计算库,师兄用的fortran。我们组是非线性方程求解做的,还记得隔壁组用的是非线性最优化。

python提供了非线性方程组的求解fsolve函数,具体可以查阅文档,下面给出简单使用的举例。

基本需要一个接受数组返回同样长度数组的函数,随后调用即可,参数可以放在args用元组传递。

然而,这个函数只能解决实数的,我自己写了个复数版本的。我不知道有没有对应的库,是不是重复造轮子的行为。利用实部和虚部分离的方法,在内部调用fsolve解决。参数接口只用了最简单的部分,可以自己酌情加上去。

先写测试函数

函数和测试

值得一提的是,非线性方程求解一般不会是单解,而且依赖初值。所以,实际中,会选好的初值(你预估的结果)。特别在扫场(参数连续变化)时,会用前一个结果做后一个的初值,保持结果的连续性。

完。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值