声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2304|回复: 1

[Python] 三行搞定拉格朗日多项式

[复制链接]
发表于 2013-12-16 14:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本帖最后由 mayaview 于 2013-12-16 14:41 编辑

我看Mathematica版有人用Mathematica写拉格朗日多项式,我来个Sympy的版本:
[code=Python width=600px]def LagrangPoly(x,order,i,xi=None):
    if xi==None:
        xi=symbols('x:%d'%(order+1))
    index = range(order+1)
    index.pop(i)
    return prod([(x-xi[j])/(xi-xi[j]) for j in index])[/code]功能还行,动态生成变量x=symbols('x')LagrangPoly(x,5,0)
[size=16.799999237060547px](x–x1)(x–x2)(x–x3)(x–x4)(x–x5)(x0–x1)(x0–x2)(x0−x3)(x0–x4)(x0–x5)
也可以做数值行的,比如下面可以做二次单元的形函数:x=symbols('x')simplify(LagrangPoly(x,2,0,[-1,0,1])),simplify(LagrangPoly(x,2,1,[-1,0,1])),simplify(LagrangPoly(x,2,2,[-1,0,1]))
[size=16.799999237060547px](12x(x−1),–x2+1,12x(x+1))


评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2014-4-14 00:58 | 显示全部楼层
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-23 10:25 , Processed in 0.091850 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表