wolfram-mathematica - 如何存储最小化的输出
问题描述
我使用最小化最小化 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
etc中。
我怎样才能改变这个?
解决方案
您可以使用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
.
推荐阅读
- discord.js - 如何检查抽搐频道是否存在?
- php - measuring time to receive POST data in a PHP/Apache script
- django-rest-framework - Django-notifications 序列化目标休息框架
- vb.net - How to Write to Active Directory using VB.NET or SQL or API?
- asynchronous - How to diagram a linear program flow that processes asynchronous output in UML?
- c# - 如何通过 Internet 安全地使用 Entity Framework/C# 和 SQL Server
- java - 使用 String 的 JNA 调用与使用 byte[] 的行为不同
- python - I can't connect pyqt5 with mysql-connector
- python - 如何在不存在增量列值的情况下复制行和增量列?
- python - 在 2D 平面上绘制 Python 中 y=f(x) 的图形