Plot Ipython Symphy绘图错误

Plot Ipython Symphy绘图错误,plot,ipython,sympy,Plot,Ipython,Sympy,我试图绘制一个方程,它是使用Symphy解块的结果 以下是我的代码和错误消息: %pylab inline from sympy import init_printing;init_printing() from sympy import * d,vf,a,vi,t,x,h,g,theta=symbols('d vf a vi t x h g theta') equations=[Eq(sin(theta),(0.5*g*t**2+h)/(vi*t)),Eq(cos(theta),x/(vi*t

我试图绘制一个方程,它是使用Symphy解块的结果 以下是我的代码和错误消息:

%pylab inline
from sympy import init_printing;init_printing()
from sympy import *
d,vf,a,vi,t,x,h,g,theta=symbols('d vf a vi t x h g theta')
equations=[Eq(sin(theta),(0.5*g*t**2+h)/(vi*t)),Eq(cos(theta),x/(vi*t))]
ans=solve(equations,[h,t],dict=True)
h=ans[0][h]
vi=5
g=9.8
theta=0.707
plot(h,(x,0,5))
然后我得到以下错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-11-f388e50e21e7> in <module>()
----> 1 plot(h,(x,0,5))

C:\Anaconda\lib\site-packages\sympy\plotting\plot.pyc in plot(*args, **kwargs)
   1158     show = kwargs.pop('show', True)
   1159     series = []
-> 1160     plot_expr = check_arguments(args, 1, 1)
   1161     series = [LineOver1DRangeSeries(*arg, **kwargs) for arg in plot_expr]
   1162 

C:\Anaconda\lib\site-packages\sympy\plotting\plot.pyc in check_arguments(args, expr_len, nb_of_free_symbols)
   1620         if len(free_symbols) > nb_of_free_symbols:
   1621             raise ValueError("The number of free_symbols in the expression"
-> 1622                                 "is greater than %d" % nb_of_free_symbols)
   1623         if len(args) == i + nb_of_free_symbols and isinstance(args[i], Tuple):
   1624             ranges = Tuple(*[range_expr for range_expr in args[i:i + nb_of_free_symbols]])

ValueError: The number of free_symbols in the expressionis greater than 1
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
---->1号地块(h,(x,0,5))
C:\Anaconda\lib\site packages\sympy\plotting\plot.pyc在plot(*args,**kwargs)
1158 show=kwargs.pop('show',True)
1159系列=[]
->1160 plot_expr=检查参数(args,1,1)
1161系列=[LineOver1DRangeSeries(*arg,**kwargs)用于绘图expr中的arg]
1162
C:\Anaconda\lib\site packages\sympy\plotting\plot.pyc in check_参数(args、expr_len、nb_of_free_符号)
1620如果len(自由\u符号)>nb\u自由\u符号:
1621 raise VALUE ERROR(“表达式中的自由_符号数”)
->1622“大于%d”%nb\u个自由符号)
1623如果len(args)=i+nb_的自由符号和i实例(args[i],元组):
1624 ranges=Tuple(*[range\u expr表示args中的range\u expr[i:i+nb\u表示自由符号])
ValueError:表现主义中的自由_符号数大于1
如果我重新输入h的corect方程,那么我就得到了正确的图


感谢您的帮助,我正在尝试开发此工具,供我的物理学生明年使用。

您尝试设置
vi
g
theta
的值的方法不起作用。 符号表达式
h
仍然由您定义的sympy符号对象组成,而变量名称现在指向您定义的数字。要解决此问题,请更换管路

vi=5
g=9.8
theta=0.707


我会选择你认为更清楚的。你试图设置
vi
g
theta
值的方法不起作用。 符号表达式
h
仍然由您定义的sympy符号对象组成,而变量名称现在指向您定义的数字。要解决此问题,请更换管路

vi=5
g=9.8
theta=0.707


无论你觉得哪个更清楚,我都同意。

这不是SymPy或IPython的问题,这是python语法的基本问题。首先阅读python语言教程或类似的内容。在您开始使用它提供的任何库之前,了解您正在使用的语言是很重要的。顺便说一句,您应该更新到SymPy 0.7.3。@Krastanov即使是懂Python的人也可能会陷入这种困境,因为并不总是清楚魔法库能提供多少功能。我认为如果你能理解所有的东西,你应该很好地去做。这不是SymPy或IPython的问题,这是python语法的基本问题。首先阅读python语言教程或类似的内容。在您开始使用它提供的任何库之前,了解您正在使用的语言是很重要的。顺便说一句,您应该更新到SymPy 0.7.3。@Krastanov即使是懂Python的人也可能会陷入这种困境,因为并不总是清楚魔法库能提供多少功能。我想如果你能理解所有的事情,你就可以走了。非常感谢你一直以来都是一个伟大的人help@user2610827然后,你应该考虑,因为这给了你和IanH一些声誉,以及标记你的问题,以解决未来的参考。非常感谢你是一个伟大的。help@user2610827那么你应该考虑一下,因为这给了你和伊恩一些声誉,也给你的问题打上了解决的标记,以备将来参考。
h = h.subs(vi,5).subs(g,9.8).subs(theta,.707)