mpmath中的强积金是什么意思?

2024-06-07 18:43:17 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的x具有值:

[mpf('0.0') mpf('0.10000000000000001') mpf('0.20000000000000001')
 mpf('0.30000000000000004') mpf('0.40000000000000002') mpf('0.5')
 mpf('0.60000000000000009') mpf('0.70000000000000007')
 mpf('0.80000000000000004') mpf('0.90000000000000002')]

代码1

^{pr2}$

一切都很好

代码2

import numpy as np
import mpmath as mp
import matplotlib.pyplot as plt

x = mp.arange(0,1,0.1)
y = 2.*x

plt.plot(x,y)
plt.show()

发生错误,说明:无法将sequence乘以“float”类型的非int。 所以在代码3我改了2。到2

代码3

import numpy as np
import mpmath as mp
import matplotlib.pyplot as plt

x = mp.arange(0,1,0.1)
y = 2*x

plt.plot(x,y)
plt.show()

这一次它说:x和y的第一维度必须相同。在

最后,我发现我可以使用np.array使x成为一个数组,所有的麻烦都消失了。在

代码4

import numpy as np
import mpmath as mp
import matplotlib.pyplot as plt

x = mp.arange(0,1,0.1)
y = 2.*np.array(x)

plt.plot(x,y)
plt.show()

谁能给我解释一下,x代表什么,什么是强积金。为什么上面的代码会这样?如果x不是数字数组,为什么可以用它来绘图?如果它是一个数组,为什么它不能乘以一个数?我太糊涂了!在


Tags: 代码importnumpyplotmatplotlibasshownp
3条回答

x是一个mp-floats的数组np.数组您可以用普通python数组无法使用的方式使用它。在

mpf是mpmath库中表示real float的类,但它不是int,也不是float。。。在

在1-2)中,您是否尝试过y=mp.mpf(2).*x?在

在3) 我还没有看到如何定义int与mpf的乘法,但是如果它与字符串一样工作,那么在这种情况下y的维数就不会相同。 编辑:实际上,2*x给了我扩展数组[x,x]

在4) 它是有效的,因为您使用的不是mpf数字,而是一个numpy数组,它具有您编写的定义的乘法运算。在

您的x只是一个列表:

>>> x = mp.arange(0, 1, 0.1)
>>> type(x)
list

这意味着你得到了正常的列表行为:

^{pr2}$

这将转换为一个NumPy对象数组:

>>> np.array(x).dtype
dtype('O')

这意味着您可以执行元素操作:

>>> np.array(x) * 2000.0
array([mpf('0.0'), mpf('200.0'), mpf('400.0'), mpf('600.00000000000011'),
       mpf('800.0'), mpf('1000.0'), mpf('1200.0000000000002'),
       mpf('1400.0000000000002'), mpf('1600.0'), mpf('1800.0')], d

plt.plot(x,y)可以使用列表或NumPy数组作为输入。在

相关问题 更多 >

    热门问题