MATLAB求解模型待定係數

2021-10-05 09:12:09 字數 2495 閱讀 8095

在進行方程待定係數求解時,matlab提供了多種解決方案。常用 的有:矩陣左除(超定方程求解)轉換為線性回歸曲線擬合非線性回歸等方法。

這裡以求解如下方程係數為例:

a p(

vs,v

w,fn

)=cv

sαvw

β(fn

rc)γ

/2a_p(v_s,v_w,f_n) =c\frac^\alpha}^\beta}(})^

ap​(vs

​,vw

​,fn

​)=c

vw​β

vs​α

​(rc

​fn​

​)γ/

2即通過matlab擬合工具箱cftool進行擬合。

雖然matlab曲線擬合工具箱表面是只能是擬合二元曲線,實際上通過方程的變化可以擬合更多元的曲線,但始終還是存在無法擬合高元曲線的問題。因此針對模型1中的情況,無法使用曲線擬合工具箱。

對模型兩邊取對數可得將其轉變為線性關係:

ln ⁡a

p=ln⁡

c+αln

⁡vs−

βln⁡v

w+γ2

ln⁡fn

rc\ln a_p = \ln c+\alpha \ln v_s -\beta \ln v_w +\frac \ln \frac

lnap​=ln

c+αln

vs​−

βlnvw

​+2γ

​lnrc

​fn​

​ 由式可見,lnap與lnvs,lnvw,lnfn/rc成線性關係。可以採用超定方程組最小二乘進行求解其係數,同樣也可以採用線性回歸的方法求解其係數。通過matlab求解超定方程組如下:

%%

%矩陣左除法(最小二乘)

a = [ones(

size

(vs_fit)

)log

(vs_fit)

-log

(vw_fit)

log(fn_fit/rc)

/2];

b =log

(ap_fit)

;coefs_matrix = a\b %左除,相當於求inv(a)

同樣,可以基於線性回歸函式regress()對上式進行回歸,具體方法如下:

%

%%曲線擬合方法/線性回歸方法

x_curve_fit =

[ones

(size

(vs_fit)

)log

(vs_fit)

-log

(vw_fit)

log(fn_fit/rc)/2

];y_curve_fit =

log(ap_fit)

;[coefs_curve_fit, confidence_intervals, residual_error,

rint

,stats].

..=regress

(y_curve_fit, x_curve_fit)

;

上述兩種方法求得的係數一致。

matlab自帶有非線性回歸函式,基於迭代的方法求解待定係數。具體實現如下:

%

%%多元非線性回歸方法

x_regress_fit =

[vs_fit vw_fit fn_fit/rc]

;y_regress_fit = ap_fit;

my_model =

inline

('beta(1)*x_regress_fit(:,1).^beta(2)./x_regress_fit(:,1).^beta(3).*x_regress_fit(:,3).^(beta(4)/2)',.

..'beta'

,'x_regress_fit');

% 建立內聯函式,變數為beta和x_regress_fit

beta0 =

[10000

-0.1

0.91];

% 設定迭代係數初始值

[beta, r]

=nlinfit

(x_regress_fit, y_regress_fit, my_model, beta0)

;% 執行後警告雅可比矩陣為病態矩陣,且所得結果錯誤。

採用該方法時,雖然能得到相應結果,但是發現報出警告:雅可比矩陣病態,且得到的結果與實際相差很大。可見,這種方法有一定的侷限性。

最終效果如下:

matlab超定方程求解

matlab非線性回歸

RBAC模型,實現物件許可權管理(待定)

1.rbac模型包含三個部分,分別對應使用者 角色 物件 模組 1個物件可以有多種角色,如乙個人既可以是老師,也可能是作為管理員 1個角色可以有多個使用者,如1個老師角色,可以有多個使用者 這樣使用者和角色就形成了乙個多對多的關係 n m 同理角色和物件也是乙個多對多的關係 如圖所示 2.對於乙個管...

線性常係數差分方程的Matlab遞推求解

matlab訊號處理工具箱提供了filter函式,可以實現線性常係數差分方程的遞推求解,呼叫格式如下 yn filter b,a,xn,xi xi filtic b,a,ys,xs 呼叫引數xn是輸入訊號向量,b和a是差分方程 2.5.1b 的係數向量,即 k 0到n ak y n k i 0到m ...

數學建模中初等模型問題的matlab求解

問題描述 三名商人攜帶隨從乘船,一次最多過兩人,在任一岸隨從人數大於商人,則隨從殺人越貨,問商人如何安全渡河?不妨設最初在西岸 思路 可以看出這是乙個迷宮問題,但是不同於資料結構中的普通的二維的迷宮問題,此問題中需要考慮的引數還有 船在東岸還是在西岸。所以我們考慮將狀態設定為乙個三維的陣列。採用迷宮...