thanks for your kind help ,but there is no '*' in x Sin[1/x] + Abs[x]

在 2014年11月23日星期日UTC+8上午12时13分22秒,Ondřej Čertík写道:
>
> Hi Lee, 
>
> On Sat, Nov 22, 2014 at 4:04 AM, Lee Philip <[email protected] 
> <javascript:>> wrote: 
> > is 'x sin(1/x)+abs(x)' or 'x sin(1/x)+|x|' or 'x Sin[1/x] + Abs[x]' 
> sympy 
> > acceptable? 
> > 
> > I got  exceptions by  these expressions ,wonder is this a bug or not ? 
>
> You seem to found a bug in the Mathematica parser, i.e. this works: 
>
> In [7]: M("x*Sin[x]") 
> Out[7]: x⋅sin(x) 
>
> In [9]: M("Sin[1/x]") 
> Out[9]: 
>    ⎛1⎞ 
> sin⎜─⎟ 
>    ⎝x⎠ 
>
> But this fails: 
>
> In [10]: M("x*Sin[1/x]") 
> --------------------------------------------------------------------------- 
>
> TypeError                                 Traceback (most recent call 
> last) 
> <ipython-input-10-e58ebb4f8e06> in <module>() 
> ----> 1 M("x*Sin[1/x]") 
>
> /home/ondrej/repos/sympy/sympy/parsing/mathematica.py in mathematica(s) 
>       6 
>       7 def mathematica(s): 
> ----> 8     return sympify(parse(s)) 
>       9 
>      10 
>
> /home/ondrej/repos/sympy/sympy/core/sympify.pyc in sympify(a, locals, 
> convert_xor, strict, rational, evaluate) 
>     315     try: 
>     316         a = a.replace('\n', '') 
> --> 317         expr = parse_expr(a, local_dict=locals, 
> transformations=transformations, evaluate=evaluate) 
>     318     except (TokenError, SyntaxError) as exc: 
>     319         raise SympifyError('could not parse %r' % a, exc) 
>
> /home/ondrej/repos/sympy/sympy/parsing/sympy_parser.pyc in 
> parse_expr(s, local_dict, transformations, global_dict, evaluate) 
>     818         code = compile(evaluateFalse(code), '<string>', 'eval') 
>     819 
> --> 820     return eval_expr(code, local_dict, global_dict) 
>     821 
>     822 
>
> /home/ondrej/repos/sympy/sympy/parsing/sympy_parser.pyc in 
> eval_expr(code, local_dict, global_dict) 
>     731     """ 
>     732     expr = eval( 
> --> 733         code, global_dict, local_dict)  # take local objects 
> in preference 
>     734 
>     735     return expr 
>
> <string> in <module>() 
>
> TypeError: 'Symbol' object has no attribute '__getitem__' 
>
>
> I reported it here: 
>
> https://github.com/sympy/sympy/issues/8501 
>
> However, if you just want to use sympy, don't use the Mathematica 
> parser, but rather sympy directly, like this: 
>
> In [11]: var("x") 
> Out[11]: x 
>
> In [12]: x*sin(1/x)+abs(x) 
> Out[12]: 
>      ⎛1⎞ 
> x⋅sin⎜─⎟ + │x│ 
>      ⎝x⎠ 
>
> In [13]: _.diff(x) 
> Out[13]: 
>       d                 d                       ⎛1⎞ 
> re(x)⋅──(re(x)) + im(x)⋅──(im(x))            cos⎜─⎟ 
>       dx                dx             ⎛1⎞      ⎝x⎠ 
> ───────────────────────────────── + sin⎜─⎟ - ────── 
>                │x│                     ⎝x⎠     x 
>
> Ondrej 
>
> > 
> > 
> > 
> > test code here 
> > 
> > http://codepad.org/NyO5tj1I 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups 
> > "sympy" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an 
> > email to [email protected] <javascript:>. 
> > To post to this group, send email to [email protected] 
> <javascript:>. 
> > Visit this group at http://groups.google.com/group/sympy. 
> > To view this discussion on the web visit 
> > 
> https://groups.google.com/d/msgid/sympy/988b0ad3-bb8d-4ba6-9509-ad395f4353d2%40googlegroups.com.
>  
>
> > For more options, visit https://groups.google.com/d/optout. 
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/6aacc5d8-93ad-404a-9970-6a949ddbdfa0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to