matlab 四个约束 三个未知数[x,y,z]=solve('-2.2*x+0.25*y-2*z=0','4*x-7.2*y+3*z=0','-2*x+3*y-11.3*z=0','x*x+y*y+z*z=1','x,y,z')这是不对的,就是四个约束条件,三个未知量,
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/19 14:55:15
matlab 四个约束 三个未知数[x,y,z]=solve('-2.2*x+0.25*y-2*z=0','4*x-7.2*y+3*z=0','-2*x+3*y-11.3*z=0','x*x+y*y+z*z=1','x,y,z')这是不对的,就是四个约束条件,三个未知量,
matlab 四个约束 三个未知数
[x,y,z]=solve('-2.2*x+0.25*y-2*z=0','4*x-7.2*y+3*z=0','-2*x+3*y-11.3*z=0','x*x+y*y+z*z=1','x,y,z')
这是不对的,就是四个约束条件,三个未知量,
matlab 四个约束 三个未知数[x,y,z]=solve('-2.2*x+0.25*y-2*z=0','4*x-7.2*y+3*z=0','-2*x+3*y-11.3*z=0','x*x+y*y+z*z=1','x,y,z')这是不对的,就是四个约束条件,三个未知量,
这是超定非线性方程组,可以用最小二乘法解,以下是参考:
主函数:
clc;clear;
x0=[3,2,1];
[x,resnorm,restdual,exitflag]=lsqnonlin(@fun,x0);
子函数:
function f=fun(x)
f(1)=-2.2*x(1)+0.25*x(2)-2*x(3);
f(2)=4*x(1)-7.2*x(2)+3*x(3);
f(3)=-2*x(1)+3*x(2)-11.3*x(3);
f(4)=x(1)*x(1)+x(2)*x(2)+x(3)*x(3)-1;
解为:
0.00109 0.000605 -6.296e-05
一般来说,3个未知数就是3个方程,除非这4个方程是想关的,也就是第4个方程可以由前3个方程推导出来。你可以先只用前三个方程求解,然后把得到的解代到第4个方程里看看等式是否成立,如果成立,那就是解,否则就说明方程组无解。
刘阳升所说的最小二乘解其实不能说是方程组的解,因为你把它代到方程中可以发现没有一个方程的等式是成立的...
全部展开
一般来说,3个未知数就是3个方程,除非这4个方程是想关的,也就是第4个方程可以由前3个方程推导出来。你可以先只用前三个方程求解,然后把得到的解代到第4个方程里看看等式是否成立,如果成立,那就是解,否则就说明方程组无解。
刘阳升所说的最小二乘解其实不能说是方程组的解,因为你把它代到方程中可以发现没有一个方程的等式是成立的
收起