A.最小二乘法回到顶部
题意
给个函数,求偏导
题解
高等数学题,过程就不列了,计算可得,复杂度O(1)
k=(Σ(xy)-ΣxΣy/n)/(-(Σx)^2/n+Σ(x^2))
b=(Σy-kΣx)/n
代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 int main(){ 5 int n; 6 while(scanf("%d",&n)!=EOF){ 7 double sumx=0,sumx2=0,sumy=0,sumxy=0,x,y; 8 for(int i=1;i<=n;i++){ 9 scanf("%lf%lf",&x,&y); 10 sumx+=x,sumy+=y,sumxy+=x*y,sumx2+=x*x; 11 } 12 double k=(sumxy-sumx*sumy/n)/(-sumx*sumx/n+sumx2); 13 double b=(sumy-k*sumx)/n; 14 printf("%.1f %.1f\n",k,b); 15 } 16 return 0; 17 }