Python 牛顿法求解多元非线性方程组

代码使用方式可见代码中示例代码。需安装numpy和sympy库。

计算数学课程 参考 Python代码

求积分以及方程的解需要自己修改f(x)函数里面的返回值。求非线性方程的解需要安装sympy包。

牛顿法解一元非线性方程

牛顿法解二元非线性方程

5种积分方法

绝对误差与相对误差

最小二乘法一元多项式拟合

Python 求积分的几种方法

不同的方法最大区别在于公式的不同/矩形区域的不同,依据公式而定,需要什么代码你可以自己进行更改,很简单。
本文代码为不严格代码,最严格的代码为先判断连续性。当你需要对大量函数积分(懒得写函数连续性检测的时候)可以使用本文代码用try…except…不严格替代。
看不懂公式的可以去 CSDN 查看图片。

  1. Simpson积分法:
    \(\int _ { a } ^ { b } f ( x ) d x \approx \frac { ( b – a ) ( f ( a ) + f ( b ) + 4 f ( \frac { a + b } { 2 } ) ) } { 6 }\)
  1. 右矩形积分公式
    \(\int _ { a } ^ { b } f ( x ) d x = \lim _ { n \rightarrow \infty } \sum _ { i = 1 } ^ { n } \frac { b – a } { n } f ( a + \frac { b – a } { n } i )\)
  1. 左矩形积分公式
    \(\int _ { a } ^ { b } f ( x ) d x = \lim _ { n \rightarrow \infty } \sum _ { i = 1 } ^ { n } \frac { b – a } { n } f ( a + \frac { b – a } { n } (i – 1) )\)
  1. 中矩形积分公式
    \(\int _ { a } ^ { b } f ( x ) d x = \lim _ { n \rightarrow \infty } \sum _ { i = 1 } ^ { n } \frac { b – a } { n } f ( a + \frac { (b – a)} { 2 n }(2i – 1 ) )\)
  1. 梯形积分公式
    \(\int _ { a } ^ { b } f ( x ) d x = \lim _ { n \rightarrow \infty } \sum _ { i = 1 } ^ { n } \frac { b – a } { 2n } (f ( a + \frac { b – a } { n }( i – 1) ) + f ( a + \frac { b – a } { n } i ))\)

Timus #1628. White Streaks

题目:有m*n的矩形,每个方块默认为白色,现给k个方块图上黑色,问有多少连续的num*1或1*num的长方形。如果一个1*1的方块周围没有白色方块,那么这个方块也包含在答案里面。

解析:行列遍历。对行和列分别进行查找,对行和列查找过程中单独成一个方块的坐标分别记录在两个集合中,最终只需要在结果上加上两个集合的交集中元素的个数。

Timus #1067. Disk Tree

题目:输入N个文件/文件夹位置关系,输出层级关系。看题目例子就可以看懂。

解析:利用树状结构

代码缺点:该代码内存占用太多。在insert函数中,可以选择更高效的查找及插入算法,但这道题对运行时间要求没那没高,可以写的相对简单一点。Tree* child[70]这个数字70根据题目可以调整,只是越大消耗内存越大,可以存放的子节点越多,Timus这道题写70就够了。

代码优化建议:
1. 把Tree中改成vector<pair<string, Tree>> child;这样可以大大减少内存以及提供更高效的对string排序操作。
2. 把Tree中改成set<Tree> child;并对<运算符(根据string name;)进行重载。set提供了高效的insert和find函数,这种方法更高效。

浙ICP备2021019730-1    浙公网安备 33010902002953号
Copyright © 2024 PanCake