用matlab求解一个三元二次方程组

a=0.2;
b=0.1,0.2,0.3~10.0;
求解方程组:
a*(x^2+y^2)+(1-2*a)*x+(a-1)-2*b*z=0;
a*y*(x+z)+(1-2*a)*y-b*z=0;
a*(y^2+z^2)+(1-2*a)*z+(a-1)=0.
求解x,y,z,并作出y与b的关系曲线。

由于该三元二次方程组有多个解,每组x,y,z各有6个,所以其图像如下所示。

实现代码:

a=0.2;

b0=[0.1:0.1:10];

for i=1:length(b0)

syms x y z

b=b0(i);

[x,y,z]=vpasolve(a*(x^2+y^2)+(1-2*a)*x+(a-1)-2*b*z==0,a*y*(x+z)+(1-2*a)*y-b*z==0,a*(y^2+z^2)+(1-2*a)*z+(a-1)==0);

y0(i,:)=y;

end

plot(y0,b0,'.-')

xlabel('y'),ylabel('b')

如为实数解的话,还应去掉复数解。

追问

去掉复数解的代码是什么啊?我Matlab不太熟

追答

y0(i,:)=real(y); %提取实部值
y1(i,:)=imag(y);%提取虚部值

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