前提・実現したいこと
pythonにおいて、xの値を変化させて以下のf(x)とg(x)に代入しsについて積分して、最終的にその2乗の和をxについてプロットしたいのですが、xがリスト型なので引数に指定すると以下のエラーメッセージが発生してしまいます。解決方法はありますか…?
発生している問題・エラーメッセージ
TypeError: only size-1 arrays can be converted to Python scalars ValueError: x and y must be the same size
該当のソースコード
python
1import numpy as np 2import matplotlib.pyplot as plt 3from scipy import integrate 4 5x=np.arange(-0.005,0.005,0.00001) 6 7def f(s): 8 return np.cos(9.929180321080256*10**6*np.sqrt(0.0625+(x-s)**2.0))/(0.0625+(x-s)**2.0) 9 10S=integrate.quad(f, -0.005, 0.005) #integrate.quad(関数、積分範囲の下値、積分範囲の上値) 11 12def g(s): 13 return np.sin(9.929180321080256*10**6*np.sqrt(0.0625+(x-s)**2.0))/(0.0625+(x-s)**2.0) 14 15T=integrate.quad(g, -0.005, 0.005) 16S1=S[0] 17T1=T[0] 18U=(S1**2.0+T1**2.0) 19plt.plot(x,U) 20plt.show() 21
試したこと
補足情報(FW/ツールのバージョンなど)
Python 3.7.1
エラーメッセージは上記で全部ですか?(エラー発生箇所の情報もないのですか?)
不慣れですみません…。エラー発生箇所全部抜き出しました。
```
>>> S=integrate.quad(f, -0.005, 0.005) #integrate.quad(関数、積分範囲の下値、積分範囲の上値)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\chiit\Anaconda3\lib\site-packages\scipy\integrate\quadpack.py", line 342, in quad
points)
File "C:\Users\chiit\Anaconda3\lib\site-packages\scipy\integrate\quadpack.py", line 453, in _quad
return _quadpack._qagse(func,a,b,args,full_output,epsabs,epsrel,limit)
TypeError: only size-1 arrays can be converted to Python scalars
>>>
>>> def g(s):
... return np.sin(9.929180321080256*10**6*np.sqrt(0.0625+(x-s)**2.0))/(0.0625+(x-s)**2.0)
...
>>> T=integrate.quad(g, -0.005, 0.005)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\chiit\Anaconda3\lib\site-packages\scipy\integrate\quadpack.py", line 342, in quad
points)
File "C:\Users\chiit\Anaconda3\lib\site-packages\scipy\integrate\quadpack.py", line 453, in _quad
return _quadpack._qagse(func,a,b,args,full_output,epsabs,epsrel,limit)
TypeError: only size-1 arrays can be converted to Python scalars
>>> S1=S[0]
>>> T1=T[0]
>>> U=(S1**2.0+T1**2.0)
>>> plt.plot(x,U)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\chiit\Anaconda3\lib\site-packages\matplotlib\pyplot.py", line 2813, in plot
is not None else {}), **kwargs)
File "C:\Users\chiit\Anaconda3\lib\site-packages\matplotlib\__init__.py", line 1810, in inner
return func(ax, *args, **kwargs)
File "C:\Users\chiit\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py", line 1611, in plot
for line in self._get_lines(*args, **kwargs):
File "C:\Users\chiit\Anaconda3\lib\site-packages\matplotlib\axes\_base.py", line 393, in _grab_next_args
yield from self._plot_args(this, kwargs)
File "C:\Users\chiit\Anaconda3\lib\site-packages\matplotlib\axes\_base.py", line 370, in _plot_args
x, y = self._xy_from_xy(x, y)
File "C:\Users\chiit\Anaconda3\lib\site-packages\matplotlib\axes\_base.py", line 231, in _xy_from_xy
"have shapes {} and {}".format(x.shape, y.shape))
ValueError: x and y must have same first dimension, but have shapes (1000,) and (1,)
```