解决非线性方程组,基于问题
解非线性方程组
使用基于问题的方法,首先定义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;