计算数学 ODE LAB 3

全部是正确答案,慎用

Python Euler Improved

Python Euler

Euler method 理论上代码正确,但是实际上因为算法的原因,与测试样例的值偏差会过大,要通过测试样例只需要初始化时把 n = 10000000

Python Runge-Kutta

Python Adams

注释为修正公式,可用可不用

Python Milne

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 ))\)

Python matrix 3种解矩阵方程方法

高斯消元法,简单迭代法(Jacobi迭代),高斯迭代法(Gauss-Seidel迭代)。参考文章,该参考文章可以让你明白简单迭代和高斯迭代的方法。
总结:高斯迭代和简单迭代法会遇到矩阵存在解但迭代不收敛的情况,推荐使用高斯消元法。

  1. 高斯消元 O(n3)
  1. 简单迭代 O(k*n2)
  1. 高斯迭代基本思路和简单迭代差不多 O(k*n2)

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