一. 问题引入
二. 问题分析
1.通过三角形面积公式三阶行列式判断,即行列式的值不为零时则三点不共线证明三点必有共圆
基于MATLAB的代码:求解行列式值不为零则可证明三点必有共圆
2.通过代入坐标即x和y的值构造关于D E F的方程即构造矩阵来求矩阵的秩从而判断是否共圆
通过上述求秩即原方程组和导出组的矩阵秩相等则方程有唯一解证明三点有唯一共圆
三. 通过MATLAB作出圆图形并且求解圆心和半径
作出的圆形如图:
求解圆心和半径的结果:
四. 作出圆形和求解圆心半径的MATLAB代码
pnt=[x1 y1;x2 y2;x3 y3];
scatter(pnt(:,1),pnt(:,2),'filled') %作出圆形图
hold on
[~,Mu,R]=getCircle(pnt(:,1),pnt(:,2));
t=linspace(0,2*pi,50);
plot(cos(t).*R+Mu(1),sin(t).*R+Mu(2))
function [Func,Mu,R]=getCircle(X,Y)
syms x y
symMat=[x.^2+y.^2,x,y,1];
varMat=[X(1).^2+Y(1).^2,X(1),Y(1),1;
X(2).^2+Y(2).^2,X(2),Y(2),1;
X(3).^2+Y(3).^2,X(3),Y(3),1];
Func=matlabFunction(det([symMat;varMat])); %计算圆的隐函数
%计算各个参数
a=det([1 0 0 0;varMat]);
b=det([0 1 0 0;varMat]);
c=det([0 0 1 0;varMat]);
d=det([0 0 0 1;varMat]);
Mu=-[b,c]./a./2; %计算圆心
R=sqrt(sum(Mu.^2)-d./a); %计算半径
end
####完结