python解符号函数 python符号用法

使用python的sympy解符号方程组后 , 如何将结果带入之后的符号表达式Sympy是python中非常强大的符号运算库python解符号函数,可以以书写习惯表示数学表达式 。下面介绍用Sympy求方程数值解的方法 。
下面代码全部在
from sympy import *
init_printing(use_unicode=True) # 按书写习惯输出
下运行 。
数学表达式的输入
首先声明符号python解符号函数:
x = symbols('x')
即计算机中的变量x代表数学表达式中的x 。在后文输出中所有的x会显示为x 。如果x=symbols('x0'),则输入的方程中所有x将在输出中以x0表示 。
如果需要希腊字母
l, r = symbol('lambda rho')
l, r将分别以λ,ρ表示 。可以在一个表达式中同时声明多个符号 。
或者使用var()声明:
【python解符号函数 python符号用法】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接口写牛顿法等 。
用python如何得到一个方程的多个解方法/步骤
用Python解数学方程,需要用到Python的一个库——SymPy库 。
SymPy是符号数学的Python库,它的目标是成为一个全功能的计算机代数系统,同时保持代码简洁、易于理解和扩展 。
如果你的电脑上还没有安装sympy库,那就赶紧安装吧,安装命令:
pip3 install sympy
请点击输入图片描述
先来解一个简单点的方程吧 。
题目: 5x + 20 = 100
先直接上代码:
from sympy import *
x = Symbol('x')
print(solve([5*x + 20 - 100], [x]))
请点击输入图片描述
再来一个复杂点的二元一次方程吧 。
题目:3x + 4y =49, 8x- y = 14
代码如下:
from sympy import *
x = Symbol('x')
y = Symbol('y')
print(solve([3*x + 4*y - 49, 8*x - y - 14], [x, y]))
请点击输入图片描述
有没有发现规律呢,简单总结一下:
1)变量赋值 , 使用symbol函数转换;
2)将方程式移到方程的左边,使右边等于0;
3)使用solve函数解方程 。
当然了,python的基础语法必须掌握,至少需要掌握python最基础的算数运算符 。
+加 ---- 两个对象相加
-减 ----- 得到负数或是一个数减去另一个数
*乘 ----- 两个数相乘或是返回一个被重复若干次的字符串
/除 ----- x 除以 y
%取模 ----- 返回除法的余数
**幂 ----- 返回x的y次幂
log()对数-----对数 log()
下面来个难度大点的方程 。
请点击输入图片描述
代码如下:
from sympy import *
t = Symbol('t')
x = Symbol('x')
m = integrate(sin(t)/(pi-t), (t, 0, x))

推荐阅读