2016-03-04 48 views
-3

可以说我有3个二进制点(5,0),(0,5),( - 5,0),我想找到一个等距离这些3点总之找到通过这3点的圆的中心)。我从几何知道,如果我的答案是(a,b),那么我可以找到(a,b)和3点之间的距离并将它们相等,然后求解3个联立方程。我如何在R中快速执行此操作?我知道方程将是线性的,所有平方项将抵消。R中心给出3分 - 求解联立方程

_____________________________update1

我试图为如何解决R.线性方程但作为所有链接指望我提供LHS系数和RHS值的所有3个方程式没有得到很好的效果谷歌搜索。但我没有RHS。我必须一次拿两个方程式并移动术语来找到RHS。有没有R包可以为我做这个?

+1

为什么你不想谷歌这个普遍的问题解决方案? – MBo

+0

我使用Google搜索 - https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=r%20center%20given%203%20分。但它不提供任何R代码。它只是解释找到中心后面的逻辑 – user2543622

+0

用首选语言编写简单公式(https://en.wikipedia.org/wiki/Circumscribed_circle#Cartesian_coordinates_2)是否是一个真正的问题? – MBo

回答

0

我使用了评论中给出的link。我的代码如下

#finding circles center 
p3=c(0,5,5,0,-5,0)#coordinates of point in (x1,y1,x2,y2,x3,y3) format 


mat1=matrix(c(p3[1]^2+p3[2]^2,p3[2],1,p3[3]^2+p3[4]^2,p3[4],1,p3[5]^2+p3[6]^2,p3[6],1),nrow=3,ncol=3,byrow=TRUE) 
mat2=matrix(c(p3[1],p3[1]^2+p3[2]^2,1,p3[3],p3[3]^2+p3[4]^2,1,p3[5],p3[5]^2+p3[6]^2,1),nrow=3,ncol=3,byrow=TRUE) 
mat3=matrix(c(p3[1],p3[2],1,p3[3],p3[4],1,p3[5],p3[6],1),nrow=3,ncol=3,byrow=TRUE) 
mat1 
mat2 
mat3 


xcenter=det(mat1)/(2*det(mat3)) 
ycenter=det(mat2)/(2*det(mat3)) 
radius=sqrt((p3[1]-xcenter)^2+(p3[2]-ycenter)^2)