首页/文章/ 详情

数值微分|多项式的导数计算

7月前浏览3478

在数值积分推导辛普森公式时就是将函数插值成为多项式形式,原因在于多项式的简洁。任何初等函数都可以用泰勒公式展开成多项式的形式,然后在多项式的基础上作求导运算。也可以用别的插值方法,比如拉格朗日插值,样条插值,埃尔米特插值等等。

如果    作为一组离散数据点给出,则插值会非常有效。通常建议将多项式的阶数应该小于6,以避免振荡。






##python定义多项式就是将多项式系数保存在一个列表中p = a[n]for i in range(1,n+1):                               p = a[n-i] + p*x
 

四阶多项式

 
 

可写成

 
 

 
 

这里,     一样。对于    次多项式

 
 

有以下递推式

 
 

两边对    求一阶导,得

 
 

对    求二阶导,得

 
 

以上过程就体现了多项式的简洁。Python代码:


































"""p = a[0] + a[1]*x + a[2]*xˆ2 +...+ a[n]*xˆn计算多项式p的一阶导数dp以及二阶导数ddp
"""
class Polynomials:    def __init__(self, a):        self.a = a
       # 计算多项式的一阶导数dp以及二阶导数ddp    def evalPolynomials(self,x):        n = len(self.a) - 1        p = self.a[n]        dp = 0.0        ddp = 0.0
       for i in range(1,n+1):            ddp = ddp*x + 2.0*dp            dp = dp*x + p            p = p*x + self.a[n-i]
       return p,dp,ddp
### 创建多项式对象px = 1 + x + 2xˆ2 + 3xˆ3 + 4xˆ4px = Polynomials([1,1,2,3,4])
## px在x=1处的一阶导数与二阶导数[p0,p1,p2] = px.evalPolynomials(1)
print(p0,p1,p2)
 


★★★★往期相关★★★★

通过案例学Python之定义函数类

数值积分|第二类反常积分

数值积分|第一类反常积分

数值积分|中点法则(Midpoint Rule)

数值积分|龙贝格公式

数值积分|自适应辛普森积分公式

数值积分|自适应梯形积分

数值积分|牛顿-柯特斯公式

数值积分|高斯积分

数值积分|泰勒(Taylor)公式求积分

数值积分| 辛普森公式

Python实现辛普森公式



来源:数值分析与有限元编程
python
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-04-02
最近编辑:7月前
太白金星
本科 慢慢来
获赞 5粉丝 14文章 326课程 0
点赞
收藏
作者推荐

类和对象的哲学思考

面向对象程序设计(OOP)是一种程序设计的泛型,同时也是一种程序开发的方法,它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。类(class)和对象(object)是面向对象编程的基本概念。对象是对客观事物的抽象,类是对对象的抽象,具有相同特征(属性)和功能、行为(方法)的对象归为一类。它们的关系是,对象是类的实例,类是对象的模板,即哲学中共性与个性的关系。共性存在于个性之中C++定义2个int类型的变量int apple_count {5};int orange_count {9}; 这里5和9是int类型,他们都占用4个字节,都在-2147483648~2147483647这个范围内。还可以定义很多int类型变量,他们都具有上述的特性。int类型的共性就是占用4个字节,在-2147483648~2147483647这个范围内。再比如,一副扑克牌有52张,牌点(rank)和(花色)各不相同。如果要找出52张牌的共性,那就是牌点和花色,因为任何一张牌都有牌点和花色的特性。共性是抽象的,个性是具体的int类型是抽象的,而对象5,9是具体的。如果创建一个牌类(Card):class Card {public: int rank; int suit; Card() = default; Card(int r, int s) : rank{r} ,suit {s} { } string display(){ static const string aRanks[] = {" 2", " 3", " 4", " 5", " 6", " 7", " 8", " 9", "10", " J", " Q", " K", " A" }; static const string aSuits[] = { "梅花", "方块", "红桃", "黑桃" }; return aRanks[rank] + " of " + aSuits[suit] + "."; }}; 那么这个Card类最多可以生成52个对象,其中就有“方块3”,“黑桃5”,“梅花9”等等。对象比类丰富。共性与个性相互转化在保持原有类的属性和功能的基础上,扩展新的功能称为类的继承。被继承的已有类称为父类;派生出的新类叫做子类。子类可以看作父类的一个对象,而子类又可以生成对象。这就是类和对象之间在一定条件下的转化。矛盾的共性指矛盾的普遍性,是绝对的、无条件的;矛盾的个性指矛盾的特殊性,是相对的、有条件的。矛盾共性与个性的辩证关系是指,共性寓于个性之中,个性又受共性的制约,共性和个性在一定条件下相互转化。共性是一类事物与另一类的区别,而个性是同一类事物中不同个体的区别。共性决定事物的基本性质;个性揭示事物之间的差异性。个性体现并丰富着共性。共性是绝对的、无条件的,个性是相对的、有条件的。来源:数值分析与有限元编程

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈