1.实验结果

(1)在定义的类中设置已知的函数值列表为:

(2)在 test.py 中选择 Lagrange 插值法求解:
输入:需求的 y 值对应的 x 值;
输出:所求函数值;

(3)选择 Newton 插值法求解:
输入:需求的 y 值对应的 x 值;
输出:差商表、所求函数值;

2. 代码

test.py

from class3 import interpolationinter = interpolation()
# 选择两种插值方法中的一种求解方法,根据所选方法的要求输入所需参数后输出所求值
print('已知的函数值数表如下:')
print('y = ', inter.y)
print('x = ', inter.x)
i = int(input('选择方法:1. Lagrange插值法; 2. Newton插值法\n'))
if i == 1:xx = float(input("计算Ln(x),x = "))print('Lagrange插值法:\n', 'L', len(inter.y)-1, '(', xx, ')', '=', inter.lagrange(xx))
elif i == 2:xx = float(input("计算Nn(x),x = "))print('差商表为:')print(inter.difference_quotient())print('Newton插值法:\n', 'N', len(inter.y)-1, '(', xx, ')', '=', inter.newton(xx))

class3.py

import numpy as npclass interpolation(object):"""包括: 1.Lagrange插值法; 2. Newton插值法"""# 设置已知的函数值数表def __init__(self):self.x = [1.0, 1.3, 1.6, 1.9, 2.2]self.y = [0.7651977, 0.6200860, 0.4554022, 0.2818186, 0.1103623]# 1. Lagrange插值法:输入要求的y值对应的x值xx, 输出y=Ln(xx)def lagrange(self, xx):yy = 0for i in range(len(self.y)):l = self.y[i] # 计算基函数 * 函数值for j in range(len(self.y)):if i != j:l = l * (xx - self.x[j]) / (self.x[i] - self.x[j])yy = yy + lreturn yy# 2. Newton插值法# 计算差商,返回差商表: 对角线为f(x0),一阶差商f[x0,x1],二阶差商f[x0,x1,x2]...def difference_quotient(self):n = len(self.y)q = np.zeros([n, n])for i in range(n):q[i][0] = self.y[i]for k in range(1, n):for j in reversed(range(k, n)):q[j][k] = (q[j][k-1] - q[j-1][k-1])/(self.x[j] - self.x[j-k])return q# 牛顿插值法计算xx点的函数值def newton(self, xx):n = len(self.y)sum = self.y[0]w = np.ones(n-1)for i in range(n-1):for j in range(i+1):w[i] = w[i] * (xx - self.x[j])q = self.difference_quotient() for i in range(n-1):sum = sum + q[i+1][i+1] * w[i]return sum

Python03 拉格朗日插值法 牛顿插值法(附代码)相关推荐

  1. 数值分析1_拉格朗日插值法牛顿插值法

    实验名称 拉格朗日插值法以及牛顿插值法的实现 实验要求 实现拉格朗日插值        验证随着插值结点的增多插值曲线的变化情况        实现牛顿插值,显示差商结果         比较拉格朗日 ...

  2. 理解插值法(拉格朗日、牛顿插值法)

    引言 我们首先理解下插值法主要用来做什么事:插值法就是利用已知的点建立合适的插值函数 f ( x ) f(x) f(x) ,未知点 x i x_i xi​ 由插值函数 f ( x ) f(x) f(x ...

  3. 2021-01-07 matlab数值分析  插值法 拉格朗日插值法 牛顿插值法

    matlab数值分析  插值法 1 拉格朗日插值法 function yh=lagrange(x,y,xh) n=length(x); m=length(xh); yh=zeros(1,m); for ...

  4. 拉格朗日插值的优缺点_拉格朗日与牛顿插值法的比较

    第 1 页 共 7 页 拉格朗日插值法与牛顿插值法的比较 一. 背景 在工程和科学研究中出现的函数是多种多样的.常常会遇到这样的情况:在某个实际 问题中,虽然可以断定所考虑的函数 ) ( x f 在区 ...

  5. 使用C++计算3次牛顿插值法

    本文原文发表于本人博客 哔哔哔哔-使用C++计算3次牛顿插值法 牛顿插值法是数值分析中一种用于插值的多项式,由Issac Newton提出,是估算函数值的重要方法之一 前言 近期数值分析课程讲到了牛顿 ...

  6. 【Python篇】拟牛顿法面面俱到(一)--牛顿插值法

    感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答.求职一站式搞定! 对商业智能BI.大数据分析挖掘.机器学习, ...

  7. C#实现拉格朗日、牛顿、Hermite插值

    拉格朗日.牛顿插值法 初始时需要至少两个参考坐标点,在参考点的基础之上构造插值函数y=f(x),然后由插值函数确定需要求解的x坐标的函数值.相较于拉格朗日插值,牛顿插值公式更加复杂,但是在增加一个参考 ...

  8. 【数值分析】拉格朗日插值法与牛顿插值法的C++实现

    数值分析--拉格朗日插值法与牛顿插值法的C++实现 文章目录 数值分析--拉格朗日插值法与牛顿插值法的C++实现 一.插值法 1.1 插值法定义 1.2 插值多项式唯一性定理 二.拉格朗日(Lagra ...

  9. C语言实现拉格朗日插值法和牛顿插值法

    拉格朗日插值法的实现就是通过构造函数,通过已知几对数据然后估算输入对应的数据所得得值. 通过例子可知道拉格朗日法,假设有三组数据分别为(x0,y0),(x1,y1),(x2,y2),与第一个y值相乘得 ...

最新文章

  1. 现代传感器的接口:中断驱动的ADC驱动程序
  2. 懂语言者得天下:NLP凭什么被称为人工智能的掌上明珠?
  3. liunx tar安装mysql_在Linux下,安装Mysql(tar)
  4. 【Android 异步操作】Handler 机制 ( Handler 常用用法 | HandlerThread 简介 | HandlerThread 源码注释分析 )
  5. java 中IO流的概念
  6. SpringMVC拦截器-用户登录权限控制代码实现3
  7. JS开源框架Stimulus:让web应用在移动端达到原生体验!
  8. [BZOJ 2957]楼房重建(线段树)
  9. 如何检测支付宝接口中notify_url.php有没有返回,支付宝中的手机网站支付接口,php版 notify_url.php 异步通知页面未成功执行...
  10. Linux的watch命令 -- 实时监测命令的运行结果
  11. TensorFlow、PyTorch 之后,“国产”AI 框架还有没有机会?
  12. 内容 超链接_excel中如何设置目录与返回目录超链接?这两种方法很简单
  13. 如何使用PyTorch torch.max()
  14. [python 译] 基于面向对象的分析和设计
  15. 算法导论PDF原文算法分享
  16. 朗文当代高级英语辞典android,朗文当代高级英语辞典
  17. get/post在线接口
  18. FreeSwitch uuid_bridge代码分析
  19. DDOS误判怎么预防
  20. 架构师米洛:你不经意的职场坏姿势会损坏你的身体

热门文章

  1. html typora 图片_Typora优化-适合不懂CSS代码的小白
  2. 动态规划——删除并获得点数(Leetcode 740)
  3. C语言课后习题(50)
  4. 中国海洋大学计算机考研指导
  5. 未检测到其他显示器_如何将 Surface 连接到电视、显示器或投影仪,我教你
  6. Oracle的直方图试验
  7. 直播丨Oracle 12.2系列安装
  8. 基于实例数据详解准确率和召回率
  9. 【有奖征文】WEB前端大作战,走在技术最前端!
  10. 华为云副总裁薛浩:云原生视频服务,重塑体验,助力产业升级