| 5 | 1/1 | 返回列表 |
| 查看: 2230 | 回復(fù): 6 | ||
| 【懸賞金幣】回答本帖問(wèn)題,作者ckm0811將贈(zèng)送您 10 個(gè)金幣 | ||
| 當(dāng)前只顯示滿足指定條件的回帖,點(diǎn)擊這里查看本話題的所有回帖 | ||
ckm0811新蟲 (初入文壇)
|
[求助]
微分方程與代數(shù)方程聯(lián)立,參數(shù)擬合問(wèn)題求助 已有1人參與
|
|
|
根據(jù)以下二式,利用最小二乘法擬合參數(shù)a,b,c,從而得到關(guān)于P的模型。 ① P=a*[(lamb/x)^b/lamb-1/lamb*(x/lamb)^(0.5b)] ② dx/dt=(1/3/c)*a*[(lamb/x)^b-(x/lamb)^(0.5b)] 其中a,b,c為待求參數(shù)。試驗(yàn)數(shù)據(jù)lamb和P已知,其中l(wèi)amb范圍為[0.91,1]。x為中間變量。 目前不知該用什么函數(shù)實(shí)現(xiàn)上述目的,想請(qǐng)大家提供一些思路。 已寫程序如下,中間一段代碼思路應(yīng)該有問(wèn)題,但不知如何改正 clear,clc close all format long; lamb=[1;0.995;0.99;0.985;0.98;0.975;0.97;0.965;0.96;0.955;0.95;0.945;0.94;0.935;0.93;0.925;0.92;0.915;0.91] %試驗(yàn)值lamb p=[0;-0.0166845;-0.0293383;-0.0433058;-0.0591614;-0.0761656;-0.0933141;-0.1099259;-0.1258601;-0.1414556;-0.1572909;-0.1738675;-0.1913200;-0.2092681;-0.2269212;-0.243560;-0.2595227;-0.2778129;-0.3064931]; %試驗(yàn)數(shù)據(jù)P %fac為未知數(shù)向量,其中元素fac(1)=a,fac(2)=b,fac(3)=c %lambv即中間變量x fun=@(fac,lamb,lambv)(fac(1)*((lamb./lambv)^fac(2)./lamb-(lambv./lamb).^(fac(2)*0.5)./lamb)); odefun=@(fac,lamb,lambv)(1/3/fac(3)*(fac(1)*((lamb./lambv)^fac(2)-(lambv./lamb)^(0.5*fac(2))))); tspan=[0.9,1]; lambv0=1; [fac,lambv]=ode45(odefun,tspan,lambv0,[]); fac0=[0.5 0.15 1]; %a,b,c初值 %最小二乘法擬合abc coefind=fminsearch(@(fac)((sum(p(:,1)-fun(fac,lamb,lambv)))^2),coeffia0,optimset('MaxFunEvals',1e10,'MaxIter',1e6)); %擬合后的理論模型 p_model=coefind(1)*((lamb./lambv)^b./lamb-1/lamb*(lambv./lamb)^(0.5b)) err1=100*(p-p_model)/p figure('color',[1 1 1]) plot(lamb,p,'-o'); hold on plot(lamb,p_model,'--'); xlabel('主伸長(zhǎng)率λ','fontsize',10); ylabel('名義應(yīng)力P1(Mpa)','fontsize',10); |
新蟲 (初入文壇)
版主 (知名作家)
|
一種方法是直接用哦的 ode15i 函數(shù)求解微分代數(shù)方程,然后用 非線性擬合函數(shù) 如lsqnonlin求解參數(shù) 第二種方法,將代數(shù)方程求導(dǎo)轉(zhuǎn)化為 微分方程,然后擬合微分方程組參數(shù) 發(fā)自小木蟲Android客戶端 |

新蟲 (初入文壇)
|
您好,我嘗試了用ode15i求解,將中間部分的程序改成為下面所示,出現(xiàn)了報(bào)錯(cuò)。用ode15i求解式2時(shí),里面的系數(shù)abc是未知的,這樣可以求解出來(lái)嗎,感覺(jué)自己還是不太明白該怎么做。您空閑時(shí)可以幫忙看一下程序指點(diǎn)一下嗎 fun=@(fac,lamb,lambv)(fac(1)*((lamb./lambv)^fac(2)./lamb-(lambv./lamb).^(fac(2)*0.5)./lamb)); odefun=@(lambv,xp,fac,lamb)(xp-(1/3/fac(3))*(fac(1)*((lamb./lambv)^fac(2)-(lambv./lamb)^(0.5*fac(2))))); tspan=lamb'; lambv0=1; xp0=0; [t,lambv]=ode15i(odefun,tspan,lambv0,xp0); 報(bào)錯(cuò): 索引超出數(shù)組元素的數(shù)目(1)。 出錯(cuò) netBmodel2>@(lambv,xp,fac,lamb)(xp-(1/3/fac(3))*(fac(1)*((lamb./lambv)^fac(2)-(lambv./lamb)^(0.5*fac(2))))) 出錯(cuò) odearguments (line 90) f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0. 出錯(cuò) ode15i (line 118) odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, ... 出錯(cuò) netBmodel2 (line 22) [t,lambv]=ode15i(odefun,tspan,lambv0,xp0); |
版主 (知名作家)

| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|