matlab中求解完方程组后怎样做三维图?
发布网友
发布时间:2022-04-24 14:42
我来回答
共1个回答
热心网友
时间:2023-10-16 23:06
kc=1.2; %定值
b=5;%定值
k1=@(x,a,af) x(1).*cosd(af).*cosd(af).*(pi*a).^0.5;
k2=@(a,af,b) b*sind(af).*cosd(af).*(pi*a).^0.5;
f=@(x,a,af,kc,b)[x(2)+acosd((3*k2(a,af,b).^2+k1(x,a,af).*(k1(x,a,af).^2+8*k2(a,af,b).^2).^0.5)./(k1(x,a,af).^2+9*k2(a,af,b).^2));%方程1
k1(x,a,af).*(cosd(x(2)/2)).^3-1.5*k2(a,af,b).*sind(x(2)).*cosd(x(2)/2)-kc;];%方程2
op=optimset('display','off');
Va=0.4:0.2:2;
Vaf=0:2:88;
[Ma Maf]=meshgrid(Va,Vaf);
Mp=zeros(size(Ma));
for i=1:length(Vaf)
for j=1:length(Va)
tp=fsolve(f,[80 -20],op,Ma(i,j),Maf(i,j),kc,b);
Mp(i,j)=tp(1);
end
end
surf(Ma,Maf,Mp)
xlabel('a')
ylabel('af')
注意:
1、我把你的代码用句柄包装了,这样能加快运行速度。
2、a在0附近时,会有较大的计算误差,所以讲a的下限取为0.4。若仍需要从零开始计算,可以将Va改为:
Va=eps:0.2:2;
来自:求助得到的回答