如何查看当前版本的sympy并升级到最新版本.我正在使用mac.我安装当前版本的方式是使用"pip install sympy"
直接分配变量不会修改使用该变量的表达式.
>>> from sympy import Symbol
>>> x = Symbol('x')
>>> y = Symbol('y')
>>> f = x + y
>>> x = 0
>>> f
x + y
Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用IPython Notebook,并对它的强大功能着迷.我一直在网上使用一些例子来开始.我正在学习本教程:http://nbviewer.ipython.org/url/finiterank.com/cuadernos/suavesylocas.ipynb但数学输出未按预期呈现.下面是我的代码和输出:
In [30]:
%load_ext sympyprinting
%pylab inline
from __future__ import division
import sympy as sym
from sympy import *
init_printing()
x,y,z=symbols("x y z")
k,m,n=symbols("k m n", integer=True)
The sympyprinting extension is already loaded. To reload it, use:
%reload_ext sympyprinting
Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.kernel.zmq.pylab.backend_inline].
For more information, type 'help(pylab)'.
In [31]:
t = sin(2*pi*x*(k**2))/ (4*(pi**2)*(k**5)) + (x**2) / (2*k)
t
Out[31]:
2 ? 2 ?
x sin?2???k ?x?
??? + ????????????? …Run Code Online (Sandbox Code Playgroud) 我不确定我用过的方法是sympy将a转换MutableDenseMatrix为a numpy.array还是numpy.matrix当前的好习惯.
我有一个符号矩阵,如:
g = sympy.Matrix( [[ x, 2*x, 3*x, 4*x, 5*x, 6*x, 7*x, 8*x, 9*x, 10*x]
[x**2, x**3, x**4, x**5, x**6, x**7, x**8, x**9, x**10, x**11]] )
Run Code Online (Sandbox Code Playgroud)
我正在转变为numpy.array:
g_func = lambda val: numpy.array( g.subs( {x:val} ).tolist(), dtype=float )
Run Code Online (Sandbox Code Playgroud)
我得到一个给定值的数组x.
SymPy中有更好的内置解决方案吗?
谢谢!
我试图用SymPy 0.7.1解决一组方程:
from sympy import *
equations = [
Eq(S('vf'), S('vi + a*t')),
Eq(S('d'), S('vi*t + 1/2*a*t**2')),
Eq(S('a'), S('10')),
Eq(S('d'), S('60')),
Eq(S('vi'), S('5'))
]
print solve(equations)
Run Code Online (Sandbox Code Playgroud)
产生正确的结果,但是以一种奇怪的顺序:
[(-4, 10, 60, -35, 5), (3, 10, 60, 35, 5)]
Run Code Online (Sandbox Code Playgroud)
如何确定哪个值适合哪个变量?变量顺序似乎是任意的. 文档建议提供其他参数:
print solve(equations, var('a'), var('d'), var('t'), var('vi'), var('vf'))
Run Code Online (Sandbox Code Playgroud)
但这似乎没有效果.
在此先感谢您的帮助!
我用sympy解决了二次方程:
import sympy as sp
q,qm,k,c0,c,vt,vm = sp.symbols('q qm k c0 c vt vm')
c = ( c0 * vt - q * vm) / vt
eq1 = sp.Eq(qm * k * c / (1 + k * c) ,q)
q_solve = sp.solve(eq1,q)
Run Code Online (Sandbox Code Playgroud)
基于一些测试,我发现只有q_solve[0]物理意义.请问始终把症情(b - sqrt(b**2 - 4*a*c))/2a放在第一位吗?我猜,它可能随着升级而改变?
Julia有内置常量pi,类型Irrational.
julia> pi
? = 3.1415926535897...
julia> ?
? = 3.1415926535897...
julia> typeof(pi)
Irrational{:?}
Run Code Online (Sandbox Code Playgroud)
从SymPy,它具有编辑N()功能,我想评价pi(或其它IrrationalS,例如e,golden等),以n个数字.
In [5]: N(pi, n=50)
Out[5]: 3.1415926535897932384626433832795028841971693993751
Run Code Online (Sandbox Code Playgroud)
这可能吗?我假设这pi是基于它的数学定义,而不是仅仅十三个小数位.
我正在尝试使用[SymPy] [1]同时替换表达式中的多个术语.我用字典作为参数尝试了[subs function] [2],但发现它依次替换.
In : a.subs({a:b, b:c})
Out: c
Run Code Online (Sandbox Code Playgroud)
问题是第一次替换导致一个术语可以被第二次替换取代,但它不应该(因为我的原因).
关于如何同时进行替换的任何想法,没有它们相互干扰?
编辑: 这是一个真实的例子
In [1]: I_x, I_y, I_z = Symbol("I_x"), Symbol("I_y"), Symbol("I_z")
In [2]: S_x, S_y, S_z = Symbol("S_x"), Symbol("S_y"), Symbol("S_z")
In [3]: J_is = Symbol("J_IS")
In [4]: t = Symbol("t")
In [5]: substitutions = (
(2 * I_x * S_z, 2 * I_x * S_z * cos(2 * pi * J_is * t) + I_y * sin(2 * pi * J_is * t)),
(I_x, I_x * cos(2 * …Run Code Online (Sandbox Code Playgroud) 我正在尝试用Sympy打印一些分区,但我注意到它没有显示对齐.
import sympy
sympy.init_printing(use_unicode=True)
sympy.pprint(sympy.Mul(-1, sympy.Pow(-5, -1, evaluate=False), evaluate=False))
# Output:
# -1
# ???
# -5 # Note that "-5" is displayed slightly more on the right than "-1".
Run Code Online (Sandbox Code Playgroud)
理由/解决这个问题?
编辑:我做了很多逆向工程使用inspect.getsource,inspect.getsourcefile但它最终并没有真正帮助.
Sympy的Pretty Printing似乎依赖于Jurjen Bos的Prettyprinter.
import sympy
from sympy.printing.pretty.stringpict import *
sympy.init_printing(use_unicode=True)
prettyForm("-1")/prettyForm("-5")
# Displays:
# -1
# --
# -5
Run Code Online (Sandbox Code Playgroud)
所以它显示对齐,但我不能让它使用unicode.
该PrettyPrinter从文件调用sympy/printing/pretty/pretty.py的方法PrettyPrinter._print_Mul简单地return prettyForm.__mul__(*a)/prettyForm.__mul__(*b)用,我想,a和b简单地['-1']和['-5'],但它不会工作.
有没有办法在SymPy中获得逐步解决方案?例如:
x**2-5 = 4
step 1 x**2-5+5=4+5
step 2 : x**2=9
step 3 :x = 3 or x= -3
Run Code Online (Sandbox Code Playgroud) sympy ×10
python ×8
math ×2
arrays ×1
constants ×1
evaluation ×1
julia ×1
matrix ×1
numpy ×1
substitution ×1