#include<iostream>
#include<cmath>
using namespace std
double solve(int x,int y,int z) //计算坐标到原点距离
{
return sqrt(x*x+y*y+z*z)
}
int main()
{
int i,x,y,z//定义三维坐标 存x,y,z
double dis,maxdis=0//定义最远距离
for(i=0i<15i++)
{
cin>>x>>y>>z//输入
dis=solve(x,y,z)//计算
maxdis=dis>maxdis?dis:maxdis//判断远近
}
printf("%lf\n",maxdis)//输出最远的
return 0
}
x=[1 2 3 6 9 10]y=[1 3 5 7 9 11]%给定x,y的坐标
p=polyfit(x,y,1)%直线拟合
p =
0.97410.9671
%相当于y=0.9741x+0.9671
x1=(0:0.1:10)
f = polyval(p,x)%求出0:10上的拟合多项式所对应函数值
plot(x,f)%画出所对应的拟合直线
hold on
plot(x,y,'*')%画出那些离散的点
grid on
最小二乘
Ax=b
AT Ax=AT b
x=(AT A)^-1(AT b)
function [a,b,c,r]=fitcircle(x,y,z)
%(x+a)^2+(y+b)^2+(z+c)^2=r^2
x=x(:)
y=y(:)
z=z(:)
csize=min([length(x),length(y),length(z)])
if csize<4
a=0
b=0
c=0
r=-1
return
end
pow_xyz=-x(1:csize).*x(1:csize)
pow_xyz=pow_xyz-y(1:csize).*y(1:csize)
pow_xyz=pow_xyz-z(1:csize).*z(1:csize)
A=[x(1:csize),y(1:csize),z(1:csize),ones(csize,1)]
xans=((A'*A)^-1)*(A'*pow_xyz)
a=xans(1)
b=xans(2)
c=xans(3)
r=(a*a+b*b+c*c)/4-xans(4)
r=sqrt(r)
a=a/2
b=b/2
c=c/2
end
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)