Numpy 在Symphy中计算和绘制参数方程

Numpy 在Symphy中计算和绘制参数方程,numpy,sympy,parametric-equations,Numpy,Sympy,Parametric Equations,所以,我在辛普森里努力研究这些参数方程 你问的是两个截然不同的问题。一个是关于求解符号表达式的问题,另一个是关于绘制曲线的问题 首先,关于符号表达a可以定义为a=sp.symbols('a',real=True,nonzero=True)和theta为th=sp.symbols('theta',real=True)。不需要将f和g定义为symphy符号,因为它们被指定了一个symphy表达式。要解方程,只需使用sp.solve(f+g,th)。Sympy给出了[pi,pi/a,pi/(2*(a-

所以,我在辛普森里努力研究这些参数方程


你问的是两个截然不同的问题。一个是关于求解符号表达式的问题,另一个是关于绘制曲线的问题

首先,关于符号表达<代码>a
可以定义为
a=sp.symbols('a',real=True,nonzero=True)
theta
th=sp.symbols('theta',real=True)
。不需要将f和g定义为symphy符号,因为它们被指定了一个symphy表达式。要解方程,只需使用sp.solve(f+g,th)。Sympy给出了
[pi,pi/a,pi/(2*(a-1)),pi/(a+1)]
作为结果

Symphy还有一个绘图功能,可以称为
sp.plot(*[(f+g).subs({a:a_val}),用于[2,4,6,8]]中的a_val)
。但对颜色等选项的支持非常有限

为了获得更多控制,matplotlib可以基于numpy函数进行打印
sp.lambdify
转换表达式:
sp.lambdify((th,a),f+g,'numpy')

然后,matplotlib可以进行打印。有许多选项可以调整结果

下面是一些示例代码:

import matplotlib.pyplot as plt
import numpy as np
import sympy as sp

th = sp.symbols('theta', real=True)
a = sp.symbols('a', real=True, nonzero=True)

f = sp.cos(th) - sp.sin(a*th)
g = sp.sin(th) + sp.cos(a*th)
thetas = sp.solve(f+g, th)
print("Solutions for theta:", thetas)

fg_np = sp.lambdify((th, a), f+g, 'numpy')

fig, ax = plt.subplots(1, figsize=(12, 12))
theta_range = np.linspace(0, 2*np.pi, 750)
colors = plt.cm.Set2.colors
for a_val, color in zip([2,4,6,8], colors):
    plt.plot(theta_range, fg_np(theta_range, a_val), color=color, label=f'a={a_val}')
plt.axhline(0, color='black')
plt.xlabel("theta")
plt.ylabel(f+g)
plt.legend()
plt.grid()
plt.autoscale(enable=True, axis='x', tight=True)
plt.show()

直接在
numpy
x=np.cos(theta_range)-np.sin(a*theta_range)
中编写
f
g
表达式应该很容易。我明白了,但之后我该怎么办?你读了
plt
文档。对不起,我不确定你在说什么。我误解了你问题中的什么吗?