sách gpt4 ai đã đi

Ký hiệu Python sympy

In lại 作者:行者123 更新时间:2023-12-05 06:58:22 27 4
mua khóa gpt4 Nike

当我使用“x”和“z”作为符号时,这段代码没有问题:

from sympy import *
x, z = symbols('x z')
y = -6*x**2 + 2*x*z**0.5 + 50*x - z
solve((diff(y, x), diff(y, z)))
y.subs({x: 5, z: 25})

但是当我使用“q”和“a”时,solve 没有给我任何解决方案。

q, a = symbols('q a')
y = -6*q**2 + 2*q*a**0.5 + 50*q - a
solve((diff(y, q), diff(y, a)))
y.subs({q: 5, a: 25})

如您所见,我使用“subs”来检查目标函数中是否有拼写错误。

更新:我使用“Symbol”单独设置每个变量,但再次使用“q”和“a”不起作用。

# This works
x = Symbol('x')
z = Symbol('z')
y = -6*x**2 + 2*x*z**0.5 + 50*x - z
solve((diff(y, x), diff(y, z)))

# This does not work
q = Symbol('q')
a = Symbol('a')
y = -6*q**2 + 2*q*a**0.5 + 50*q-a
solve((diff(y, q), diff(y, a)))

Cảm ơn.

1 Câu trả lời

知道了!

这完全取决于变量的字母顺序。

如果您在第一个示例中将 x 替换为 z và sẽ z 替换为 x 它也会停止工作.

内部 solve 将表达式发送到 sympy.solvers 中的函数 _solve,然后它会尝试求解您的方程,但多次失败。

最后,作为最后的努力,它尝试通过从中选取符号来解决 -sqrt(a) + q hoặc x - sqrt(z)一个内部函数 _ok_syms,带有一个按字母顺序排序的参数(即使没有这个参数它仍然会,但如果用 reversed 包装它神奇地使你的例子完全相反方式)。

因此它确实将 x - sqrt(z) 求解为 x: sqrt(z)-sqrt(a) + qBẰNG a: q**2.

虽然在第一种情况下它以易于求解的 50 - 10*sqrt(z) 结束,但在第二种情况下它在 -12*q + 2*sqrt 上丢失(q**2) + 50 因为它无法简化 sqrt(q**2).

来源:大量测试: https://github.com/sympy/sympy/blob/master/sympy/solvers/solvers.py

关于Python sympy 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64637807/

27 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com