- UID
- 658062
- 积分
- 2147
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2008-10-22
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
原文地址
http://bbs.csdn.net/topics/390340989
- class Matrix_PolyFit
- {
- public bool matrix_PolyFit(double[] x, double[] y, int X_Y_Number, int Fit_N, ref double[] ks)
- {
- // 对X_Y_Number组数据x,y进行Fit_N次多项式拟合,拟合返回多项式的系数ks
- // x[X_Y_Number],y[X_Y_Number],ks[Fit_N+1]
- //
- if (Fit_N > X_Y_Number || X_Y_Number < 1)
- {
- return false;
- }
- int i, j, index, n;
- double temp;
- Fit_N++;
- double[] x2 = new double[Fit_N*Fit_N];
- double[] y2 = new double[Fit_N];
- for (i = 0, index = 0; i < Fit_N; i++)
- {
- y2[i] = 0;
- for (j = 0; j < Fit_N; j++)
- {
- x2[index + j] = 0;
- }
- index += Fit_N;
- }
- x2[0] = X_Y_Number;
- for (i = 0; i < Fit_N; i++)
- {
- for (j = 0; j < Fit_N; j++)
- {
- temp = 0;
- n = i + j;
- for (index = 0; index < X_Y_Number; index++)
- {
- temp += Math.Pow(x[index], n);
- }
- index = j;
- for (n = i; n < Fit_N; n++)
- {
- if (index >= 0)
- {
- x2[n * Fit_N + index] = temp;
- }
- index--;
- }
- }
- }
- n = Fit_N + Fit_N - 2;
- temp = 0;
- for (i = 0; i < X_Y_Number; i++)
- {
- temp += Math.Pow(x[i], n);
- }
- x2[Fit_N * Fit_N - 1] = temp;
- for (i = 0; i < Fit_N; i++)
- {
- temp = 0;
- for (j = 0; j < X_Y_Number; j++)
- {
- temp += y[j] * Math.Pow(x[j], i);
- }
- y2[i] = temp;
- }
- return true;
- }
- }
复制代码 |
|