没有合适的资源?快使用搜索试试~ 我知道了~
matlab 求解圆公切线方程 程序.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 163 浏览量
2022-07-05
16:22:08
上传
评论
收藏 63KB DOC 举报
温馨提示
试读
11页
matlab 求解圆公切线方程 程序
资源推荐
资源详情
资源评论
matlab 求解圆公切线方程 程序
这是前段时间数学模型期末作业 给出两圆的圆心坐标和半径,通过程序给出公
切线方程
现在我已经发现这个程序有一些 bug,当外公切成某一角度的时候,将不能正确
给出切线方程,而且图像给出的也不是非常的理想。
下面是我论文中的摘要部分:
两个圆之间的位置关系主要包括相切、相离、包含等,在本文说明的模型中,我们主要利用几何
中关于图形相似求比例,已知两点坐标求距离,以及直线角度和直线上点的相互关系等知识,研
究了求解两圆之间公切线的算法。为了使算法简洁易懂并且使程序具有更好的可读性,我们还在
求解的同时结合了几何和代数方法。其中几何方法严格按照图形推导,使算法清晰直观,充分反
应了图形的特点;而代数方法利用图形的普遍性,避开了几何方法中需要根据图形的差异而要分
类讨论的复杂情况。再结合了两方面的优点后,我们完成了对公切线方程求解的算法设计。
对于相对复杂的情况,我们采用了分类讨论的方法进行处理,最后整合到同一个模型中。最后模
型实现了通过输入两个圆的圆心坐标与半径,程序顺利给出其公切线方程,以及公切线类型和条
数,并且演示出具体输入数据的圆和公切线的坐标平面图
以下是程序部分
function circle(x,y,r)
jiao=0:pi/100:2*pi;
r1=input('请填入第一个圆的半径');
if r1>0
a=1;
else a=0;
end
while a==0
r1=input('输入错误,请输入一个正确的半径');
if r1>0
a=1;
else a=0;
end
end
r2=input('请填入第二个圆的半径');
if r2>0
a=1;
else a=0;
end
while a==0
r2=input('输入错误,请输入一个正确的半径');
if r2>0
a=1;
else a=0;
end
end
x1=input('请输入第一个圆的横坐标');
y1=input('请输入第一个圆的纵坐标');
x2=input('请输入第二个圆的横坐标');
y2=input('请输入第二个圆的纵坐标');
x=x1+r1*cos(jiao);
y=y1+r1*sin(jiao);
plot(x,y)
axis equal
hold
x=x2+r2*cos(jiao);
y=y2+r2*sin(jiao);
plot(x,y)
axis equal
L=sqrt((x1-x2).^2+(y1-y2).^2);
if x1==x2
alpha=pi/2; %alpha 为圆心连线与水平的夹角
else alpha=atan((y2-y1)/(x2-x1));
end
if r1+r2<=L
A=asin((r1+r2)/L);
oq=r1*L/(r1+r2);
c1=alpha+A;%c 为内公切线与水平坐标的夹角
c2=alpha-A;
if x1<=x2
Qx=x1+oq*cos(alpha);
Qy=y1+oq*sin(alpha);
else Qx=x2+oq*cos(alpha);
Qy=y2+oq*sin(alpha);
end
if c1~=pi/2&c1~=3*pi/2&c1~=-pi/2&c1~=-3pi/2;
k1=tan(c1);
b1=Qy-Qx*tan(c1);
s1='y=';
s1=strcat(s1,num2str(k1),'x');
if b1>=0
剩余10页未读,继续阅读
资源评论
- ToLighthouse2023-11-23这个资源值得下载,资源内容详细全面,与描述一致,受益匪浅。
老帽爬新坡
- 粉丝: 83
- 资源: 2万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功