计算多项式的导数 np.polyder

一、计算多项式的导数:np.polyder用法

np.polyder 是 NumPy 库中的一个函数,用于计算多项式的导数。它可以接受多项式的系数表示,并返回其导数的系数。

用法:
numpy.polyder(p, m=1)

参数
p: 一维数组,表示多项式的系数。多项式的系数是按降幂排列的,例如,对于多项式 (2x^2 + 3x + 4),系数数组为 np.array([2, 3, 4])。

m: 可选参数,指定求导的次数,默认值为 1。如果设置为 2,则计算二阶导数。

返回值
返回一个一维数组,表示导数的系数。

示例:

import numpy as np

# 定义一个多项式 2x^2 + 3x + 4
p = np.array([2, 3, 4])

# 计算一阶导数
first_derivative = np.polyder(p)
print("一阶导数的系数:", first_derivative)

# 计算二阶导数
second_derivative = np.polyder(p, m=2)
print("二阶导数的系数:", second_derivative)

输出:

一阶导数的系数: [4 3]
二阶导数的系数: [4]

在这个例子中,原多项式 (2x^2 + 3x + 4) 的一阶导数是 (4x + 3)(其系数为 [4, 3]),二阶导数是常数 4(其系数为 [4],表示 (4))。

注意事项
多项式函数的系数数组中的高次项位于数组的开头,低次项位于数组的末尾。
如果在求二阶导数时,原多项式的最高次方小于 2,则可能会得到系数为 0 的多项式。

二、初始步长权重

primary_list = [0.3, 0.5, 0.7]  # 分隔点的示例
weights = [1] * len(primary_list)  # 生成 [1, 1, 1]

weights=[1]*len(primary_list) 是 Python 列表的一个创建方法,其目的是生成一个长度为 len(primary_list) 的列表,其中的每个元素都被初始化为 1。在这个例子中,weights 将会是 [1, 1, 1],这表示开始的时候每个分段的权重都是一样的。

具体用途
**初始化权重:**这个 weights 列表通常是用来初始化权重值的。在很多优化算法中,尤其是回归模型中,权重用于控制每个样本对最终模型的影响。在初始设置中,给所有权重赋值为 1 意味着每个样本(或每个盯点)在模型拟合的初期被视为同等重要。

**动态调整:**后续代码可能会更改这些权重,以便根据模型的表现、误差分析或其他标准动态调整不同点的权重。初始化为 1 可以作为一个中立的状态,后续会有逻辑来调整这些权重。

import numpy as np import matplotlib.pyplot as plt from sympy import symbols, exp, sqrt, pi, factorial, diff, hermite, lambdify,evalf,Piecewise, Eq, Function,Float,Abs,Pow import math import numpy as np import matplotlib.pyplot as plt import math from scipy.special import roots_legendre,legendre nn=1000 nn=int(nn) def legendre_deriv_zeros(n): """计算n阶勒让德多项式一阶导数的零点""" if n <= 1: return np.array([]) # 获取勒让德多项式及其导数系数 poly_coeff = legendre(n).coeffs # 多项式系数 deriv_coeff = np.polyder(poly_coeff) # 导数系数 # 使用np.roots()求解导数零点 roots = np.roots(deriv_coeff) # 筛选[-1, 1]区间内的实根 real_roots = roots[np.isreal(roots)].real valid_roots = real_roots[(real_roots >= -1) & (real_roots <= 1)] return np.sort(valid_roots) # 测试计算 print("P₅'(x)零点:", legendre_deriv_zeros(2000))报错: kn = _gam(2 * n + 1) / _gam(n + 1)**2 / 2.0**n Traceback (most recent call last): File "c:\Users\13204\Desktop\diwoods\gps.py", line 33, in <module> print("P₅'(x)零点:", legendre_deriv_zeros(2000)) ~~~~~~~~~~~~~~~~~~~~^^^^^^ File "c:\Users\13204\Desktop\diwoods\gps.py", line 20, in legendre_deriv_zeros poly_coeff = legendre(n).coeffs # 多项式系数 ~~~~~~~~^^^ File "c:\Users\13204\AppData\Local\Programs\Python\Python313\Lib\site-packages\scipy\special\_orthogonal.py", line 2492, in legendre kn = _gam(2 * n + 1) / _gam(n + 1)**2 / 2.0**n ~~~^^~ OverflowError: (34, 'Result too large') PS C:\Users\13204\Desktop\diwoods> 阶数高的时候报错怎么办
最新发布
07-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值