求解方程的基于问题的工作流程
请注意
优化工具箱™提供了两种求解方程的方法。本主题描述基于问题的方法。基于求解器的优化问题设置描述基于求解器的方法。
要解一个方程组,执行以下步骤。
使用创建一个方程问题对象
eqnproblem
.问题对象是定义方程的容器。方程问题对象定义问题和问题变量中存在的任何边界。例如,创建一个方程问题。
Prob = eqnproblem;
使用创建命名变量
optimvar
.优化变量是用来描述方程的符号变量。在变量定义中包含任何边界。例如,创建一个名为
“x”
的下界0
的上界1
.X = optimvar(“x”15日3下界的0,“UpperBound”1);
在问题变量中定义方程。例如:
Sumeq = sum(x,2) == 1;probo . equations .sumeq = sumeq;
请注意
如果你有一个非线性函数,它不是由多项式、有理表达式和初等函数组成的,比如
经验值
,然后使用将函数转换为优化表达式fcn2optimexpr
.看到将非线性函数转化为优化表达式而且优化变量和表达式的支持操作.如果有必要,在你的方程中加入额外的参数作为工作空间变量;看到在基于问题的方法中传递额外的参数.
对于非线性问题,将初始点设置为结构,其字段为优化变量名。例如:
x0。X = randn(size(X));x0。Y =眼(4);假设y是一个4乘4的变量
通过使用来解决问题
解决
.Sol =解决(问题);对于非线性问题,Sol = solve(prob,x0)
除了这些基本步骤之外,您还可以在使用显示
或写
.为以下选项设置解决
通过使用optimoptions
,详见更改默认解算器或选项.
警告
基于问题的方法不支持目标函数、非线性等式或非线性不等式中的复值。如果函数计算具有复杂的值,即使是作为中间值,最终结果也可能是不正确的。
请注意
优化问题中的所有名称必须是唯一的。具体来说,所有变量名称、目标函数名称和约束函数名称必须不同。
有关多项式的基本方程求解示例,请参见求解非线性多项式系统,基于问题.有关一般非线性示例,请参见解决非线性方程组,基于问题.有关更广泛的示例,请参见非线性方程组.
另请参阅
fcn2optimexpr
|optimvar
|解决
|optimoptions
|eqnproblem
|显示
|写