另附上其他部分:
declare @m float,@n int
--@m存放平均值
--@n存放记录数
declare @b float,@a float,@c float
declare @b1 float,@a1 float
select @m=avg(x),@n=count(*) from tselect @b1=sum(x*y)/sum(x*x) from (select y,x-@m as x from t) A
select @c=(sum(x*x*y)-sum(x*x)*sum(y)/@n)/(sum(x*x*x*x)-(1.0/@n)*sum(x*x)*sum(x*x)) from (select y,x-@m as x from t) A
select @a1=(sum(y)-@c*sum(x*x))/@n from (select y,x-@m as x from t) A
select @a=@a1-@b1*@m+@c*@m*@m,@b=@b1-2*@m*@c
select @a,@b,@c
declare @m float,@n int
--@m存放平均值
--@n存放记录数
declare @b float,@a float,@c float
declare @b1 float,@a1 float
select @m=avg(x),@n=count(*) from tselect @b1=sum(x*y)/sum(x*x) from (select y,x-@m as x from t) A
select @c=(sum(x*x*y)-sum(x*x)*sum(y)/@n)/(sum(x*x*x*x)-(1.0/@n)*sum(x*x)*sum(x*x)) from (select y,x-@m as x from t) A
select @a1=(sum(y)-@c*sum(x*x))/@n from (select y,x-@m as x from t) A
select @a=@a1-@b1*@m+@c*@m*@m,@b=@b1-2*@m*@c
select @a,@b,@c
有兴趣的可以去参考一下这个页面。呵呵。它也是用最小二乘法算的。。
能麻烦你把最后的计算结果写一下吗??
就是说:
a=...
b=...
c=...
希望是数学表达市,呵呵,谢谢你了
方法那个讲师也说了,网上也有,是把曲线移到中点,得到满足sum(X)=0,得到简化公式,
然后得到A1,B1,C1
其实C1就等于C
然后把与中间的差距X-AVG(X)代入公式,得到真正的A B C参数。