首页 > 编程语言 >龙格现象 图像对比及Python代码实现

龙格现象 图像对比及Python代码实现

时间:2023-09-18 17:25:36浏览次数:39  
标签:plt temp Python sum len 龙格 图像 np xs

先定义牛顿插值函数,输入插值点和我拟合的点,毕竟是拟合光滑曲线,而画图都是点点相连,所以拟合点越多,曲线越光滑。

import matplotlib.pyplot as plt
import numpy as np

def newton_interpolation(X,Y,x):
    """
    计算x点的插值
    """
    sum=Y[0]
    temp=np.zeros((len(X),len(X)))
    #将第一行赋值
    for i in range(0,len(X)):
        temp[i,0]=Y[i]
    temp_sum=1.0
    for i in range(1,len(X)):
        #x的多项式
        temp_sum=temp_sum*(x-X[i-1])
        #计算均差
        for j in range(i,len(X)):
            temp[j,i]=(temp[j,i-1]-temp[j-1,i-1])/(X[j]-X[j-i])
        sum+=temp_sum*temp[i,i] 
    return sum

然后画图拟合:

plt.figure(figsize=(16,9))
plt.title("newton_interpolation")
color = ['green','red','purple']

for j,i in enumerate([5,9,11]):
    X = np.linspace(-5, 5, num= i)
    Y= np.array(1 / (1 + X * X))
    xs=np.linspace(np.min(X),np.max(X),1000,endpoint=True)
    
    ys=[]
    for x in xs:
        ys.append(newton_interpolation(X,Y,x))

    plt.plot(X,Y,'s',label=f"n={i-1}", color=color[j])#蓝点表示原来的值
    plt.plot(xs,ys,label='', color=color[j])#插值曲线

xs=np.linspace(-5,5,100,endpoint=True)
plt.plot(xs,np.array(1 / (1 + xs * xs)),'b',label='y=1 / (1 + x^2)')#原曲线
plt.xlabel('x')  
plt.ylabel('y')  
plt.legend(loc=4)#指定legend的位置右下角

请添加图片描述
漂亮的龙格现象就体现出来了~
需要不同的阶次,只需要修改enumerate([5,9,11])里的数值就可以了!

标签:plt,temp,Python,sum,len,龙格,图像,np,xs
From: https://www.cnblogs.com/kemuling/p/17712487.html

相关文章

  • python复习
    一python简介#主流语言的区别c:c代码写完,编译(不同平台),跨平台运行,linux上源码安装软件,自行编译java:一处编码,处处运行,java是编译型还是解释型?编译型,编译过程---把java源代码编译成字节码文件.class---不能直接运行在操作系统上---》jvm(java虚拟机),jvm运行至少要300M内存jdk......
  • python 全角半角字符、字符串互转
    defis_chinese(uchar):"""判断一个unicode是否是汉字"""ifuchar>=u'\u4e00'anduchar<=u'\u9fa5':returnTrueelse:returnFalsedefis_number(uchar):"""......
  • python开发之个微群聊机器人的开发
    简要描述:退出群聊请求URL:http://域名地址/quitChatRoom请求方式:POST请求头Headers:Content-Type:application/jsonAuthorization:login接口返回参数:参数名必选类型说明wId是string登录实例标识chatRoomId是string群id返回数据:参数名类型说明codestring1000成功,1001失败msgstring反馈信......
  • Python Matplotlib 库使用基本指南
    简介Matplotlib是一个广泛使用的Python数据可视化库,它可以创建各种类型的图表、图形和可视化效果。无论是简单的折线图还是复杂的热力图,Matplotlib提供了丰富的功能来满足我们的数据可视化需求。本指南将详细介绍如何安装、基本绘图函数以及常见图表类型的绘制方法。安装Matpl......
  • python+playwright 学习-1.环境准备与快速开始
    前言说到web自动化,大家最熟悉的就是selenium了,selenium之后又出现了三个强势的框架Puppeteer、CyPress、TestCafe,但这3个都需要掌握JavaScript语言,所以只是少部分人在用。2020年微软开源一个UI自动化测试工具Playwright,支持Node.js、Python、C#和Java语言。为什......
  • 超细讲解Java调用python文件的几种方式
    1.首选Java调用Python文件的方式:JythonJython(JavaPython)是一种Python解释器,它使用Java语言编写,可以让Python代码在Java环境下运行。Jython具有明显的优势,可以很好地兼容Python代码中的所有库,因此对于Java和Python开发者来说都是理想的工具。在使用Jython时,需要在Java环境中下载和......
  • Python 基本语法
    代码行单行代码每行代码结尾不需要加标点a=123多行换行多行代码,直接换行a=123b=a+1复杂过长的计算、操作可用括号然后缩进换行income=(gross_wages     +taxable_interest     +(dividends-qualified_dividends)     -ira_deduction......
  • python多线程中锁的概念 threading.Lock
    https://blog.csdn.net/qq_21439971/article/details/79356248 python的锁可以独立提取出来12345678mutex  =  threading.Lock()#锁的使用#创建锁mutex  =  threading.Lock()#锁定mutex.acquire([timeout])#释放mutex.release()......
  • python测试用例数据驱动(读取写入excel)
    Python中处理excel数据的模块非常多,比如:xlxd(只读)、xlwd(只写)、openpyxl(可读写)Excel文件和下面的py文件代码一定要在同一个文件夹内,不然需要指定具体的Excel文件路径注意:excel文件为xlsx,不能是xls再转换成xlsx格式的文件,会报错fromopenpyxlimportload_workbookcl......
  • 极速上手Python分布式爬虫
    随着互联网的快速发展,获取大量数据已成为许多项目的核心需求。而Python分布式爬虫是一种高效获取数据的方法。今天,我将个大家分享一下,想要极速上手Python分布式爬虫的一些知识,让你能够迅速掌握这一实用的技术。什么是分布式爬虫?分布式爬虫是一种利用多台机器协同工作的爬虫系统。它......