質問編集履歴
1
最適化したい関数が間違っていました。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
scipyで複素数
|
1
|
+
scipyで最適化したい関数に複素数が含まれていると適切に最適化されない
|
test
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
**[不備があったため再投稿]**
|
2
|
+
|
1
3
|
python、数学共に初心者です。
|
2
4
|
|
3
5
|
|
@@ -8,15 +10,15 @@
|
|
8
10
|
|
9
11
|
パラメーターはx[0],x[1],x[2]の三つです。
|
10
12
|
|
11
|
-
最適化したい関数に複素数が含まれていると以下のようなwarningが出
|
13
|
+
最適化したい関数に複素数が含まれていると以下のようなwarningが出ます。
|
12
14
|
|
13
|
-
|
15
|
+
**最適化したい関数は計算すると除算と二乗によりjが消えるので、最適化された関数にもパラメーターにも虚数部が含まれないはずです。**
|
14
16
|
|
15
17
|
虚数が含まれていない場合、問題がないことは確認済みです。
|
16
18
|
|
17
|
-
最適化されたパラメーター
|
19
|
+
最適化されたパラメーターは適切な値にならないのですが、どうすればいいでしょうか?
|
18
20
|
|
19
|
-
よろしくお願いします。
|
21
|
+
また初歩的な間違いかもしれませんが、よろしくお願いします。
|
20
22
|
|
21
23
|
|
22
24
|
|
@@ -34,7 +36,7 @@
|
|
34
36
|
|
35
37
|
def f(x): #最適化したい関数
|
36
38
|
|
37
|
-
return (x[0]
|
39
|
+
return ((3+4j)-(3*x[0]+4j))**2+((3+4j)-(3+x[1]*1j))**2+((x[2]+0j)-(23+0j))**2
|
38
40
|
|
39
41
|
|
40
42
|
|
@@ -64,19 +66,19 @@
|
|
64
66
|
|
65
67
|
Optimization terminated successfully.
|
66
68
|
|
67
|
-
Current function value: -5
|
69
|
+
Current function value: -67457804844318816.000000
|
68
70
|
|
69
71
|
Iterations: 3
|
70
72
|
|
71
|
-
Function evaluations:
|
73
|
+
Function evaluations: 85
|
72
74
|
|
73
|
-
Gradient evaluations:
|
75
|
+
Gradient evaluations: 17
|
74
76
|
|
75
|
-
x[0]=1.0
|
77
|
+
x[0]=1.0
|
76
78
|
|
77
|
-
x[1]=
|
79
|
+
x[1]=-473759632.1
|
78
80
|
|
79
|
-
x[2]=
|
81
|
+
x[2]=396220148.629
|
80
82
|
|
81
83
|
```
|
82
84
|
|