Python处理第一类切比雪夫多项式

news2024/11/18 1:45:07

第一类切比雪夫多项式简介

Chebyshev多项式是一种非常重要的正交多项式,在逼近理论中有重要应用,第一类切比雪夫多项式的根可用于多项式插值,对弥补龙格现象有很大的帮助。其表达形式为

T n = cos ⁡ ( n arccos ⁡ x ) T_n=\cos(n\arccos x) Tn=cos(narccosx)

其中 n n n为第一类切比雪夫多项式的阶数,在Python中,提供了Chebyshev类类,构造函数为

chebyshev.Chebyshev(coef, domain=None, window=None, symbol='x')

其中coef为系数列表 a 0 , a 1 , ⋯   , a n a_0, a_1,\cdots,a_n a0,a1,,an,表示生成

∑ i = 0 n a i T i ( x ) \sum_{i=0}^n a_iT_i(x) i=0naiTi(x)

domain表示 x x x的定义域,window表示缩放系数,x为自变量符号。

from numpy.polynomial.chebyshev import Chebyshev
t3 = Chebyshev(coef=[4,3,2,1])
print(t3)
# 输出为4.0 + 3.0 T_1(x) + 2.0 T_2(x) + 1.0 T_3(x)

为了对第一类切比雪夫有个直观的认识,可以绘制一下不同阶数的第一类切比雪夫的函数

import numpy as np
import matplotlib.pyplot as plt
for i in range(5):
    c = np.zeros(i+1)
    c[i] = 1
    t = Chebyshev(coef=c, domain=(-5,5))
    xs, ys = t.linspace()
    plt.plot(xs, ys, label=str(i))

plt.legend()
plt.show()

其中h.linspace表示在定义域范围内对多项式进行采样,有一个参数n,表示在定义域范围内等间隔生成n x , y x,y x,y,默认为100。

得图如下

在这里插入图片描述

求导和积分

Chebyshev支持简单的符号计算,比如可通过deriv(n)求多项式的n阶导数;通过integ(n)可求n阶积分,示例如下

>>> t3.deriv(1)
Chebyshev([6., 8., 6.], domain=[-1.,  1.], window=[-1.,  1.])
>>> t3.deriv(2)
Chebyshev([ 8., 24.], domain=[-1.,  1.], window=[-1.,  1.])
>>> t3.integ(1)
Chebyshev([0.375     , 3.        , 0.5       , 0.33333333, 0.125     ], domain=[-1.,  1.], window=[-1.,  1.])

求根和反演

roots可用于求根,而fromroot可根据根来生成切比雪夫多项式

>>> rs = t3.roots()
>>> print(rs)
[-1.29715651+0.j          0.14857825-0.60281258j  0.14857825+0.60281258j]
>>> tNew = t3.fromroots(rs)
>>> print(tNew)
(0.9999999999999998+0j) + (0.749999999999999+0j) T_1(x) +
(0.49999999999999967+0j) T_2(x) + (0.25+0j) T_3(x)

可以发现rootsfromroots并非对称的关系。

拟合

Chebyshev类中同样提供了拟合函数fit,定义为

Chebyshev.fit(x, y, deg, domain=None, rcond=None, full=False, w=None, window=None, symbol='x')

其中domain, window, symbol不必赘述,其中x,y为待拟合多项式;deg为多项式的阶数。rcond表示截止误差。fullFalse时,只返回拟合系数,否则还返回拟合的标准差等。

>>> t3 = Chebyshev(coef=[4,3,2,1])
>>> xs, ys = p3.linspace()
>>> t3_3 = t3.fit(xs, ys, 3)
>>> print(t3_3)
3.9999999999999987 + 3.0000000000000018 T_1(x) +
1.999999999999999 T_2(x) + 1.0000000000000013 T_3(x)
>>> t3_4 = t3.fit(xs, ys, 4)
>>> print(t3_4)
4.0 + 3.0000000000000004 T_1(x) + 2.0000000000000013 T_2(x) +
1.0000000000000007 T_3(x) + 2.9674017981841603e-15 T_4(x)

可见其拟合效果还是不错的。

degree返回多项式的最高项次数,cutdeg可以对多项式的次数做阶段,例如

>>> t3.degree()
3
>>> t3.cutdeg(2)
Chebyshev([4., 3., 2.], domain=[-1.,  1.], window=[-1.,  1.])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/163986.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vite+vue3+Ts搭建基础项目框架

随着前端技术的更新,程序员们的技术栈也要不断跟上,本来想躺平,不料却被推着走。 上个月开发团队新来一个项目需求,要求开发技术栈vue2更换成vue3,毫无准备的小编一脸懵,嗯?怎么说 换就换了&am…

读写分离有哪些坑?

在上一篇文章中,我和你介绍了一主多从的结构以及切换流程。今天我们就继续聊聊一主多从架构的应用场景:读写分离,以及怎么处理主备延迟导致的读写分离问题。 我们在上一篇文章中提到的一主多从的结构,其实就是读写分离的基本结构了。这里,我再把这张图贴过来,方便你理解…

【Linux】Linux环境下如何实现自动化编译——make/makefile入门

文章目录 前言 一、make/Makefile 的使用 1.示例 2.编写 Makefile 文件 2.1生成 2.2清理 二、make 如何知道生成的可执行文件是否最新 前言 在Linux 环境下编写好C语言代码之后,我们需要使用编译工具gcc 将其翻译为可执行文件。可是,如果对代码进…

Apache Spark 机器学习 特征抽取 4-1

特征数据集是用于在机器学习中进行训练,有关特征的算法的分类如下所示: 抽取(Extraction),从原始数据集中提取出对应的特征集 转换(Transformation),缩放特征、转换特征以及修改特征…

线程池(关于变量捕获、线程数、针对ThreadPoolExecutor的构造方法参数的解释、自实现线程池)

目录:一、前言二、关于变量捕获三、针对ThreadPoolExecutor的构造方法参数的解释四、自实现线程池一、前言相比较于进程,创建线程 / 销毁线程 的开销是相对较小的,但是太过频繁的创建线程 / 销毁线程,其开销也很大。这时候我们就需…

C 语言编译链接

前言 一个 C 程序究竟是怎么变成可执行程序的,这其间发生了什么?本文将带你简要了解 C 程序编译过程,文章为 《程序员的自我修养—链接、装载与库》的读书笔记,更为详细的过程可以阅读原书。 比如下面一个经典的 C 程序&#xf…

百度飞浆在pycharm中的使用(含官网安装和cuda)

uieGitHub 安装cuda 1 获取版本 我的是 CUDA Toolkit 11.7.1 (August 2022), Versioned Online Documentation 为了防止后期版本不对应,我这里小心谨慎安装了August对应的月份。 C:\Users\89735>nvidia-smi Mon Dec 19 21:31:28 2022 ------------------------…

一眼万年,这3款顶级神软,内存满了也绝不卸载

免费软件都不好用?不!下面3款良心软件,颠覆你的认知,功能强大到离谱,值得收藏往后有需要直接使用。 1、桌面运维助手 这是一款堪称神器的国产电脑优化工具,集硬件管理、系统管理、辅助工具于一体&#xff0…

Effective C++条款39:明智而审慎地使用private继承(Use private inheritance judiciously)

Effective C条款39:明智而审慎地使用private继承(Use private inheritance judiciously)条款39:明智而审慎地使用private继承1、private 继承2、在private继承和复合之间做出正确选择3、使用private继承比组合更加合理的例子4、牢…

wsl安装CUDA

NVCC 昨天已经安装好了gpu版的pytorch,对于一般的代码应该就可以运行了。但有些代码中需要用到cuda算子,需要配置nvcc环境。对于这个我也没能搞太清楚,网上的说法不一,我使用conda安装pytorch时也安装了cudatoolkit,按…

c++11 标准模板(STL)(std::forward_list)(八)

定义于头文件 <forward_list> template< class T, class Allocator std::allocator<T> > class forward_list;(1)(C11 起)namespace pmr { template <class T> using forward_list std::forward_list<T, std::pmr::polymorphic_…

当面试官问:“你还有什么要问我”,怎样回答才最加分?

面试到最后&#xff0c;面试官常常会问求职者&#xff1a;“你还有什么要问我&#xff1f;”许多人面对这个问题&#xff0c;不知该怎样回答&#xff0c;怕回答不好影响自己的面试结果&#xff0c;那么怎么回答才最加分呢&#xff1f;有人说&#xff0c;可以问问这个职位应该具…

springboot整合gateway网关

2.3 搭建Gateway 本项目使用Spring Cloud Gateway作为网关&#xff0c;下边创建网关工程。 新建一个网关工程。 工程结构 添加依赖&#xff1a; XML org.springframework.cloud spring-cloud-starter-gateway com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discove…

TryHackMe-Blog

Blog 比利乔尔&#xff08;Billy Joel&#xff09;在他的家用电脑上写了一个博客&#xff0c;并开始工作。这将是非常棒的&#xff01; 枚举此框并找到隐藏在其上的 2 个标志&#xff01;比利的笔记本电脑上有一些奇怪的事情。你能四处走动并得到你需要的东西吗&#xff1f;还…

蓝队常用的攻击手段

目录 一&#xff0c; 漏洞利用 1.1 SQL 注入漏洞 1.2 跨站漏洞 1.3 文件上传或下载漏洞 1.4 命令执行漏洞 1.5 敏感信息泄露漏洞 在实战过程中&#xff0c;蓝队专家根据实战攻防演练的任务特点逐渐总结出一套成熟的做法:外网纵向突破重点寻找薄弱点&#xff0c;围绕薄弱点…

2022 VeLO: Training Versatile Learned Optimizers by Scaling Up

VeLO: Training Versatile Learned Optimizers by Scaling Up 通过扩展模型的规模来训练一个通用的优化器。 设计上&#xff0c;优化器的原理基于元学习的思路&#xff0c;即从相关任务上学习经验&#xff0c;来帮助学习目标任务。 相比迁移学习&#xff0c;元学习更强调获取元…

2023年批量下载和改名音频专辑(单页列表)

一、下载原理 1&#xff09;找到目标音频的专辑网页&#xff0c;这里以 kite runner mp3为例。&#xff08;需要自己找&#xff09; https://www.xi___ma___la_____ya.com/album/71718770 2&#xff09;进入详细页&#xff08;称为一次请求URL&#xff09;&#xff08;不需要…

JUC(java.util.concurrent)的常见类

文章目录一、JUC常见类Callable 接口ReentrantLockSemaphore(信号量)CountDownLatch一、JUC常见类 concurrent代表了并发&#xff0c;这个包下为我们提供了并发编程(多线程)相关的组件. Callable 接口 我们的Callable接口和Runnable是一样的&#xff0c;但也有一些区别: Run…

C/C++实现跨年表白烟花

跨年表白烟花使用c/c实现烟花效果&#xff08;小白进&#xff09;分析诉求&#xff0c;拆分问题头文件贯穿全文的媒体部分文字部分&#xff1a;进入烟花弹部分烟花弹的属性初始化烟花弹让烟花弹飞起来烟花爆炸烟花弹的属性初始化烟花让烟花炸起来完成代码&#xff1a;使用c/c实…

840个最优的机器学习python开源项目整理分享

本资源包含了840个很棒的机器学习开源项目&#xff0c;总共270万颗星分为32个类别。所有项目均按项目质量得分排名&#xff0c;该得分是根据从GitHub和不同程序包管理器自动收集的各种指标计算得出的。资源整理自网络&#xff0c;资源获取见源地址&#xff1a;https://github.c…