最近碰到一個問題
回歸求引數:y=a x^b + c
這個貌似不能線性化
在matlab我知道用擬合工具箱求得
但是是基于什么原理卻不知道
我現在需要在我的MFC小程式中求得回歸引數a,b,c ,然后去得到函式的零點
求知道的朋友告知下演算法或者實作方式,感激
uj5u.com熱心網友回復:
搜:最小二乘法多項式擬合uj5u.com熱心網友回復:
提供兩種方法:1. 粗略方法,分兩步:1) y-c = ax^b 兩邊取對數估計 Y= ln(a) + bln(X) 估計a,b 2) y = ax^b +c 將b作為已知數估 a,c
2. 微分線性化 dy/da = x^b dy/db = abx^(b-1) dy/dc = 1 2)按泰勒級數展開 y=ax^b + c 建立誤差方程 Ax=B 按最小二乘求解abc
沒有試不知道是否可行。
uj5u.com熱心網友回復:
《高等數學》uj5u.com熱心網友回復:
上面提到的方法1有問題,應該先找到資料集的最小值,直接估計c 在對數擬合估計a,b具體方法: 1)找資料集最小值(c) , 2) 平移變化資料集 3) 資料集每元素取對數,4)擬合Y=ax^b
uj5u.com熱心網友回復:
具體方法: 1)在待擬合的資料集中取3點 (x1,y1) (x2,y2) (x3=sqrt(x1*x2),y3) 計算c=(y1*y2-y3*y3)/(y1+y2-2*y3)2) 令X=ln(x) Y=ln(y-c) 則 Y=ln(a) + bX
3) 用直線擬合方法求 引數 a b
uj5u.com熱心網友回復:
計算方法一般這種用迭代,比如高斯迭代,高斯賽德爾迭代,
uj5u.com熱心網友回復:
在擬合y=ax^b + c程序中 先從資料集中挑選符合條件的樣本求c,再將問題轉換為簡單冪函式的線性擬合,其中計算c的程序是這樣的:取(x1,y1)(x2,y2)樣本,則有: y1-c = ax1^b (1) y2-c=ax2^b (2) 再搜索滿足或基本滿足條件 y3*y3= x1*x2的樣本,
這樣有: y3-c = a(x1x2)^b (3)
聯立(1)~(3)有 (y3-c)(y3-c) = (y1-c)*(y2-c)
得: c=(y1*y2-y3*y3)/(y1+y2-2*y3)
數學是最好的益智游戲
大家知道我為什么對這個函式的擬合感興趣嗎? 因為如果一幅影像的亮度符合這個函式的分布規律,人眼感知就比較舒適。在解決顏色匹配問題程序中我想擬合這個函式,開始以為簡單,其實不然。 還有專門研究認知的人說將b確定為2.2 很好。
原來數學是我們解決問題最好的工具。最好中美貿易問題也用數學來解決:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/67032.html
標籤:基礎類
