主要内容

EquationProblem

非线性方程组

描述

使用优化变量指定一个方程组,解决系统使用解决

提示

完整的工作流程,请参阅具体问题具体分析工作流求解方程

创建

创建一个EquationProblem通过使用对象eqnproblem函数。通过创建添加方程问题OptimizationEquality对象和设置它们方程的属性EquationProblem对象。

概率= eqnproblem;x = optimvar (“x”);eqn = x ^ 5 - x ^ 4 + 3 * x = = 1/2;prob.Equations。eqn = eqn;

警告

具体问题具体分析的方法不支持复杂的值在一个目标函数,非线性等式,或非线性不等式。如果一个函数计算具有复杂的价值,即使作为一个中间值,最终结果可能是不正确的。

属性

全部展开

方程的问题,作为一个指定OptimizationEquality数组或结构OptimizationEquality数组作为字段。

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

标签问题,指定为字符串或字符向量。不使用的软件描述为计算。描述是一个任意的标签,您可以使用任何理由。例如,您可以分享、存档或提出一个模型或问题,并存储描述性的模型或问题的信息描述

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

数据类型:字符|字符串

这个属性是只读的。

优化变量的对象,指定为一个结构OptimizationVariable对象。

数据类型:结构体

对象的功能

optimoptions 创建优化选项
prob2struct 优化问题或方程问题转化为求解器的形式
显示 显示信息优化对象
解决 解决优化问题或方程的问题
varindex 问题变量映射到solver-based变量指数
保存优化对象描述

例子

全部折叠

解决非线性方程组

经验值 ( - - - - - - 经验值 ( - - - - - - ( x 1 + x 2 ) ) ) = x 2 ( 1 + x 1 2 ) x 1 因为 ( x 2 ) + x 2 ( x 1 ) = 1 2

运用具体问题具体分析的方法,首先定义x作为一个双元素优化变量。

x = optimvar (“x”2);

创建第一个方程作为一个优化平等表达。

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

类似地,创建第二个方程作为一个优化平等表达。

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

创建一个方程问题,把方程的问题。

概率= eqnproblem;prob.Equations。eq1 = eq1;prob.Equations。eq2 = eq2;

回顾这个问题。

显示(概率)
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] = solve(prob,x0)
使用fsolve解决问题。方程解决。fsolve完成因为函数值接近于零的向量的值函数的宽容,问题出现普通的梯度。
索尔=结构体字段:x (2 x1双):
fval =结构体字段:eq1: -2.4070 e-07 eq2: -3.8255 e-08
exitflag = EquationSolved

查看解决方案。

disp (sol.x)
0.3532 - 0.6061

不支持的功能要求fcn2optimexpr

如果你不组成的基本方程函数功能,您必须使用转换函数来优化表达式fcn2optimexpr。目前的例子:

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

看到支持操作优化变量和表达式将非线性函数优化表达式

版本历史

介绍了R2019b

Baidu
map