Numpy多项式函数

多项式函数是变量的整数次幂与系数的乘积之和,可以用下面的数学公式表示:

f(x) = a[n]*x^n + a[n-1]*x^(n-1) + … + a[2]*x^2 + a[1]*x + a[0]

    由于多项式函数只包含加法和乘法运算,因此它很容易计算,并且可以用于计算其他数学函数的近似值。多项式函数的应用非常广泛,例如在嵌入式系统中经常会用它计算正弦、余弦等函数。在Numpy中,多项式函数的系数可以用一维数组表示。
例:f(x)=x^3 - 2x + 1可以用下面数组表示,其中a[0]是最高次的系数,a[-1]是常数项,注意x^2的系数为0。

 1 #-*- coding:utf-8 -*-
 2 
 3 '''
 4 导入函数库
 5 '''
 6 import numpy as np
 7 
 8 #f(x) = x^3 -2x + 1
 9 a = np.array([1,0,-2,1])
10 #调用poly1d(a)将系数转换为一元多项式
11 f = np.poly1d(a)
12 print(type(f))
13 print('传入值得到的具体结果',f([1,2,3,4]))
14 #多项式的加法
15 newp = f + [1,1,3]
16 print(newp)

多项式对象的deriv()和integ()方法分别计算多项式函数的微分和积分

1 #求微分和积分
2 f.deriv()
3 f.integ()

多项式的根可以用roots()函数来计算
而poly()函数可以将根转换回多项式的系数

1 roots = np.roots(f)
2 np.poly(roots)

polyfit()函数可以对一组数据使用多项式函数进行拟合,找到和这组数据最接近的多项式的系数。我们来计算-π/2~π/2区间与sin(x)函数最接近的多项式的系数:

1 x = np.linspace(-np.pi/2,np.pi/2, 1000)
2 y = np.sin(x)
3 for arg in [3,5,7]:
4     print(np.polyfit(x, y, arg))

第一步:通过linespace()将-π/2~π/2区间分为1000-1份。
第二步:计算拟合目标函数sin(x)的值。
第三步:将目标函数的数组传递给polyfit()进行拟合,第三个参数arg为多项式函数的最高阶数。polyfit()所得到的多项式和目标函数在给定的1000个点之间的误差最小,polyfit()返回多项式的系数数组。
第四步:使用polyval()计算多项式函数的值,并计算与目标函数的差的绝对值。

 

转载于:https://www.cnblogs.com/LgyBean/p/6651340.html

numpy中的多项式环是指通过numpy库中的poly1d类创建的多项式对象,用于进行多项式的运算和拟合。poly1d类可以通过多项式的系数来创建多项式对象,然后可以使用该对象进行多项式的求值、加减乘除等运算。 通过numpy中的polyval函数可以计算多项式在给定点上的值。函数的参数poly是表示多项式的系数数组,x[n]是表示横轴点的数组中的第n个元素。函数会返回多项式在给定点上的值。 而多项式拟合则可以使用numpy中的polyfit函数来实现。该函数的参数x是表示横轴长度的数组,a是表示拟合点集的数组,n是指定拟合多项式的阶数。函数会返回拟合点集得到的n级多项式的系数数组。 因此,numpy库提供了多项式环的支持,可以方便地进行多项式的计算和拟合。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [在python中利用numpy求解多项式以及多项式拟合的方法](https://download.csdn.net/download/weixin_38535808/12862132)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [[转载] PythonNumpy包的用法](https://blog.csdn.net/u013946150/article/details/113462254)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值