【问题标题】:how to store the output of Minimization如何存储最小化的输出
【发布时间】:2019-04-16 08:39:50
【问题描述】:

我在 Mathematica 中使用最小化来最小化一个多变量函数。它工作正常。我想将最小化的输出传递给变量以便提前使用它们。但我错过了一些东西。来看看吧(代码前面定义了Etet函数就ok了)。

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 等中。

我该如何更改?

【问题讨论】:

    标签: wolfram-mathematica minimization


    【解决方案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 中的变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-04
      • 1970-01-01
      • 2012-08-20
      • 2014-01-18
      • 2012-12-14
      • 2020-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多