设计程序,使得在区间
|\sin{x}-P_{n-1}(x)|=\frac{1}{n!}|(x-x_{1})\cdots(x-x_{n}))||f^{(n)}(c)|\leq \frac{(\frac{\frac{\pi}{2}-0}{2})^{n}}{n!2^{n-1}}\cdot 1
∣sinx−Pn−1(x)∣=n!1∣(x−x1)⋯(x−xn))∣∣f
(n)(c)∣≤n!2n−1(22π−0)n⋅1
经计算,当n=10时,误差界满足要求,可以精确到小数点后10位,此时切比雪夫根应为
4π+4πcos(oddπ/20).
Python实现程序如下:
import math
PI = math.pi
def sample_func(x):
return math.sin(x)
def get_chebyshev_points(n):
x_values = [PI/4 + PI/4 * math.cos((2*i+1)*PI/(2*n)) for i in range(n)]
y_values = [sample_func(x) for x in x_values]
return x_values, y_values
def get_lagrange_polynomial_unit(x_values, k, x):
poly_unit = 1
for i in range(len(x_values)):
if i != k:
poly_unit *= (x-x_values[i])/(x_values[k]-x_values[i])
return poly_unit
def get_lagrange_polynomial(x_values, y_values, x):
poly = 0
for i, y in enumerate(y_values):
poly += y * get_lagrange_polynomial_unit(x_values, i, x)
return poly
def get_similar_value(x):
true_value = sample_func(x)
n = 10
x_list, y_list = get_chebyshev_points(n)
similar_value = get_lagrange_polynomial(x_list, y_list, x)
error = true_value - similar_value
return f"{true_value}\t{similar_value}\t{error}"
if __name__ == '__main__':
for x0 in [0, 0.25, 0.5, 0.75, 1, 1.25, 1.5]:
d = get_similar_value(x0)
print(d)
输出结果如下:
x值 | sinx值 | 逼近值 | 误差 |
---|
0 | 0.0 | 3.104458877467575e-11 | -3.104458877467575e-11 |
0.25 | 0.24740395925452294 | 0.24740395924349076 | 1.1032175173397718e-11 |
0.5 | 0.479425538604203 | 0.4794255386316042 | -2.7401192426168564e-11 |
0.75 | 0.6816387600233341 | 0.681638759993194 | 3.0140112627918825e-11 |
1 | 0.8414709848078965 | 0.8414709848397693 | -3.1872837702451307e-11 |
1.25 | 0.9489846193555862 | 0.9489846193206646 | 3.492162115037445e-11 |
1.5 | 0.9974949866040544 | 0.9974949865890702 | 1.4984236074155888e-11 |
- 数值分析(原书第2版) (美)Timothy Sauer著,裴玉茹 马赓宇译, 机械工业出版社
求解N阶切比雪夫插值多项式时其过程为:
(1) 利用输入函数的静态工作点I1Q和变化范围(m , n)求出N+1个切比雪夫插值点;
(2) 测量N+1个对应插值点的输出值;
(3) 利用2(N+1)个数据,计算出切比雪夫插值多项式的6个系数;
(4)将系数代入切比雪夫多项式,在得到输出的表达式中代入含I1的归一化公式,即可得到IB=f(I1),求I1的反函数转换自变量为t代入,即得到表达式IB=g(t)
数值计算之 插值法(4)切比雪夫零点插值前言插值点选取第一类切比雪夫多项式拉格朗日插值多项式的余项切比雪夫零点插值后记
上篇插值法讨论了多项式插值的解,以及龙格现象。本篇将介绍一种在抽取节点时有效降低龙格现象的方法——切比雪夫零点插值。
插值点选取
插值多项式阶数较高时,在取值空间均匀取点,容易出现龙格现象。
即区间边缘的插值结果与原函数差异很大,而区间中央的插值结果相对较好。这表明,高阶多项式插值对区间中央的节点拟合好,而对两端节点拟合效果差。
自然而然会想到,在两端多采样一些节点,在中间少采样一
Subroutine newtdd( x,y,c ) !// 计算牛顿插值系数
Implicit none
Real(kind=8), intent( in ) :: x(:), y(:)
Real(kind=8), intent( inout ) :: c(:...
插值,不论在数学中的数值分析中,还是在我们实际生产生活中,都不难发现它的身影,比如造船业和飞机制造业中的三次样条曲线。那么,什么是插值呢?我们可以先看一下插值的定义,如下:
(定义)如果对于每个1≤i≤n,P(xi)=yi1 \leq i \leq n,P(x_{i})=y_{i},则称函数y=P(x)y=P(x)插值数据点(x1,y1),...,(xn,yn)(x_{1},y_{1}),.
所以新手使用celery很仔细的建立文件夹名字、文件夹层级、python文件名字。
所以网上的celery博客教程虽然很多,但是并不能学会使用,因为要运行起来需要以下6个方面都掌握好,博客文字很难表达清楚或者没有写全面以下6个方面。
celery消费任务不执行或者报错NotRegistered,与很多方面有关系,如果要别人排错,至少要发以下6方面的截图,因为与一下6点关系很大。
1)整个项目目录结构, 2)@task入参 ,3)celery的配置,4)celery的配置 include ,5)cmd命令行启动参数 --queues= 的值,6)用户在启动cmd命令行时候,用户所在的文件夹。
在不规范的文件夹路径下,使用celery难度很高,一般教程都没教。
[项目文件夹目录格式不规范下的celery使用演示](https://github.com/ydf0509/celery_demo) 。
此国产分布式函数调度框架 funboost python万能通用函数加速器 https://funboost.readthedocs.io/zh-cn/latest/articles/c1.html ,
从用法调用难度,用户所需代码量,超高并发性能,qps控频精确程度,支持的中间件类型,任务控制方式,稳定程度等20个方面全方位超过celery。发布性能提高1000%,消费性能提高2000%。
python万能分布式函数调度框架funboost支持python所有类型的并发模式和一切知名消息队列中间件,python函数加速器,只需要一行代码调度任意函数,框架包罗万象,万能编程功能宝典,一统编程思维,与业务不绑定,适用范围广。
pip install funboost