主要内容

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

求解非线性方程组

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

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

方程2 = 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 =结构体字段:e1: -2.4070e-07 e2: -3.8255e-08
exitflag = EquationSolved

查看解决方案点。

disp (sol.x)
0.3532 - 0.6061

不支万博1manbetx持的功能要求fcn2optimexpr

如果你的方程函数不是由初等函数组成的,你必须使用fcn2optimexpr.对于现在的例子:

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

看到万博1manbetx支持优化变量和表达式的操作将非线性函数转换为优化表达式

另请参阅

|

相关的话题