- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在准备一些示例,说明如何使用极坐标/笛卡尔参数化的变换来获得雅可比行列式。我的问题是双重的。首先,我想知道如何强制 sympy 在替换后取消条款。这两个矩阵是:
J1 = Matrix([[(r*cos(theta)).diff(r), (r*cos(theta)).diff(theta)],[(r*sin(theta)).diff(r),(r*sin(theta)).diff(theta)]])
J2 = Matrix([[((x**2+y**2)**(1/2.)).diff(x),((x**2+y**2)**(1/2.)).diff(y)],[atan(y/x).diff(x),atan(y/x).diff(y)]])
#substitute for x,y to have same variables for J1 and J2
J2 = trigsimp(J2.subs({x:r*cos(theta), y:r*sin(theta)}))
J2
我预计使用 cancel() 甚至 evalf() 会删除 r/(r^2)^1/2= 1 项,但事实并非如此。
其次,人们如何或能够要求 sympy 识别简单的身份,在本例中为 sin^2+cos^2 = 1?这样一来,结果就是来自 J1*J2 的已评估单位矩阵。
根据文档,这是可行的:
simplify(r/(r**2)**(1/2)*(sin(theta)**2+cos(theta)**2))
这个等价的(ish)等式没有。
J = J1*J2
simplify(J[0,0])
似乎第二个错误是第一个错误的结果。
最佳答案
在数学上,r/(r^2)^1/2= 1 并不总是正确的。如果 r 是极坐标中的非负数,则为真。所以你应该告诉 SymPy 这个:
r = Symbol('r', nonnegative=True)
theta, x, y = symbols('theta x y')
(从数学上讲,您甚至可以假设 r 严格为正,positive=True
,因为在原点处极坐标中的导数无论如何都不起作用。)
输出会更令人满意:[[1.0*cos(theta), 1.0*sin(theta)], [-sin(theta)/r, cos(theta)/r]]
只有这个1.0烦人,它从何而来?它来自 1/2。是 float 而不是有理数。使用 Rational(1, 2)
在指数中有一个有理数(对于简化很重要)。在这种情况下,指数为 1/2,使用 sqrt
更自然,它具有使指数有理数的相同效果并且更易于键入。
sqrt(x**2+y**2).diff(x)
最终结果是[[cos(theta), sin(theta)], [-sin(theta)/r, cos(theta)/r]]
至于三角简化,trigsimp(J1*J2)
会返回单位矩阵。
关于trigonometry - Sympy 取消极坐标变换雅可比矩阵中的项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37980497/
现在我使用 Jacoco 来了解整个测试套件的覆盖率,但我需要按测试用例分解覆盖率信息。 我需要创建一个程序来执行此操作,因为我们需要自动化大型套件。我想这应该通过使用 API 来完成... 有办法做
我有一个包含多个模块的 Java-Gradle 项目,这意味着多个 build.gradle 文件和多个测试文件夹。 我有一个主 build.gradle,我成功地将所有多 jacoco 报告聚合到一
我有一个 Maven 项目,我想使用 jacoco 进行代码覆盖。这是我的 pom 的相关部分 org.jacoco
当我运行 gradlew test jacocoTestReport 任务 jacocoTestReport 运行并且我得到一份测试报告。 当我运行 gradlew integTest jacocoT
尝试使用离线检测通过 jacoco 获取覆盖范围(无法使用即时检测:由于 powermock 测试用例)的 Maven 项目。将 jacocoagent.jar 添加到 Surefire 插件的类路径
我是一名优秀的程序员,十分优秀!