teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

初めての質問で失礼しました。挿入いたしました。

2021/01/02 13:07

投稿

voigt
voigt

スコア1

title CHANGED
File without changes
body CHANGED
@@ -92,30 +92,6 @@
92
92
  p0 = 0.5, 0.5
93
93
  popt, pcov = curve_fit(func, array_x, array_y, p0)
94
94
  ```
95
- import numpy as np
96
- from scipy import integrate
97
- from scipy.optimize import curve_fit
98
- import math
99
- import pandas as pd
100
-
101
- Eins = 2.01 * 10**8
102
-
103
- Lorentzbroad = Eins / 2 / math.pi
104
- widthL = Lorentzbroad / 10**9
105
-
106
- df = pd.read_csv('book1.csv')
107
- array_x=np.array(df['t'])
108
- array_y=np.array(df['y'])
109
-
110
- def func(x, param1, param2):
111
- def voigt(z):
112
- return param1 * 0.8256 / np.pi**(3/2) / param2 / widthL * np.exp((-1) * (2 * z / param2)**2 * np.log(2)) / (1 + (2 * (x - z) / widthL)**2)
113
- integration = integrate.quad(voigt, -np.inf, np.inf)[0]
114
- return integration
115
-
116
- p0 = 0.5, 0.5
117
- popt, pcov = curve_fit(func, array_x, array_y, p0)
118
-
119
95
  ### 試したこと
120
96
 
121
97
  ### 補足情報(FW/ツールのバージョンなど)

1

初めての質問で失礼しました。挿入いたしました。

2021/01/02 13:07

投稿

voigt
voigt

スコア1

title CHANGED
File without changes
body CHANGED
@@ -5,14 +5,76 @@
5
5
  パラメータは2つでparam1とparam2です。
6
6
 
7
7
  ### 発生している問題・エラーメッセージ
8
+ ```
9
+ ---------------------------------------------------------------------------
10
+ TypeError Traceback (most recent call last)
11
+ <ipython-input-10-baa10670dc7d> in <module>
12
+ 21
13
+ 22 p0 = 0.5, 0.5
8
- only size-1 arrays can be converted to Python scalars
14
+ ---> 23 popt, pcov = curve_fit(func, array_x, array_y, p0)
9
15
 
16
+ ~\Anaconda3\lib\site-packages\scipy\optimize\minpack.py in curve_fit(f, xdata, ydata, p0, sigma, absolute_sigma, check_finite, bounds, method, jac, **kwargs)
17
+ 750 # Remove full_output from kwargs, otherwise we're passing it in twice.
18
+ 751 return_full = kwargs.pop('full_output', False)
19
+ --> 752 res = leastsq(func, p0, Dfun=jac, full_output=1, **kwargs)
20
+ 753 popt, pcov, infodict, errmsg, ier = res
21
+ 754 cost = np.sum(infodict['fvec'] ** 2)
22
+
23
+ ~\Anaconda3\lib\site-packages\scipy\optimize\minpack.py in leastsq(func, x0, args, Dfun, full_output, col_deriv, ftol, xtol, gtol, maxfev, epsfcn, factor, diag)
24
+ 381 if not isinstance(args, tuple):
25
+ 382 args = (args,)
26
+ --> 383 shape, dtype = _check_func('leastsq', 'func', func, x0, args, n)
27
+ 384 m = shape[0]
28
+ 385
29
+
30
+ ~\Anaconda3\lib\site-packages\scipy\optimize\minpack.py in _check_func(checker, argname, thefunc, x0, args, numinputs, output_shape)
31
+ 24 def _check_func(checker, argname, thefunc, x0, args, numinputs,
32
+ 25 output_shape=None):
33
+ ---> 26 res = atleast_1d(thefunc(*((x0[:numinputs],) + args)))
34
+ 27 if (output_shape is not None) and (shape(res) != output_shape):
35
+ 28 if (output_shape[0] != 1):
36
+
37
+ ~\Anaconda3\lib\site-packages\scipy\optimize\minpack.py in func_wrapped(params)
38
+ 456 if transform is None:
39
+ 457 def func_wrapped(params):
40
+ --> 458 return func(xdata, *params) - ydata
41
+ 459 elif transform.ndim == 1:
42
+ 460 def func_wrapped(params):
43
+
44
+ <ipython-input-10-baa10670dc7d> in func(x, param1, param2)
45
+ 17 def voigt(z):
46
+ 18 return param1 * 0.8256 / np.pi**(3/2) / param2 / widthL * np.exp((-1) * (2 * z / param2)**2 * np.log(2)) / (1 + (2 * (x - z) / widthL)**2)
47
+ ---> 19 integration = integrate.quad(voigt, -np.inf, np.inf)[0]
48
+ 20 return integration
49
+ 21
50
+
51
+ ~\Anaconda3\lib\site-packages\scipy\integrate\quadpack.py in quad(func, a, b, args, full_output, epsabs, epsrel, limit, points, weight, wvar, wopts, maxp1, limlst)
52
+ 339 if weight is None:
53
+ 340 retval = _quad(func, a, b, args, full_output, epsabs, epsrel, limit,
54
+ --> 341 points)
55
+ 342 else:
56
+ 343 retval = _quad_weight(func, a, b, args, full_output, epsabs, epsrel,
57
+
58
+ ~\Anaconda3\lib\site-packages\scipy\integrate\quadpack.py in _quad(func, a, b, args, full_output, epsabs, epsrel, limit, points)
59
+ 448 return _quadpack._qagse(func,a,b,args,full_output,epsabs,epsrel,limit)
60
+ 449 else:
61
+ --> 450 return _quadpack._qagie(func,bound,infbounds,args,full_output,epsabs,epsrel,limit)
62
+ 451 else:
63
+ 452 if infbounds != 0:
64
+
65
+ TypeError: only size-1 arrays can be converted to Python scalars
66
+ ```
67
+
68
+
10
69
  ### 該当のソースコード
70
+ ```python
11
71
  import numpy as np
12
72
  from scipy import integrate
13
73
  from scipy.optimize import curve_fit
74
+ import math
14
75
  import pandas as pd
15
76
 
77
+ Eins = 2.01 * 10**8
16
78
  Lorentzbroad = Eins / 2 / math.pi
17
79
  widthL = Lorentzbroad / 10**9
18
80
 
@@ -29,7 +91,31 @@
29
91
 
30
92
  p0 = 0.5, 0.5
31
93
  popt, pcov = curve_fit(func, array_x, array_y, p0)
94
+ ```
95
+ import numpy as np
96
+ from scipy import integrate
97
+ from scipy.optimize import curve_fit
98
+ import math
99
+ import pandas as pd
32
100
 
101
+ Eins = 2.01 * 10**8
102
+
103
+ Lorentzbroad = Eins / 2 / math.pi
104
+ widthL = Lorentzbroad / 10**9
105
+
106
+ df = pd.read_csv('book1.csv')
107
+ array_x=np.array(df['t'])
108
+ array_y=np.array(df['y'])
109
+
110
+ def func(x, param1, param2):
111
+ def voigt(z):
112
+ return param1 * 0.8256 / np.pi**(3/2) / param2 / widthL * np.exp((-1) * (2 * z / param2)**2 * np.log(2)) / (1 + (2 * (x - z) / widthL)**2)
113
+ integration = integrate.quad(voigt, -np.inf, np.inf)[0]
114
+ return integration
115
+
116
+ p0 = 0.5, 0.5
117
+ popt, pcov = curve_fit(func, array_x, array_y, p0)
118
+
33
119
  ### 試したこと
34
120
 
35
121
  ### 補足情報(FW/ツールのバージョンなど)