作业帮 > 综合 > 作业

matlab画二次曲面方程,谁能帮我解释一下这个代码?

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/06/17 08:19:58
matlab画二次曲面方程,谁能帮我解释一下这个代码?
这是原题:

这是两个代码,画出来的图好像不一样.也不知道哪个对哪个错.
 
第一个:
A=input('A=');
for i=1:4
    figure(i)
    a=A(1,i);
    b=A(2,i);
    c=A(3,i);
    d=A(4,i);
    [x,y,z]=meshgrid(linspace(-5,5,50));
    f=@(x,y,z)x.^2/a^2+y.^2/b^2+z.^2/c^2-d;
    val=f(x,y,z);
    [p,v]=isosurface(x,y,z,val,0);
    patch('faces',p,'vertices',v,'facevertexcdata',jet(size(v,1)),'facecolor','w','edgecolor','flat');
    hold on;view(3);grid on;axis equal
end 第二个:
A=input('A=');
syms theta fai;
[theta,fai]=meshgrid(-pi:0.1:pi,0:0.1:pi);
for i=1:4
    figure(i)
    a=A(1,i);
    b=A(2,i);
    c=A(3,i);
    d=A(4,i);
    x=a/d*sin(fai).*cos(theta);
    y=b/d*sin(fai).*sin(theta);
    z=c/d*cos(fai);
    mesh(x,y,z)
    hold on;view(3);grid on;axis equal;
end
但是完全看不懂啊!我们要做实训报告,小妹在此跪谢!
matlab画二次曲面方程,谁能帮我解释一下这个代码?
第1个程序错了.
第二个我帮你改了一下.
A=input('A='); % 或者直接输数据 例如:A=[1 5 9 13; 2 6 10 14; 3 7 11 15; 4 8 12 16];
[theta,fai]=meshgrid(-pi:0.1:pi,0:0.1:pi);
for i=1:4
figure(i)
a=A(1,i);
b=A(2,i);
c=A(3,i);
d=A(4,i);
x=a/d*sin(fai).*cos(theta);
y=b/d*sin(fai).*sin(theta);
z=c/d*cos(fai);
mesh(x,y,z)
hold on;
view(3);
grid on;
axis equal;
end
再问: 恩谢谢啦!不过能不能麻烦把每一行代码解释一下, 比如这是什么函数啊干什么用的啊输入什么啊范围是什么啊之类的。。。因为我们要写实训报告,但是真心不懂这个TAT
再答: 书多的是。网上也不缺。学生!
A=input('A='); % 或者直接输数据 例如: A=[1 5 9 13; 2 6 10 14; 3 7 11 15; 4 8 12 16];
[theta,fai]=meshgrid(-pi:0.1:pi,0:0.1:pi); % 生成极坐标下 2维网格点矩阵
for i=1:4 %循环4次
figure(i) % 生成图形窗口i
a=A(1,i); % 赋值
b=A(2,i);
c=A(3,i);
d=A(4,i);
x=a/d*sin(fai).*cos(theta); %把 极坐标转换成直角坐标
y=b/d*sin(fai).*sin(theta);
z=c/d*cos(fai);
mesh(x,y,z) % 做网格图
hold on; % 保留原图
view(3); % 视角
grid on; % 加网格线
axis equal; % 等坐标刻度
end