你好,可以先解出U,然后画图,U有四个解,但是U的平方只有两个解,故可以画两幅图
syms O2 Q U
eq = O2 - (4*U.^2*(1-2*Q.^2)+U.*sqrt(16-64*U.^2.*Q.^2.*(1-Q.^2)));
U = solve(eq, U);
Ufun = matlabFunction(U);
Ufun = ...
@(O2,Q)...
[-sqrt(O2.*(1.0./4.0)-O2.*Q.^2.*(1.0./2.0)-sqrt(-(O2.*Q.^2-1.0).*(O2-O2.*Q.^2+1.0)).*(1.0./2.0)+1.0./2.0);
-sqrt(O2.*(1.0./4.0)-O2.*Q.^2.*(1.0./2.0)+sqrt(-(O2.*Q.^2-1.0).*(O2-O2.*Q.^2+1.0)).*(1.0./2.0)+1.0./2.0);
sqrt(O2.*(1.0./4.0)-O2.*Q.^2.*(1.0./2.0)-sqrt(-(O2.*Q.^2-1.0).*(O2-O2.*Q.^2+1.0)).*(1.0./2.0)+1.0./2.0);
sqrt(O2.*(1.0./4.0)-O2.*Q.^2.*(1.0./2.0)+sqrt(-(O2.*Q.^2-1.0).*(O2-O2.*Q.^2+1.0)).*(1.0./2.0)+1.0./2.0)];
w=0:0.01:5;
K=800;
M=5;
c=30;
a=1;
wn=sqrt(K/M);
Q=c/(2*M*wn);
O2=w/wn;
% O2==4*U.^2*(1-2*Q.^2)+U.*sqrt(16-64*U.^2.*Q.^2.*(1-Q.^2));
Us = Ufun(O2, Q);
U2s = unique(Us.^2, 'rows');% U2就是U的平方
figure(1);clf
for i = 1:1:size(U2s,1)
subplot(1,2,i)
U2 = U2s(i,:);
Tr=sqrt(1+U2+2.*U2.*(1-O2+0.75*a.*U2)./O2);
plot(w,Tr);
end
有帮助望采纳,有疑问可以继续问哦