【问题标题】:Integrating functions to return an array集成函数以返回数组
【发布时间】:2020-04-09 14:48:12
【问题描述】:
import numpy as np
from scipy import integrate
import math as m
#import quadpy

#The function
I = lambda l: 0.06977 + (7.0625*(1-m.exp(-((l-0.26053)/0.15994)))**2.28411)*(m.exp(-((l-0.26053)/0.15994)))
np.vectorize(I)

def Iint(z):
    return integrate.quad(I, 0, z)

Iint=np.vectorize(Iint)
z=np.arange(0,100)

Ia=Iint(z)
print (Ia)

它留下错误“无法将复数转换为浮点数”

提前致谢 请帮我解决这个问题

我认为这个错误是由于函数没有被矢量化

`Traceback (most recent call last):`

  `File "C:\Users\Admin\.spyder-py3\untitled2.py", line 22, in <module>
    an=Iint(z)`

  `File "D:\Jupyter\lib\site-packages\numpy\lib\function_base.py", line 2091, in __call__
    return self._vectorize_call(func=func, args=vargs)`

  `File "D:\Jupyter\lib\site-packages\numpy\lib\function_base.py", line 2161, in _vectorize_call
    ufunc, otypes = self._get_ufunc_and_otypes(func=func, args=args)`

  `File "D:\Jupyter\lib\site-packages\numpy\lib\function_base.py", line 2121, in _get_ufunc_and_otypes
    outputs = func(*inputs)`

  `File "C:\Users\Admin\.spyder-py3\untitled2.py", line 17, in Iint
    return integrate.quad(I, 0, z)`

  `File "D:\Jupyter\lib\site-packages\scipy\integrate\quadpack.py", line 342, in quad
    points)`

  `File "D:\Jupyter\lib\site-packages\scipy\integrate\quadpack.py", line 453, in _quad
    return _quadpack._qagse(func,a,b,args,full_output,epsabs,epsrel,limit)`

【问题讨论】:

  • 能否请您包括错误的整个追溯?
  • 请将其格式化为代码。编辑窗口有很好的说明。您应该仔细阅读它们。

标签: python numpy scipy


【解决方案1】:

不要使用np.vectorize - 它很慢而且很难正确使用。

 # Iint=np.vectorize(Iint)
 z=np.arange(0,100)
 alist = []
 for i in z:
      alist.append(Iint(i))
 print(alist)
 print(np.array(alist))

裸露的:

 np.vectorize(I)

什么都不做。它不能就地运行。

错误“无法将复数转换为浮点数”可能是otypes np.vectorize 的试用结果。它对quad 的第一次调用返回一个真实值,它希望所有调用都这样做。我怀疑对于一些大于 0 的z,结果很复杂。所以你可以通过设置otypes来绕过这个错误,但我仍然认为np.vectorize比较差。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    相关资源
    最近更新 更多