matlab 求解圆公切线方程 程序

matlab 求解圆公切线方程 程序

ID:14024708

大小:63.37 KB

页数:13页

时间:2018-07-25

matlab 求解圆公切线方程 程序_第1页
matlab 求解圆公切线方程 程序_第2页
matlab 求解圆公切线方程 程序_第3页
matlab 求解圆公切线方程 程序_第4页
matlab 求解圆公切线方程 程序_第5页
资源描述:

《matlab 求解圆公切线方程 程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、matlab求解圆公切线方程程序 这是前段时间数学模型期末作业 给出两圆的圆心坐标和半径,通过程序给出公切线方程现在我已经发现这个程序有一些bug,当外公切成某一角度的时候,将不能正确给出切线方程,而且图像给出的也不是非常的理想。下面是我论文中的摘要部分:两个圆之间的位置关系主要包括相切、相离、包含等,在本文说明的模型中,我们主要利用几何中关于图形相似求比例,已知两点坐标求距离,以及直线角度和直线上点的相互关系等知识,研究了求解两圆之间公切线的算法。为了使算法简洁易懂并且使程序具有更好的可读性,我们还在求解的同时

2、结合了几何和代数方法。其中几何方法严格按照图形推导,使算法清晰直观,充分反应了图形的特点;而代数方法利用图形的普遍性,避开了几何方法中需要根据图形的差异而要分类讨论的复杂情况。再结合了两方面的优点后,我们完成了对公切线方程求解的算法设计。对于相对复杂的情况,我们采用了分类讨论的方法进行处理,最后整合到同一个模型中。最后模型实现了通过输入两个圆的圆心坐标与半径,程序顺利给出其公切线方程,以及公切线类型和条数,并且演示出具体输入数据的圆和公切线的坐标平面图 以下是程序部分functioncircle(x,y,r)ji

3、ao=0:pi/100:2*pi;r1=input('请填入第一个圆的半径'); ifr1>0   a=1; elsea=0; endwhile a==0   r1=input('输入错误,请输入一个正确的半径');    ifr1>0   a=1; elsea=0; endendr2=input('请填入第二个圆的半径'); ifr2>0   a=1; elsea=0; endwhile a==0   r2=input('输入错误,请输入一个正确的半径');    ifr2>0   a=1; elsea=0; 

4、endend   x1=input('请输入第一个圆的横坐标');   y1=input('请输入第一个圆的纵坐标');   x2=input('请输入第二个圆的横坐标');   y2=input('请输入第二个圆的纵坐标');x=x1+r1*cos(jiao);y=y1+r1*sin(jiao);plot(x,y)axisequal holdx=x2+r2*cos(jiao);y=y2+r2*sin(jiao);plot(x,y)axisequal   L=sqrt((x1-x2).^2+(y1-y2).^2)

5、;ifx1==x2   alpha=pi/2;%alpha为圆心连线与水平的夹角   elsealpha=atan((y2-y1)/(x2-x1));endifr1+r2<=L   A=asin((r1+r2)/L);   oq=r1*L/(r1+r2);   c1=alpha+A;%c为内公切线与水平坐标的夹角   c2=alpha-A;   ifx1<=x2   Qx=x1+oq*cos(alpha);   Qy=y1+oq*sin(alpha);   elseQx=x2+oq*cos(alpha);    

6、    Qy=y2+oq*sin(alpha);   end   ifc1~=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');       ifb1>=0         s1=strcat(s1,'+');       end       s1=strcat(s1,num2str(b1))      

7、 disp('s1为其中一条内切线的直线方程')       y=k1*x+b1;       plot(x,y)   elseX1=Qx       disp('X1为内切线方程之一,与x轴垂直')       x=[Qx,Qx];       y=[-9,9];       plot(x,y)   end   ifc2~=pi/2&c2~=3*pi/2&c2~=-pi/2&c2~=-3pi/2;       k2=tan(c2);       b2=Qy-Qx*tan(c2);       s2='y='; 

8、      s2=strcat(s2,num2str(k2),'x');       ifb2>=0         s2=strcat(s2,'+');       end       s2=strcat(s2,num2str(b2))       disp('s2为其中一条内切线的直线方程')       y=k2*x+b2;       plot(x,y)   el

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。