MATLAB中二元二次方程求解为什么会有三个根?

用eq5=(C.*(a1.*asyT1(1,i)+b1-t11)).^2+(dA11(i)).^2-2.*dA11(i).*C.*(a1.*asyT1(1,i)+b1-t11).*ag(1,i);
eq6=(C.*(a1.*asyT1(2,i)+b1-t12)).^2+di(i).^2-2.*di(i).*C.*(a1.*asyT1(2,i)+b1-t12).*ag(2,i);
eq7=(C.*(a1.*asyT1(2,i)+b1-t12)).^2+(dA12(i)).^2-2.*dA12(i).*C.*(a1.*asyT1(2,i)+b1-t12).*ag(3,i);
eq8=(C.*(a1.*asyT1(3,i)+b1-t13)).^2+di(i).^2-2.*di(i).*C.*(a1.*asyT1(3,i)+b1-t13).*ag(4,i);
[a1,b1]=solve(eq7-eq8,eq5-eq6,a1,b1);
为什么解出来会有三个根?

从题主的问题来看,用solve函数求解带变量数组值方程是不合适的,应该采用for循环语句加solve求解。求解方法如下:

for i=1:n

syms a1 b1

eq5=。。。

eq6=。。。

eq7=。。。

eq8=。。。

[a1,b1]=solve(eq7==eq8,eq5==eq6,a1,b1)

end

温馨提示:答案为网友推荐,仅供参考