python牛顿法求方程的根_[python科学计算]sympy求方程数值解的方法

Sympy是python中非常强大的符号运算库,可以以书写习惯表示数学表达式。下面介绍用Sympy求方程数值解的方法。

下面代码全部在

from sympy import *

init_printing(use_unicode=True) # 按书写习惯输出

下运行。

数学表达式的输入

首先声明符号:

x = symbols('x')

即计算机中的变量x代表数学表达式中的x。在后文输出中所有的x会显示为x。如果x=symbols('x0'),则输入的方程中所有x将在输出中以x0表示。

如果需要希腊字母

l, r = symbol('lambda rho')

l, r将分别以\(\lambda, \rho\)表示。可以在一个表达式中同时声明多个符号。

或者使用var()声明:

var('x')

与上面等效。

声明表达式:

f = (5/x)*(exp(x)-1)-exp(x)

此时若输出f可以看到书写习惯的表达式。由于表达式在markdown下显示不正常,在此不放置示例。注意f的类型是class 'sympy.core.add.Add'

求\(f(x)=0\)数值解

因为有的函数零点不止一个,因此在Sympy中解的输出为一个list。使用solve(表达式,自变量符号)可以解析地解方程:

s, = solve(f, x)

这里根据上面f的赋值,得到s为

LambertW(-5e**-5)+5

其中用了特殊函数表达。

我们需要求这个结果的数值近似,则输出

s.evalf()

得到输出

4.96511423174428

就是方程\(f(x)=0\)的数值解。

求给定自变量\(x\)值时函数\(f(x)\)的值 | 将表达式转化为函数

f.evalf(subs = {x:4.96})

得到\(f(4.96)\)的数值

0.141885450782171

如果需要以计算机函数的形式定义函数f(x),则可以使用lambdify()进行转化:

f_func = lambdify(x, f)

之后可以调用

f_func(4.96)

输出

0.141885450782

利用这个方法可以测试方程的数值算法,如使用sympy接口写牛顿法等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值