zoukankan
html css js c++ java
最小二乘法曲线拟合
//
最小二乘法曲线拟合
typedef CArray
<
double
,
double
>
CDoubleArray;
BOOL CalculateCurveParameter(CDoubleArray
*
X,CDoubleArray
*
Y,
long
M,
long
N,CDoubleArray
*
A)
{
//
X,Y -- X,Y两轴的坐标
//
M -- 结果变量组数
//
N -- 采样数目
//
A -- 结果参数
register
long
i,j,k;
double
Z,D1,D2,C,P,G,Q;
CDoubleArray B,T,S;
B.SetSize(N);
T.SetSize(N);
S.SetSize(N);
if
(M
>
N)M
=
N;
for
(i
=
0
;i
<
M;i
++
)
(
*
A)[i]
=
0
;
Z
=
0
;
B[
0
]
=
1
;
D1
=
N;
P
=
0
;
C
=
0
;
for
(i
=
0
;i
<
N;i
++
)
{
P
=
P
+
(
*
X)[i]
-
Z;
C
=
C
+
(
*
Y)[i];
}
C
=
C
/
D1;
P
=
P
/
D1;
(
*
A)[
0
]
=
C
*
B[
0
];
if
(M
>
1
)
{
T[
1
]
=
1
;
T[
0
]
=-
P;
D2
=
0
;
C
=
0
;
G
=
0
;
for
(i
=
0
;i
<
N;i
++
)
{
Q
=
(
*
X)[i]
-
Z
-
P;
D2
=
D2
+
Q
*
Q;
C
=
(
*
Y)[i]
*
Q
+
C;
G
=
((
*
X)[i]
-
Z)
*
Q
*
Q
+
G;
}
C
=
C
/
D2;
P
=
G
/
D2;
Q
=
D2
/
D1;
D1
=
D2;
(
*
A)[
1
]
=
C
*
T[
1
];
(
*
A)[
0
]
=
C
*
T[
0
]
+
(
*
A)[
0
];
}
for
(j
=
2
;j
<
M;j
++
)
{
S[j]
=
T[j
-
1
];
S[j
-
1
]
=-
P
*
T[j
-
1
]
+
T[j
-
2
];
if
(j
>=
3
)
{
for
(k
=
j
-
2
;k
>=
1
;k
--
)
S[k]
=-
P
*
T[k]
+
T[k
-
1
]
-
Q
*
B[k];
}
S[
0
]
=-
P
*
T[
0
]
-
Q
*
B[
0
];
D2
=
0
;
C
=
0
;
G
=
0
;
for
(i
=
0
;i
<
N;i
++
)
{
Q
=
S[j];
for
(k
=
j
-
1
;k
>=
0
;k
--
)
Q
=
Q
*
((
*
X)[i]
-
Z)
+
S[k];
D2
=
D2
+
Q
*
Q;
C
=
(
*
Y)[i]
*
Q
+
C;
G
=
((
*
X)[i]
-
Z)
*
Q
*
Q
+
G;
}
C
=
C
/
D2;
P
=
G
/
D2;
Q
=
D2
/
D1;
D1
=
D2;
(
*
A)[j]
=
C
*
S[j];
T[j]
=
S[j];
for
(k
=
j
-
1
;k
>=
0
;k
--
)
{
(
*
A)[k]
=
C
*
S[k]
+
(
*
A)[k];
B[k]
=
T[k];
T[k]
=
S[k];
}
}
return
TRUE;
}
查看全文
相关阅读:
一些 Codeforce Content 补题记录
如何设置IDEA代码风格为Google风格,使用Google风格format
python学习第十篇——while 的灵活运用
Python学习第九篇——while和for的区别
python学习之第八篇——字典嵌套之字典中嵌套字典
python学习第七篇——字典访问键与值
Python学习第六篇——字典中的键和值
Python学习第五篇——如何访问字典
Python学习第四篇——列表访问与判定
[Leetcode] Maximum depth of binary tree二叉树的最大深度
原文地址:https://www.cnblogs.com/yunbo/p/1155104.html
最新文章
史丰收速算|2014年蓝桥杯B组题解析第四题-fishers
李白打酒|2014年蓝桥杯B组题解析第三题-fishers
切面条|2014年蓝桥杯B组题解析第二题-fishers
啤酒和饮料|2014年蓝桥杯B组题解析第一题-fishers
快速排序|2018年蓝桥杯B组题解析第五题-fishers
Vue入门手册整理
设计模式之备忘录模式(行为型)
设计模式之访问者模式(行为型)
Oracle
0x03~04 前缀和与差分、二分
热门文章
Codeforces #698 Div.2 (A~D题)个人题解记录
0x02 基本算法-枚举、模拟、递推
C++ 中assert断言函数的基本用法
Codeforces Round #697 (Div. 3) A
C++ tuple(STL tuple)模板用法详解
AtCoder Beginner Contest 189 Personal Editorial
1.1 《数据库系统概论》之数据库系统概述(数据、数据库、数据库管理系统、数据库系统、数据库的产生和发展)
ACM | 动态规划-数塔问题变种题型
ACM | 新版 C++ 特性
【应用】树上问题-树的重心
Copyright © 2011-2022 走看看