感谢国防科大刘万伟老师提供了隐函数图像绘制的原始问题以及完美答案,我又补充了一点符号计算的基础知识。
>>> from sympy import *
#定义符号
>>> x,y,z = symbols('x y z')
>>> x
x
#定义表达式
>>> e = cos(x) + 1
#变量替换
>>> e.subs(x,z)
cos(z) + 1
>>> e
cos(x) + 1
>>> e = x**y
>>> e
x**y
#变量替换
>>> e.subs(x, x**2)
(x**2)**y
>>> e = sin(2*x)+cos(2*z)
>>> e
sin(2*x) + cos(2*z)
#三角函数展开
>>> expand_trig(e)
2*sin(x)*cos(x) + 2*cos(z)**2 - 1
>>> x
x
>>> e = cos(x)
>>> e
cos(x)
#把变量替换为常量,表达式求值
>>> e.subs(x, 0)
1
>>> e = x**3 + 4*x*y -z
>>> e.subs([(x,2), (y,4), (z,0)])
40
>>> e = 'x**2 + 0.5*x**2 + 3*x - 2*x + 1/2'
#表达式简化
>>> sympify(e)
1.5*x**2 + x + 1/2
>>> sympify(e).subs(x, 2)
8.50000000000000
>>> e = sqrt(9)
>>> e.evalf()
3.00000000000000
>>> e = cos(2*x)
>>> e.evalf(subs={x:2.4})
0.0874989834394464
#定义绘图函数
>>> ezplot = lambda expr:plot_implicit(sympify(expr))
#绘制隐函数图像,圆
>>> ezplot('(x-1)**2 + (y-1)**2 -4')
#绘制隐函数图像,椭圆
>>> ezplot('(x-1)**2 + (y-1)**2/4 -4')