python - 在 python 中处理复数
问题描述
我正在使用这个等式:
import numpy as np
ld = 1.3
aut = -np.sqrt(-4*ld*(ld - 1)*np.log(ld) + (ld + np.log(ld) - 1)**2)/(2*(ld - 1)) + (ld + np.log(ld) - 1)/(2*(ld- 1))
aut
但是当我尝试得到结果时出现错误:
invalid value encountered in sqrt
我知道解决方案可能是一个复数。有谁知道我怎样才能从这个等式中得到结果?
谢谢!
解决方案
问题是np.sqrt
遇到负数。由于您正在寻找复杂的解决方案,一个(明显的)解决方案是将数字包装在np.complex
:
(-np.sqrt(np.complex(-4*ld*(ld - 1)*np.log(ld)
+ (ld + np.log(ld) - 1)**2 + 0))/(2*(ld - 1))
+ (ld + np.log(ld) - 1)/(2*(ld- 1))
)
输出:
(0.937273774112485-0.5083597988171367j)
推荐阅读
- java - 真的是内存泄漏吗?
- c - 冒泡排序逻辑,迭代次数
- python - 在 Django 中动态渲染矩阵形式
- java - 当您不拥有 Socket 服务器并且看不到它在做什么时,从 Socket Connection 解析输入字符串的最佳方法是什么?
- c# - 名称 <...> 不存在于命名空间 <...>
- math - 计算一个数字的所有可能部分的程序
- nuxt.js - 响应式 mixin 不适用于 nuxt.js
- c - 从文件中读取内容并将其存储到 C 中的 String
- javascript - Javascript - 在单个字符串的不同行上返回对象的值
- java - 创建一个程序,提示用户输入 1 到 15 之间的数字并打印总和,如下所示: 1=1, 1+2=3, 1+2+3=6, 1+2+3+4=10