как хранить вывод минимизации - PullRequest
3 голосов
/ 16 апреля 2019

Я минимизирую многопараметрическую функцию в Mathematica, используя Minimization. Работает нормально. Я хочу передать выходные данные 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 и т. Д.

Как я могу это изменить?

1 Ответ

1 голос
/ 16 апреля 2019

Вы можете использовать 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.

...