簡體   English   中英

如何存儲Minimization的輸出

[英]how to store the output of Minimization

我使用最小化最小化Mathematica中的多變量函數。 它工作正常。 我想將Minimization的輸出傳遞給變量,以便提前使用它們。 但我錯過了一些東西。 讓我們看一下(Etet函數在代碼中已經定義過了,沒關系)。

J1 = 1; J2 = 1; D1 = 0.1; D2 = 0;
list1 = {θ1n, θ2n, θ3n, θ4n, ϕ1n, ϕ2n, ϕ3n, ϕ4n};
{Emin, list1} = Minimize[Etet[J1, J2, D1, D2, θ1, θ2, θ3, θ4, ϕ1, ϕ2, ϕ3, ϕ4],
   {θ1, θ2, θ3, θ4, ϕ1, ϕ2, ϕ3, ϕ4}];   

當我進入:

 list1

我明白了:

{θ1 -> -2.35619, θ2 -> 0.785398, θ3 -> -2.35619, θ4 -> -0.785398,
 ϕ1 -> 4.71239, ϕ2 -> 1.89763*10^-8, ϕ3 -> 1.5708, ϕ4 -> -2.75641*10^-8}

但值-2.35619實際上並未存儲在θ1等中。

我怎么能改變這個?

你可以使用ReplaceAll/.

θ1 = θ1 /. list1

或者一下子

Clear[θ1, θ2, θ3, θ4, ϕ1, ϕ2, ϕ3, ϕ4]

J1 = 1; J2 = 1; D1 = 0.1; D2 = 0;

{Emin, list1} = Minimize[Etet[J1, J2, D1, D2, θ1, θ2, θ3, θ4, ϕ1, ϕ2, ϕ3, ϕ4],
   {θ1, θ2, θ3, θ4, ϕ1, ϕ2, ϕ3, ϕ4}];

{θ1, θ2, θ3, θ4, ϕ1, ϕ2, ϕ3, ϕ4} = {θ1, θ2, θ3, θ4, ϕ1, ϕ2, ϕ3, ϕ4} /. list1

而且更整潔

Clear[θ1, θ2, θ3, θ4, ϕ1, ϕ2, ϕ3, ϕ4]

J1 = 1; J2 = 1; D1 = 0.1; D2 = 0;

vars = {θ1, θ2, θ3, θ4, ϕ1, ϕ2, ϕ3, ϕ4};

{Emin, list1} = Minimize[Etet[J1, J2, D1, D2, θ1, θ2, θ3, θ4, ϕ1, ϕ2, ϕ3, ϕ4], vars ];

With[{vars = vars}, vars = vars /. list1]

θ1

-2.35619

With需要值傳遞到內的變量vars

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM