发表于:2007-11-12 23:51:00
楼主
[b]高斯求解在工程中非线性拟合研究[/b]
在工程中经常遇到检测反馈信值在测量范围内成非线性。为了找到反馈的特性曲线,需要找到找到该信号的特性曲线。常用的处理方法是在测量范围内记录一些点用高次方程(用VB表示:y=Kn * X^n + Kn-1 * X^(n-1) + ··· + X + K0 )拟合求得比较精确反映特性曲线的方程来,以供进行测量值的计算。
常用的方程求解有Matlab的最小二乘法分析得到各次项的系数Kn,可以得到方程曲线。工程上常用8-10次的最高次方程进行拟合,在此不多详述Matlab求解过程。下面以VB程序介绍用高斯消元法求Kn的过程。
设定最高次幂为 m
原始采样点个数为n
’******************************* 高斯消元
Public Sub gauss(a(), m, n)
For i = 1 To m + 1 '求系数
For j = 1 To m + 2
For k = 1 To n
If j <= m + 1 Then
a(i, j) = a(i, j) + X(k) ^ (i + j - 2)
ElseIf j = m + 2 Then
a(i, j) = a(i, j) + (X(k) ^ (i - 1)) * Y(k)
End If
Next k
Next j
Next i
For j = 1 To m + 1
If a(j, j) <> 0 Then
p = 1 / a(j, j)
For i = j To m + 2
a(j, i) = a(j, i) * p
Next i
For i = 1 To m + 1
If i <> j Then
p = -a(i, j)
For s = j To m + 2
a(i, s) = a(i, s) + a(j, s) * p
Next s
End If
Next i
Else
For i = j To m + 1
If a(i, j) = 0 Then
If i = m + 1 And j&