主要内容

EquationProblem

非线性方程系统

描述

使用优化变量指定方程系统,并解决系统使用解决

小费

对于完整的工作流程,请参阅基于问题的解决方程的工作流程

创建

创建一个EquationProblem通过使用的对象eqnproblem.函数。通过创建方程来解决问题优化等级对象,并将它们设置为方程式属性EquationProblem对象。

prob = eqnproblem;x = Optimvar('X');x^5 - x^4 + 3*x = 1/2;prob.Equations.eqn = eqn;

警告

基于问题的方法不支持客观函数,非线性等分或非线性不等式中的复杂值。金宝app如果函数计算具有复数,甚至作为中间值,最终结果也可能不正确。

特性

展开全部

问题方程式,指定为优化等级阵列或结构优化等级阵列作为字段。

例子:总和(x。^ 2,2)== 4

问题标签,指定为字符串或字符向量。软件不使用描述计算。描述是一个任意标签,您可以出于任何原因使用。例如,您可以共享,存档或呈现模型或问题,并存储有关模型或问题的描述性信息描述

例子:“旅行推销员问题的迭代方法”

数据类型:char|细绳

此属性是只读的。

对象中的优化变量,指定为结构优化Variable.对象。

数据类型:塑造

对象功能

优化选择 创建优化选项
prob2struct 将优化问题或方程问题转化为求解形式
表演 显示有关优化对象的信息
解决 解决优化问题或方程问题
varindex. 映射问题变量到基于求解器的变量索引
保存优化对象描述

例子

全部收缩

解非线性方程组

exp. - exp. - X 1 + X 2 = X 2 1 + X 1 2 X 1 COS. X 2 + X 2 X 1 = 1 2

使用基于问题的方法,首先定义X作为两个元素优化变量。

x = Optimvar('X',2);

将第一个等式创建为优化平等表达式。

eq1 = exp( - -( - ( - (x(1)+ x(2)))))== x(2)*(1 + x(1)^ 2);

类似地,将第二个方程创建为优化等式表达式。

eq2 = x(1)* cos(x(2))+ x(2)* sin(x(1))== 1/2;

创建一个方程问题,并把方程放到问题中。

prob = eqnproblem;prob.equations.eq1 = EQ1;prob.equations.eq2 = EQ2;

回顾这个问题。

展示(prob)
EquationProblem:解:x eq1: exp (exp (- x (x (1) + (2)))) = = (x (2) * (1 + x (1) ^ 2)) eq2: ((x(1)。* cos (x (2))) + (x(2)。* sin (x (1)))) = = 0.5

从点开始解决问题[0,0].对于基于问题的方法,将初始点指定为结构,将变量名指定为结构的字段。对于这个问题,只有一个变量,X

x0.x = [0 0];[Sol,FVAL,EXITFLAG] =求解(prob,x0)
使用FSOLVE解决问题。等式解决。FSOLVE完成,因为通过函数容差的值测量,功能值的向量接近零,并且如梯度测量的问题会常规。
sol =结构与字段:X:[2x1双]
fval =结构与字段:EQ1:-2.4070E-07 EQ2:-3.8255E-08
ExitFlag = Aquationsolved.

查看解决方案点。

disp(sol.x)
0.3532 - 0.6061

不支金宝app持的功能需要fcn2optimexpr

如果您的公式函数不由基本函数组成,则必须将功能转换为使用优化表达式fcn2optimexpr.对于本示例:

ls1 = fcn2optimexpr (@ (x) exp (exp (- x (x (1) + (2)))), x);ls1 == x(2)*(1 + x(1)^2);ls2 = fcn2optimexpr (@ (x) x (1) * cos (x (2)) + x (2) * sin (x (1)), x);ls2 == 1/2;

金宝app在优化变量和表达式上支持的操作将非线性函数转换为优化表达式

在R2019B中介绍