问题出现在plot这里,更换为fplot后程序运行不出来,像这种之前定义过,之后是用两个变量之间的等式表达关系的应该怎么画呢?用solve函数去解第9行,仍然是数据必须为可转换为双精度值的数值、日期时间、持续时间或数组。
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));
Tr=sqrt(1+U.^2+2.*U.^2.*(1-O2+0.75*a.*U.^2)./O2);
plot(w,Tr);
hold on;
O2==4*U.^2*(1-2*Q.^2)-U.*sqrt(16-64*U.^2.*Q.^2.*(1-Q.^2));
Tr=sqrt(1+U.^2+2.*U.^2.*(1-O2+0.75*a.*U.^2)./O2);
plot(w,Tr);
你好,可以先解出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
有帮助望采纳,有疑问可以继续问哦