数值分析基础

参考:《数值分析》Timothy Sauer著,裴玉如等译,机械工业出版社

原书MatLab代码均由本人改为python

多项式求值

科学计算方法的主要特征:

  • 计算机在做简单计算的时候速度很快;

  • 由于简单计算可能会进行多次,尽可能有效地进行简单计算可能非常重要;

  • 最好的计算方式可能不是显而易见的那种方法。

多项式可写成如下一般的形式: \[c_1 + (x-r_1)(c_2+(x-r_2)(c_3+(x-r_3)(c_4+(x-r_4)c_5)))\]

其中,\(r_1\)\(r_2\)\(r_3\)\(r_4\)为基点。​

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 嵌套乘法
# 使用霍纳方法以嵌套形式计算多项式的值
# 输入:多项式的阶d
# d+1个系数构成数组c(第一个元素为常数项,)
# x是需要求值的位置
# 如果需要的话,还有d个基点构成的数组b
# 输出:多项式在x点对应的y值
import numpy as np
def nest(d, c, x, **kwargs):
if kwargs == ():
b = np.zeros(d)
else:
b= kwargs['b']
y = c[d]
for i in range(d-1, -1, -1):
y = y*(x-b[i]) + c[i]
return y

微积分回顾

微积分的中值定理、泰勒定理对于数值分析很重要。