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