主要内容

解决非线性方程组,基于问题

解非线性方程组

经验值 - 经验值 - 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;

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

Prob = 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: [2x1 double]
fval =带字段的结构:Eq1: -2.4070e-07 eq2: -3.8255e-08
exitflag =方程式解决

查看解决点。

disp (sol.x)
0.3532 - 0.6061

不支金宝app持的功能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;

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

另请参阅

|

相关的话题