mpmath中的mpf是什么意思?

时间:2015-12-11 12:07:52

标签: python numpy sympy mpmath

以下

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

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

x = mp.arange(0,1,0.1)
y=x
plt.plot(x,y)
plt.show()

一切都很好

代码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()
发生

错误,说:不能将序列乘以∫' 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代表什么,mpf是什么。为什么上面的代码表现得那样?如果x不是数值数组,为什么它可以用于绘图?如果它是一个数组,为什么它不能乘以数字呢?我很困惑!

4 个答案:

答案 0 :(得分:1)

mpf是mpmath库中的一个类来表示real float,但它不是int,也不是float ...

1-2中的

你试过y=mp.mpf(2).*x吗?

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

in 4) 它是有效的,因为你没有使用mpf数字,而是一个numpy数组,它在你写的时候定义了乘法运算。

答案 1 :(得分:1)

您的x只是一个列表:

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

这意味着您可以获得正常的列表行为:

>>> x * 2.0
TypeError: can't multiply sequence by non-int of type 'float'
>>> y = [e * 2.0 for e in x]

这将转换为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数组作为输入。

答案 2 :(得分:0)

x是一个mp - 浮点数组;你用它制作的np.array可以用普通python数组不能的方式使用。

答案 3 :(得分:0)

mpmath提供了自己的数字类型。类mpf将用于实数浮点数(mpc用于复数浮点数等)。 您可以从不同的其他python类型创建mph实例,如字符串,整数,浮点数以及其他mpf实例。 mpf实例的精度将由全局mpmath工作精度设置。

有关详情,请访问SymPy Modules Reference