姓名: 学号: 班级:
用Matlab实现直线插补计算程序
clear; F=0;x=0;y=0; dx=0.5;dy=0.6;
xe=-5;ye=-6; K=ye/xe; xx(1)=x;yy(1)=y; index=2; while(1)
if(F=0)
if(xe0)
x=x+dx;
else
end
x=x-dx;
else
y=y;
F=abs(xe*y)-abs(ye*x);
if(ye0)
y=y+dy;
else
end
y=y-dy;
end
x=x;
F=abs(xe*y)-abs(ye*x);
if(abs(F)=0.01) F=0;
end xx(index)=x; yy(index)=y; index=index+1;
if((abs(x)+abs(y))=(abs(xe)+abs(ye))) break;
end
end
if(xe0)
xxx=0:0.01:xe;
else
xxx=0:-0.001:xe;
end yyy=K*xxx; if(xe0)
plot(xx,yy,g,xxx,yyy,b);
else
plot(xx,yy,g-,xxx,yyy,b);
end
grid on;
0
-1
-2
轴 -3 y
-4
-5
-6
-5 -4.5 -4 -3.5 -3 -2.5
x轴
图表 1
-2 -1.5 -1 -0.5 0
当dx=0.5;dy=0.6;xe=-5;ye=-6;时,结果如图表1所示。
4
3.5
3
2.5
2
1.5
1
0.5
0
0 1 2 3 4 5 6 7
图表 2
当dx=0.6;dy=0.4; xe=6;ye=4;时结果如图标2所示,结果显示多走了一步,
原因是matlab在倒数第二步计算if((abs(x)+abs(y))=(abs(xe)+abs(ye))) 时,结果不为0,仍需继续走一步。
可以对程序做进一步修改:加入条件dmin=min(dx,dy)/2; 并把
if((abs(x)+abs(y))=(abs(xe)+abs(ye))) 修改成
if(abs(abs(x)+abs(y)-abs(xe)-abs(ye))dmin) 结果如图3所示,这样就不会多走一步。
4
3.5
3
2.5
2
1.5
1
0.5
0
0 1 2 3 4 5 6
图表 3
采用不等步长和简化的偏差计算公式,结果如图表4所示;我们发现对于,简化的
偏差计算不适用于不等步长的情况。
0
-1
-2
-3
-4
-5
-6
-7
-5 -4.5 -4 -3.5 -3 -2.5 -2 -1.5 -1 -0.5 0
图表 4
在土表所采用的程序基础上对偏差计算公式做一个修改,F=F-abs(ye*dx); F=F+abs(xe*dy);计算结果如图表5所示,此方法在该条件下适用。
0
-1
-2
-3
-4
-5
-6
-5 -4.5 -4 -3.5 -3 -2.5 -2 -1.5 -1 -0.5 0
图表 5
您可能关注的文档
- 用连乘方法解决问题.docx
- 用六个词语写一段话.docx
- 用能单位季度半年全年能耗分析报告.docx
- 用朴素贝叶斯分类器解决佩戴隐形眼镜问题1问题描述.docx
- 用青春谱写奉献的诗篇.docx
- 婴幼儿游泳馆开业庆典主持词.docx
- 迎国庆活动方案4篇.docx
- 迎国庆句子分析和总结.docx
- 迎接2020的句子分析和总结.docx
- 迎接客人的礼仪_接待礼仪.docx
- 浙江省宁波市2024-2025学年高三下学期高考模拟考试数学试卷(解析版).pdf
- 广东省汕头市潮阳一中明光学校2024-2025学年高二上学期期中考试政治试题(解析版).pdf
- 广东省汕头市潮阳一中明光学校2024-2025学年高三上学期第三阶段考试历史试题(解析版).pdf
- 广东省汕头市澄海区2024-2025学年八年级上学期期末考试英语试题(解析版).pdf
- 浙江省衢州、丽水、湖州三地市2025届高三下学期4月教学质量检测(二模)数学试题(解析版).pdf
- 浙江省绍兴市上虞区2025届高三下学期5月高考及选考适应性考试数学试卷(解析版).pdf
- 广东省汕尾市2023-2024学年三年级上学期英语期末试卷(解析版).docx
- 广东省汕头市澄海区2024-2025学年高二上学期1月期末地理试题(解析版).pdf
- 广东省汕头市澄海区2024-2025学年八年级上学期期末语文试题(解析版).pdf
- 湖北省恩施土家族苗族自治州来凤县2023-2024学年三年级上学期英语期末试卷(解析版).docx
原创力文档

文档评论(0)