首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于sympy.printing.mathml中的括号错误

关于sympy.printing.mathml中的括号错误
EN

Stack Overflow用户
提问于 2019-06-06 14:22:29
回答 2查看 162关注 0票数 1

我将Python字符串转换为一个公式,表达式如下:

我使用MathML命令将公式转换为mathml格式。

代码语言:javascript
复制
from sympy import *
from sympy.printing.mathml import mathml

print(mathml(sympify("(2*x + 3*y + 1)*(4*x**2 - 6*x*y - 2*x + 9*y**2 - 3*y + 1)"),printer='presentation'))

因此,输出了以下代码。

代码语言:javascript
复制
<mrow><mrow><mrow><mn>2</mn><mo>&InvisibleTimes;</mo><mi>x</mi></mrow><mo>+</mo><mrow><mn>3</mn><mo>&InvisibleTimes;</mo><mi>y</mi></mrow><mo>+</mo><mn>1</mn></mrow><mo>&InvisibleTimes;</mo><mrow><mrow><mn>4</mn><mo>&InvisibleTimes;</mo><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>6</mn><mo>&InvisibleTimes;</mo><mi>x</mi><mo>&InvisibleTimes;</mo><mi>y</mi></mrow><mo>-</mo><mrow><mn>2</mn><mo>&InvisibleTimes;</mo><mi>x</mi></mrow><mo>+</mo><mrow><mn>9</mn><mo>&InvisibleTimes;</mo><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>3</mn><mo>&InvisibleTimes;</mo><mi>y</mi></mrow><mo>+</mo><mn>1</mn></mrow></mrow>

我将代码嵌入到HTML中,并按以下方式进行了尝试。

test.html

代码语言:javascript
复制
<html>
<head>
  <script async="" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML"></script>
</head>
<body>
<math>
<mrow><mrow><mrow><mn>2</mn><mo>&InvisibleTimes;</mo><mi>x</mi></mrow><mo>+</mo><mrow><mn>3</mn><mo>&InvisibleTimes;</mo><mi>y</mi></mrow><mo>+</mo><mn>1</mn></mrow><mo>&InvisibleTimes;</mo><mrow><mrow><mn>4</mn><mo>&InvisibleTimes;</mo><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>6</mn><mo>&InvisibleTimes;</mo><mi>x</mi><mo>&InvisibleTimes;</mo><mi>y</mi></mrow><mo>-</mo><mrow><mn>2</mn><mo>&InvisibleTimes;</mo><mi>x</mi></mrow><mo>+</mo><mrow><mn>9</mn><mo>&InvisibleTimes;</mo><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mn>3</mn><mo>&InvisibleTimes;</mo><mi>y</mi></mrow><mo>+</mo><mn>1</mn></mrow></mrow>
</math>
</body>
</html>

但是,使用此代码,输出将丢失Paren论断,如下面的图像所示。

我读了sympy.printing.mathml的源代码。

所以我想知道_print_Interval方法是用来做什么的。

这与公式中缺少部分的问题有关吗?

这个表达式就是一个例子。我想正确地转换更复杂的公式。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-08 11:19:40

我在日语版本的堆栈溢出中得到了答案。https://ja.stackoverflow.com/q/55578/22541

修复这个问题可以解决这个问题。

在此之前

代码语言:javascript
复制
for term in terms:
    x = self._print(term)
    mrow.appendChild(x)

之后

代码语言:javascript
复制
for term in terms:
    mrow.appendChild(self.parenthesize(term, PRECEDENCE['Mul']))
票数 0
EN

Stack Overflow用户

发布于 2019-06-06 16:16:52

isympy会话中:

代码语言:javascript
复制
In [56]: sympify("(2*x + 3*y + 1)*(4*x**2 - 6*x*y - 2*x + 9*y**2 - 3*y + 1)")                          
Out[56]: 
                ⎛   2                    2          ⎞
(2⋅x + 3⋅y + 1)⋅⎝4⋅x  - 6⋅x⋅y - 2⋅x + 9⋅y  - 3⋅y + 1⎠
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56479585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档