gpt4 book ai didi

python - 假设 Sympy 中复数的正实部

转载 作者:行者123 更新时间:2023-11-30 22:16:47 27 4
gpt4 key购买 nike

我无法弄清楚如何在 Sympy 中假设复数的正实部。Mathematica 代码示例:

a = InverseFourierTransform[ R/(I omega - lambda) +  Conjugate[R]/(I omega - Conjugate[lambda]), omega, t,   FourierParameters -> {1, -1}]

Simplify[a, {Re[lambda] < 0, t > 0}]

类似的 Sympy 代码:

import sympy as sym
sym.init_printing()

ω = sym.symbols('omega', real=True, positive=True)

R, λ = sym.symbols('R, lambda', complex=True)

t = sym.symbols('t', real=True, positive=True)

α = R/(sym.I*ω-λ)+sym.conjugate(R)/(sym.I*ω-sym.conjugate(λ))

sym.inverse_fourier_transform(α, ω, t)

我如何假设 lambda 的实部为正?如果我假设 lambda 具有 positive=True,则 sympy 假设 imaginary=False

有什么想法吗?

最佳答案

创建两个实数符号 x、y,假设 x 为正,并令 λx + I*y

import sympy as sym
ω, x, t = sym.symbols('omega x t', positive=True)
y = sym.symbols('y', real=True)
R = sym.symbols('R')
λ = x + sym.I*y
α = R/(sym.I*ω-λ)+sym.conjugate(R)/(sym.I*ω-sym.conjugate(λ))
res = sym.inverse_fourier_transform(α, ω, t)

结果是

2*pi*R*exp(2*pi*t*(x + I*y)) + 2*pi*exp(2*pi*t*(x - I*y))*conjugate(R)

然后您可以通过替换返回到单符号 λ:

λ = sym.symbols('lambda')
res.subs(x + sym.I*y, λ).conjugate().subs(x + sym.I*y, λ).conjugate()

获取

2*pi*R*exp(2*pi*lambda*t) + 2*pi*exp(2*pi*t*conjugate(lambda))*conjugate(R)

(需要两个共轭的技巧,因为 subs 不会用共轭(lambda)替换 x - I*y。)

<小时/>

关于假设的评论

  • complex=True 是多余的;实数包含在复数中(7 是复数),因此这没有效果
  • 当给出 positive=True 时,real=True 是多余的

关于python - 假设 Sympy 中复数的正实部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49852207/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com