matlab中求解完方程组后怎样做三维图?(af作为X轴,a作为Y轴,p作为Z轴)
来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/01 06:31:05
matlab中求解完方程组后怎样做三维图?(af作为X轴,a作为Y轴,p作为Z轴)
文件trt.m,程序如下:
function trt
fsolve(@myfun,[100,10])
function f=myfun(x)
p=x(1);%作为Z轴
t=x(2);%中间变量
a=0.1;%作为Y轴,范围a=(0:0.05:2)
af=8;%作为X轴,范围af=(0:2:88)
kc=1.2; %定值
b=5;%定值
k1=(p)*cosd(af)*cosd(af)*(pi*a)^0.5;
k2=b*sind(af)*cosd(af)*(pi*a)^0.5;
f(1)=t+acosd((3*k2^2+k1*(k1^2+8*k2^2)^0.5)/(k1^2+9*k2^2));%方程1
f(2)=k1*(cosd(t/2))^3-1.5*k2*sind(t)*cosd(t/2)-kc;%方程2
输出三列的矩阵数组,作出三维面图和等值线图.
文件trt.m,程序如下:
function trt
fsolve(@myfun,[100,10])
function f=myfun(x)
p=x(1);%作为Z轴
t=x(2);%中间变量
a=0.1;%作为Y轴,范围a=(0:0.05:2)
af=8;%作为X轴,范围af=(0:2:88)
kc=1.2; %定值
b=5;%定值
k1=(p)*cosd(af)*cosd(af)*(pi*a)^0.5;
k2=b*sind(af)*cosd(af)*(pi*a)^0.5;
f(1)=t+acosd((3*k2^2+k1*(k1^2+8*k2^2)^0.5)/(k1^2+9*k2^2));%方程1
f(2)=k1*(cosd(t/2))^3-1.5*k2*sind(t)*cosd(t/2)-kc;%方程2
输出三列的矩阵数组,作出三维面图和等值线图.
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;
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;
matlab中求解完方程组后怎样做三维图?(af作为X轴,a作为Y轴,p作为Z轴)
matlab画等值线x轴是维度,y轴是经度,z作为数据,我该怎么画等值线呢?
作为
matlab中怎样将变量作为函数的输入值
如图,在平面直角坐标系中,直线y=-0.5x+b(b>0)分别交x轴,y轴于A、B两点,以OA,OB为边作为矩形OACB
excel作图问题 如何将两列数值分别作为图的X轴和Y轴
【急】用MATLAB只知道一些(x,y,z)坐标,怎样绘制出三维曲面图?
用MATLAB只知道一些(x,y,z)坐标,怎样绘制出三维曲面图?
EXCEL表中的两列数据怎样作为X轴和Y轴放在图表里
Matlab用两个隐函数(方程组)绘制三维曲线的命令.例如:x^2+y^2+z^2=9;x+y+z=0.
第1题 在Excel的图表中,水平X轴通常用来作为( ).
怎么用matlab画以下函数的三维图(以x,y,z为坐标)