[python科学计算]sympy求方程数值解的方法 |
您所在的位置:网站首页 › lambertW函数数值计算 › [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\)的数值解。 更多solve()的功能见Sympy documentation: http://docs.sympy.org/latest/tutorial/solvers.html 求给定自变量\(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接口写牛顿法等。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |