--1-一、设计目的熟悉曲面图形的编制,通过常量参数的变化观察图形变化的规律。二、设计内容已知二次曲面方程为x2a2+y2b2+z2c2=d,要求讨论参数a,b,c,d对其形状的影响并画出图形。要求:1.为便于观察,绘图时要求加入网格2.实现当a,b,c,d独立增大或同时增大的图形变化3.分析观察的结果4.编制实训报告三、设计思路x2a2+y2b2+z2c2=dz=±c√d−x2a2−y2b2利用matlab画出二次曲面的图形,编程如下:a=input('a=');b=input('b=');c=input('c=');--2-d=input('d=');%输入参数,xgrid=linspace(-abs(a*sqrt(d)),abs(a*sqrt(d)),50);%建立x网格坐标50为网格线数目ygrid=linspace(-abs(b*sqrt(d)),abs(b*sqrt(d)),50);%建立y网格坐标[x,y]=meshgrid(xgrid,ygrid);%确定50×50个点的x,y网格坐标z=c*sqrt(d-y.*y/b^2-x.*x/a^2);u=1;%u=1,表示z要取正值z1=real(z);%取z的实部z1fork=2:49;%以下7行程序的作用是取消z中含虚数的点forj=2:49ifimag(z(k,j))~=0;%imag函数取z的虚部z1(k,j)=0;endifall(imag(z([k-1:k+1],[j-1:j+1])))~=0z1(k,j)=NaN;endendendsurf(x,y,z1);%画空间曲面holdon%使当前轴及图形保持而不被刷新,在此基础上画图ifu==1z2=-z1;--3-surf(x,y,z2);%u=1时加画负半面axis([-abs(a*sqrt(d)),abs(a*sqrt(d)),-abs(b*sqrt(d)),abs(b*sqrt(d)),…-abs(c*sqrt(d)),abs(c*sqrt(d))]);%分别表示xyz轴坐标的刻度范围endaxisequal;%将坐标轴改成相等比例xlabel('x'),ylabel('y'),zlabel('z')holdofffigure四、结果与分析1、结果a=3b=4c=5d=1--4-只有一个量增大:①a增大a=3.5b=4c=5d=1a=4b=4c=5d=1--5-a=5b=4c=5d=1a=6b=4c=5d=1--6-②d增大a=3b=4c=5d=2两个量同时增大:①a、b同时增大a=6b=7c=5d=1--7-a=6b=8c=5d=1②a、d同时增大a=3.5b=4c=5d=2--8-三个量同时增大:①a、b、c同时增大a=4b=5c=6d=1a=6b=8c=10d=1--9-②a、b、d同时增大a=4b=5c=5d=2四个量同时增大:a=5b=6c=7d=3a=6b=8c=10d=2--10-特殊情况:a=3b=3c=3d=1--11-a=4b=4c=4d=1a=3b=3c=3d=2--12-2、分析当d0,a,b,c都取实数时,若a=b=c,x2a2+y2b2+z2c2=d是半径为a√d的球面,当d增大或a,b,c同时增大相同倍数时,x2a2+y2b2+z2c2=d仍是球面,但是其半径增大,当a,b,c改变不同的倍数时,x2a2+y2b2+z2c2=d变成椭球面;若a,b,c不相等,x2a2+y2b2+z2c2=d是在x,y,z轴上截距分别为a√d,b√d,c√d的椭球面,当a,b,c,d独立增大或同时增大时,都会引起椭球面在x,y,z轴上含有相应参量的截距增大,从而使椭球的形状发生改变。五、体会记得以前参加数学建模大赛时,因为不会使用matlab而无法建模,碰到很多困难,最终半途而废。一直都希望能够有机会学习一下matlab,幸运的是,《仿真平台与工具应用实践》这一课程让我对matlab有了初步的a了解。所以,首先,我要感谢学校能够给我提供此次学习机会,感谢老师悉心的教育和指导。在学习matlab的过程中,由于以前有一定的的C语言和VFP基础,进展得还是比较顺利,但是也还是遇到了很多的困难,主要原因是自己知识面太窄,喜欢根据以前程序言语的规则来推测matlab语言,不够细心。修修改改不知道有多少遍,程序终于可以正常运行了,很激动很有成就感,却也有很多无奈。我知道,自己做得还不够好,有的语言运用不够恰当,运用的很多的程序算法都是知其然不知其所以然,对于整道题解法的逻辑思路也不是很完美,但是我以后一定会更加努力学好matlab的。另外,我很喜欢matlab,觉得它用起来很方便,和其他语言的兼容性比较强,图像处理功能很强大。我觉得,这次实训就像是一把钥匙,为我--13-打开了一扇思维和能力的大门,我一定会从中看到更多更多的风景。“纸上得来终觉浅,绝知此事要躬行”,以此自勉。附件(源程序)a=input('a=');b=input('b=');c=input('c=');d=input('d=');xgrid=linspace(-abs(a*sqrt(d)),abs(a*sqrt(d)),50);ygrid=linspace(-abs(b*sqrt(d)),abs(b*sqrt(d)),50);[x,y]=meshgrid(xgrid,ygrid);z=c*sqrt(d-y.*y/b^2-x.*x/a^2);u=1;z1=real(z);fork=2:49;forj=2:49ifimag(z(k,j))~=0z1(k,j)=0;endifall(imag(z([k-1:k+1],[j-1:j+1])))~=0z1(k,j)=NaN;endendendsurf(x,y,z1),holdonifu==1z2=-z1;surf(x,y,z2);axis([-abs(a*sqrt(d)),abs(a*sqrt(d)),-abs(b*sqrt(d)),...--14-abs(b*sqrt(d)),-abs(c*sqrt(d)),abs(c*sqrt(d))]);endaxisequal;xlabel('x'),ylabel('y'),zlabel('z')holdofffigure