怎样用Matlab 过已知三个点画圆?
比如有三个点a(1,0),b(2,3),c(3,2),我想过这三个点画一个圆,然后找出它的圆心,怎么样用matlab求得呢?我知道求圆心,连接任意两个点,然后过其中点,做...
比如有三个点 a(1,0),b(2,3),c(3,2),我想过这三个点画一个圆,然后找出它的圆心,怎么样用matlab求得呢?
我知道求圆心,连接任意两个点,然后过其中点,做垂线,相交就得到圆心了,但是怎么样用matlab来做呢?
哪为高人可以帮帮小妹呢? 展开
我知道求圆心,连接任意两个点,然后过其中点,做垂线,相交就得到圆心了,但是怎么样用matlab来做呢?
哪为高人可以帮帮小妹呢? 展开
3个回答
展开全部
这样写更有通用性:
clc;clear
xy=[1 0;2 3;3 2] %a(1,0),b(2,3),c(3,2)
syms x0 y0 R
f=(xy(:,1)-x0).^2+(xy(:,2)-y0).^2-R^2 %版本太低可能不行
[R,x0,y0]=solve(f(1),f(2),f(3))
R=eval(R(1)),x0=eval(x0(1)),y0=eval(y0(1))%把符号变量转换成数值
t=0:pi/20:2*pi;
x=R*cos(t)+x0;y=R*sin(t)+y0;
plot(x,y,[xy(:,1);xy(1,1)] ,[xy(:,2);xy(1,2)])%三角形
axis equal,grid
figure
plot(x,y,xy(:,1) ,xy(:,2),'*r')
axis equal,grid
结果:
xy =
1 0
2 3
3 2
f =
(1-x0)^2+y0^2-R^2
(2-x0)^2+(3-y0)^2-R^2
(3-x0)^2+(2-y0)^2-R^2
R =
1/2*10^(1/2)
-1/2*10^(1/2)
x0 =
3/2
3/2
y0 =
3/2
3/2
R = 1.5811
x0 = 1.5000
y0 = 1.5000
图形见:
http://hi.baidu.com/chemical%5Fengineering/album/item/e091ca80b45e5df29023d91f.html
clc;clear
xy=[1 0;2 3;3 2] %a(1,0),b(2,3),c(3,2)
syms x0 y0 R
f=(xy(:,1)-x0).^2+(xy(:,2)-y0).^2-R^2 %版本太低可能不行
[R,x0,y0]=solve(f(1),f(2),f(3))
R=eval(R(1)),x0=eval(x0(1)),y0=eval(y0(1))%把符号变量转换成数值
t=0:pi/20:2*pi;
x=R*cos(t)+x0;y=R*sin(t)+y0;
plot(x,y,[xy(:,1);xy(1,1)] ,[xy(:,2);xy(1,2)])%三角形
axis equal,grid
figure
plot(x,y,xy(:,1) ,xy(:,2),'*r')
axis equal,grid
结果:
xy =
1 0
2 3
3 2
f =
(1-x0)^2+y0^2-R^2
(2-x0)^2+(3-y0)^2-R^2
(3-x0)^2+(2-y0)^2-R^2
R =
1/2*10^(1/2)
-1/2*10^(1/2)
x0 =
3/2
3/2
y0 =
3/2
3/2
R = 1.5811
x0 = 1.5000
y0 = 1.5000
图形见:
http://hi.baidu.com/chemical%5Fengineering/album/item/e091ca80b45e5df29023d91f.html
展开全部
求外心坐标,就是外心到三个顶点距离相等,用matlab解方程就可以得到
>> [x,y]=solve('(x-1)^2+(y-0)^2=(x-2)^2+(y-3)^2', '(x-1)^2+(y-0)^2=(x-3)^2+(y-2)^2')
x =
3/2
y =
3/2
所以外接圆圆心为(3/2, 3/2)
>> [x,y]=solve('(x-1)^2+(y-0)^2=(x-2)^2+(y-3)^2', '(x-1)^2+(y-0)^2=(x-3)^2+(y-2)^2')
x =
3/2
y =
3/2
所以外接圆圆心为(3/2, 3/2)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先求出圆心的位置,很简单,到三点距离都相等的点就行了阿!
语句如下所示
[x,y]=solve('(x-1)^2+(y-0)^2=(x-2)^2+(y-3)^2', '(x-1)^2+(y-0)^2=(x-3)^2+(y-2)^2')
然后求出半径
R=sqrt((x-1)^2+(y-0)^2)
然后 使用参数方程求解即可
X=x+R*cos(0:0.01:2*pi);
Y=y+R*sin(0:0.01:2*pi);
最后画图
plot(X,Y)
语句如下所示
[x,y]=solve('(x-1)^2+(y-0)^2=(x-2)^2+(y-3)^2', '(x-1)^2+(y-0)^2=(x-3)^2+(y-2)^2')
然后求出半径
R=sqrt((x-1)^2+(y-0)^2)
然后 使用参数方程求解即可
X=x+R*cos(0:0.01:2*pi);
Y=y+R*sin(0:0.01:2*pi);
最后画图
plot(X,Y)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询