题目:
二. 实验目的
体会近似思想的运用和matlab绘图函数的使用。
三.实验过程
实现的具体思路:
首先在求取参数R,r时,可以先计算数据文件中所有点距离中心点的距离,然后求取这些距离的平均值,这样我们可以得到R.然后根据R+r=最大的距离,R-r=最小的距离,得到r的值。
|
在绘制圆环面上,根据参数方程可以求解出圆环面上的点,然后根据surf函数绘制圆环面
|
提示图形:
任务一的代码如下:
data=load('data_ring1.txt');
[m,n]=size(data);
for i=1:m distance(i)=sqrt(data(i,1)^2+data(i,2)^2+data(i,3)^2);
end
distance_total=0;
for i=1:m
distance_total=distance(i)+distance_total;
end
R=distance_total/m
max_distance=max(distance);
min_distance=min(distance);
r1=max_distance-R;
r2=R-min_distance;
r=(r1+r2)/2
运行结果:
绘制图形的代码:
figure
k=linspace(0,2*pi,60)
s=linspace(0,2*pi,60)
R=25.884127431102569971699267625809;
r=0.21829770998673581061666482128203;
[u,v]=meshgrid(k,s);
x_new=(R+r*cos(u)).*cos(v);
y_new=(R+r*cos(u)).*sin(v);
z_new=r*sin(u);
surf(x_new,y_new,z_new)
任务二的代码:
data=load('data_ring2.txt');
x_max=max(data(:,1));
y_max=max(data(:,2));
z_max=max(data(:,3));
x_min=min(data(:,1));
y_min=min(data(:,2));
z_min=min(data(:,3));
center_node=[(x_max+x_min)/2,(y_max+y_min)/2,(z_max+z_min)/2]%圆环中心
[m,n]=size(data);
for i=1:m
distance(i)=sqrt((data(i,1)-center_node(1))^2+(data(i,2)-center_node(2))^2+(data(i,3)-center_node(3))^2);
end
distance_total=0;
for i=1:m
distance_total=distance(i)+distance_total;
end
R=distance_total/m
max_distance=max(distance);
min_distance=min(distance);
r1=max_distance-R;
r2=R-min_distance;
r=(r1+r2)/2
任务二的绘图代码:
figure
center_node =[12.0284 3.1771 6.4995];
k=linspace(0,2*pi,60)
s=linspace(0,2*pi,60)
R= 18.2532;
r= 3.2230;
[u,v]=meshgrid(k,s);
x_new=center_node(1)+(R+r*cos(u)).*cos(v);
y_new=center_node(2)+(R+r*cos(u)).*sin(v);
z_new=center_node(3)+r*sin(u);
surf(x_new,y_new,z_new)
legend('ÖÐÐÄΪ£º12.0284 3.1771 6.4995')
四. 实验自评与改进方向
实验中遇到了一些问题,例如第一次自己尝试使用mesh函数绘制图像,但是没有考虑到坐标的范围问题;在绘制图像上,第一次采用表达式方程绘制也失败了,之后便采用圆环的参数方程顺利地解决了问题。
本实验中还需要改进的方向:在编程时自己可以规范化学习别人的编程方式。
五. 实验体会,收获及建议
1.通过此次综合实验掌握了圆环的参数方程表达和matlab的画图函数的练习。
2.在此次实验中自己尝试了多种方法求解,自己的思维能力得到了锻炼。
建议:建议增加综合性项目的训练,有助于更加熟练的使用matlab和锻炼自己的编程能力,同时也增加对数学实验的理解和数值计算的理解。