直线拟合c语言程序,ax+by+c=0 型直线拟合算法

所谓直线拟合,通常也叫做线性拟合、一元线性回归。指的是当我们有一批数据(xi,yi),这些数据在平面坐标系下落在一条直线上,或近似的落在一条直线上。我们就要求出这条直线的参数。如果这条直线可以写为:

y=kx+b

那么

k=∑(xi−x¯)(yi−y¯)∑(xi−x¯)2

b=y¯−kx¯

这个关系式许多教科书上都有详细的推导,无需多说。

今天要说的是另一种情况,当我们的数据有可能落在一条竖直的直线上,也就是k 有可能为∞ 时,应该如何做拟合。这时我们肯定就不能用y=kx+b 了,但是可以将这个表达式变变形。我们知道

k=tanθ=sinθcosθ

那么原来的直线方程可以写为:

ycosθ=xsinθ+bcosθ

或者写为更一般的形式:

ax+by+c=0

同时满足附加条件:

a2+b2=1

下面就来说说这种形式的直线方程如何拟合。

点到直线的垂直距离

首先先要解决一个小问题,一个点 (xi,yi) 到这条直线的距离是多少。

直接计算有点麻烦,我们先考虑一种简单的形式,点 (0,0) 到这条直线的距离。

直线方程:

xsin(θ)−ycos(θ)+c=0

那么与它垂直的过原点的直线方程为:

xsin(θ+π/2)−ycos(θ+π/2)=0

化简后得到:

xcos(θ)+ysin

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值