数值计算方法实验之newton多项式插值 (Python 代码)
一、实验目的
在己知f(x),x∈[a,b]的表达式,但函数值不便计算或不知f(x),x∈[a,b]而又需要给出其在[a,b]上的值时,按插值原则f(xi)=yi (i=0,1,……, n)求出简单函数P(x)(常是多项式),使其在插值基点xi处成立(xi)= yi(i=0,1,……,n),而在[a,b]上的其它点处成立f(x)≈P(x).
二、实验原理

三、实验内容
求f(x)=x4在[0,2]上按5个等距节点确定的Lagrange插值多项式
四、实验程序
import matplotlib.pyplot as plt
from pylab import mpl
import math x = [0, 0.5, 1, 1.5, 2]
y = [0, 0.0625, 1, 5.0625, 16] """计算四次差商的值"""
def four_order_difference_quotient(x, y):
# i记录计算差商的次数,这里循4次,计算4次差商。
i = 0
quotient = [0, 0, 0, 0, 0]
while i < 4:
j = 4
while j > i:
if i == 0:
quotient[j]=((y[j]-y[j-1])/(x[j]-x[j-1]))
else:
quotient[j] = (quotient[j]-quotient[j-1])/(x[j]-x[j-1-i])
j -= 1
i += 1
return quotient; def function(data):
return parameters[0] + parameters[1]*(data-0) + parameters[2]*(data-0)*(data-0.5) + parameters[3]*(data-0)*(data-0.5)*(data-1) + parameters[4]*(data-0)*(data-0.5)*(data-1)*(data-1.5) """计算插值多项式的值"""
def calculate_data(x,parameters):
returnData=[];
for data in x:
returnData.append(function(data))
return returnData """画函数的图像
newData为曲线拟合后的曲线
""" def draw(newData):
plt.scatter(x,y,label="离散数据",color="blue")
plt.plot(datax,newData,label="牛顿插值拟合数据",color="orange")
plt.scatter(1.75,1.75**4, label="准确值",color="red")
plt.title("牛顿插值法拟合数据")
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
plt.legend(loc="upper left")
plt.show() parameters=four_order_difference_quotient(x,y)
datax=[0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2]
datay=calculate_data(datax,parameters)
draw(datay)
print("牛顿插值多项式为:N(x) = %f(x-0) + %f(x-0)(x-0.5) + %f(x-0)(x-0.5)(x-1) + %f(x-0)(x-0.5)(x-1)(x-1.5)"%(parameters[1], parameters[2], parameters[3],parameters[4]))
五、运算结果
(1) 图像

(2)运算结果

六、心得体会
通过本次实验,我对数值分析有了更深一个层次的认识 ,将数学理论和计算机 软件结合会得到意想不到的结果 比如插值法,在先学习了拉格朗日插值法后,对其理解透彻,了解了其中的原理和思想,再学习之后的牛顿插值以及三次样条插值等等,都很容易的融会贯通,很容易的就理解了其中所想,其中心思想并没有多大的变化,但是使用的方式却是不同的每个不同的思考方式带来的都是不同的算法。
在不断学习的过程中,知识在不断的获取,能力在不断的提升。同时在老师的指导下,我的知识更上一个台阶,总而言之,本次实验演示我受益匪浅。
数值计算方法实验之newton多项式插值 (Python 代码)的更多相关文章
- 数值计算方法实验之Newton 多项式插值(MATLAB代码)
一.实验目的 在己知f(x),x∈[a,b]的表达式,但函数值不便计算或不知f(x),x∈[a,b]而又需要给出其在[a,b]上的值时,按插值原则f(xi)=yi (i=0,1,……, n)求出简单函 ...
- 数值计算方法实验之Hermite 多项式插值 (Python 代码)
一.实验目的 在已知f(x),x∈[a,b]的表达式,但函数值不便计算,或不知f(x),x∈[a,b]而又需要给出其在[a,b]上的值时,按插值原则f(xi)= yi(i= 0,1…….,n)求出简单 ...
- 数值计算方法实验之Lagrange 多项式插值 (Python 代码)
一.实验目的 在已知f(x),x∈[a,b]的表达式,但函数值不便计算,或不知f(x),x∈[a,b]而又需要给出其在[a,b]上的值时,按插值原则f(xi)= yi(i= 0,1…….,n)求出简单 ...
- 数值计算方法实验之按照按三弯矩方程及追赶法的三次样条插值 (MATLAB 代码)
一.实验目的 在已知f(x),x∈[a,b]的表达式,但函数值不便计算,或不知f(x),x∈[a,b]而又需要给出其在[a,b]上的值时,按插值原则f(xi)= yi(i= 0,1…….,n)求出简单 ...
- 拉格朗日插值Python代码实现
1. 数学原理 对某个多项式函数有已知的k+1个点,假设任意两个不同的都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为: 其中每个lj(x)为拉格朗日基本多项式(或称插值基函数),其表 ...
- 数值计算方法 | C语言实现几个数值计算方法(实验报告版)
目录 写在前面 实验一 牛顿插值方法的实现 实验二 龙贝格求积算法的实现 实验三 高斯列主元消去法的实现 实验四 最小二乘方法的实现 写在前面 使用教材:<数值计算方法>黄云清等编著 科学 ...
- 多项式函数插值:全域多项式插值(一)单项式基插值、拉格朗日插值、牛顿插值 [MATLAB]
全域多项式插值指的是在整个插值区域内形成一个多项式函数作为插值函数.关于多项式插值的基本知识,见“计算基本理论”. 在单项式基插值和牛顿插值形成的表达式中,求该表达式在某一点处的值使用的Horner嵌 ...
- 【剑指Offer】数值的整数次方 解题报告(Python)
[剑指Offer]数值的整数次方 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interviews ...
- 安装notepad++ 安装Python Python环境变量的数值。怎样在notepad++上运行Python的代码
文章目录 1.下载安装一个Python的编辑器notepad++,(我这里有现成的,也可以去网上搜很多) 2.安装python,(我这里有现成的,也可以去网上下载). 3.怎样彻底删除Python,有 ...
随机推荐
- RuntimeError: Exception thrown in SimpleITK ReadImage: /tmp/SimpleITK/Code/IO/src/sitkImageReaderBase.cxx:107: sitk::ERROR: Unable to determine ImageIO reader for "./data/.train.txt.swp"问题解决
原因:产生此类错误是因为SimpleITK不能读取ubuntu中的隐藏文件,比如".train.txt.swp",因为此类文件是隐藏文件另外SimpleITK不支持读取此类文件. ...
- A股调整结束 很可能明天开始阶段性反弹 目标3100左右
A股调整结束 很可能明天开始阶段性反弹 目标至少AC等距. A浪2685-3059=374 C浪2715+374=3089 长周期看 A股处于 2300-4300长期震荡中.A股的牛市还要等几年.
- 1053 Path of Equal Weight (30分)(并查集)
Given a non-empty tree with root R, and with weight Wi assigned to each tree node Ti. The weig ...
- 关于$f(x)=\int_0^x\left|\sin\frac1t\right|\text dt$求导的问题
首先,我们考虑\(f(x)\)在\(\mathbb R\)上都是定义的.根据定义,显然有\(f(0)=0\):其次,对于\(x\neq0\),不妨先设\(x\gt0\),则有在\(t\rightarr ...
- django-rest-framework限流
django-rest-framework限流 在项目根目录下新建utils的文件 新建throttling.py from django_redis import get_redis_connect ...
- python 函数--递归函数
一.递归函数的定义:在一个函数里面调用函数本身 python限制最大层数:998层 def foo(n): print(n) n+=1 foo(n) foo(1)
- Java第二十七天,线程池
1.什么情况下需要线程池? 频絮创建线程就会大大降低系统的效率,那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?在java中可以通过线程池来达到这样的效 ...
- Linux服务器架设篇,DHCP服务器的搭建
学习之前,我们首先来看一个案例: 假如你是一个学校的网络管理老师,需要为教室的70多台电脑配置好网络你会怎么办? 一台一台的给他们配置? 在这里我特别欣赏鸟哥的一句话--"当管理员最大的幸福 ...
- C语言数据结构队列
#include<stdio.h>#include<stdlib.h>struct Node { int data; Node *next;};struct Queue { ...
- Flutter 实现网易云音乐字幕
老孟导读:没有接触过音乐字幕方面知识的话,会对字幕的实现比较迷茫,什么时候转到下一句?看了这篇文章,你就会明白字幕so easy. 先来一张效果图: 字幕格式 目前市面上有很多种字幕格式,比如srt, ...