一、实验目的

在已知f(x),x∈[a,b]的表达式,但函数值不便计算,或不知f(x),x∈[a,b]而又需要给出其在[a,b]上的值时,按插值原则f(xi)= yi(i= 0,1…….,n)求出简单函数P(x)(常是多项式),使其在插值基点xi,处成立P(xi)= yi(i=0,1,……,n),而在[a,b]上的其它点处成立f(x)≈P(x).

二、实验原理

三、实验内容

求f(x)=x4在[0,2]上按5个等距节点确定的Hermite插值多项式.

四、实验程序

 import numpy as np
from sympy import *
import matplotlib.pyplot as plt def f(x):
return x ** 4 def ff(x): # f[x0, x1, ..., xk]
ans = 0
for i in range(len(x)):
temp = 1
for j in range(len(x)):
if i != j:
temp *= (x[i] - x[j])
ans += f(x[i]) / temp
return ans def draw(L, newlabel= 'Lagrange插值函数'):
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(0, 2, 100)
y = f(x)
Ly = []
for xx in x:
Ly.append(L.subs(n, xx))
plt.plot(x, y, label='原函数')
plt.plot(x, Ly, label=newlabel)
plt.xlabel('x')
plt.ylabel('y')
plt.legend() plt.savefig('1.png')
plt.show() def lossCal(L):
x = np.linspace(0, 2, 101)
y = f(x)
Ly = []
for xx in x:
Ly.append(L.subs(n, xx))
Ly = np.array(Ly)
temp = Ly - y
temp = abs(temp)
print(temp.mean()) def calM(P, x):
Y = n ** 4
dfP = diff(P, n)
return solve(Y.subs(n, x[0]) - dfP.subs(n, x[0]), [m,])[0] if __name__ == '__main__':
x = np.array(range(11)) - 5
y = f(x) n, m = symbols('n m')
init_printing(use_unicode=True) P = f(x[0])
for i in range(len(x)):
if i != len(x) - 1:
temp = ff(x[0:i + 2])
else:
temp = m
for j in x[0:i + 1]:
temp *= (n - j)
P += temp
P = expand(P) P = P.subs(m, calM(P, x))
draw(P, newlabel='Hermite插值多项式')
lossCal(P)

五、运算结果

最新文章

  1. beego上传文件
  2. itrator控制迭代次数
  3. 11g SQL Monitor
  4. Terminal的快捷键 for Terminal for Mac OS 10.10, Linux/GNU(Ubuntu, deepin, elementory os,CentOS)
  5. Entity Framework 6 Code First +MVC5+MySql/Oracle使用过程中的几个问题
  6. Codeforces Round #80 Div.1 D
  7. 漫谈linux文件IO
  8. 跟Google学习Android开发-起始篇-与其它应用程序交互(1)
  9. Weka初步
  10. opnet点对点通信模型 分类: opnet 2014-05-26 22:15 246人阅读 评论(3) 收藏
  11. 【Nginx系列】Nginx虚拟主机的配置核日志管理
  12. 微信小程序如何动态增删class类名
  13. Hash函数
  14. vs2019离线安装包下载
  15. Python学习(二十六)—— Django基础一
  16. Python中list,tuple,dict,set的区别和用法(转)
  17. php框架安装
  18. 4. Neural Network
  19. Template Method 模板方法 MD
  20. 在delphi原有控件基础上画图

热门文章

  1. Java基础语法(11)-面向对象之关键字
  2. GIS中地图投影的定义
  3. iOS isa 和 Class
  4. Python——NumPy数据存取与函数
  5. Java并发基础04. 线程技术之死锁问题
  6. 1007 Maximum Subsequence Sum (25 分)
  7. hadoop+zookeeper集群高可用搭建
  8. WTM asp.net core应用程序在Ubuntu上和CentOS上部署
  9. html的嵌套规则
  10. 修改linux服务器名称