日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab数值很小出错,求大神帮忙解决一下,用MATLAB求解动力学数据总是出错~ - 计算模拟 - 小木虫 - 学术 科研 互动社区...

發布時間:2023/12/20 循环神经网络 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab数值很小出错,求大神帮忙解决一下,用MATLAB求解动力学数据总是出错~ - 计算模拟 - 小木虫 - 学术 科研 互动社区... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CODE:

function KineticsEst5 % 動力學ODE方程模型的參數估計

%

%

%

% The variables y here are y(1)=xB, y(2)=xoNB, y(3)=xmNB,y(4)=xpNB,y(5)=xDNB .

clear all

clc

k0 = [5 5 5 5 5]; % 參數初值

lb = [0 0 0 0 0]; % 參數下限

ub = [+inf +inf +inf +inf +inf]; % 參數上限

x0 = [0 0 0 0 0 0];

KineticsData;

yexp = ExpData(:,2:6); % yexp: 實驗數據[x1 x4 x5 x6]

% 使用函數fmincon()進行參數估計

[k,fval,flag] = fmincon(@ObjFunc4Fmincon,k0,[],[],[],[],lb,ub,[],[],x0,yexp);

fprintf('\n使用函數fmincon()估計得到的參數值為:\n')

fprintf('\tk1 = %.4f\n',k(1))

fprintf('\tk2 = %.4f\n',k(2))

fprintf('\tk3 = %.4f\n',k(3))

fprintf('\tk4 = %.4f\n',k(4))

fprintf('\tk5 = %.4f\n',k(5))

fprintf(' The sum of the squares is: %.1e\n\n',fval)

k_fmincon = k;

% 使用函數lsqnonlin()進行參數估計

[k,resnorm,residual,exitflag,output,lambda,jacobian] = ...

lsqnonlin(@ObjFunc4LNL,k0,lb,ub,[],x0,yexp);

ci = nlparci(k,residual,jacobian);

fprintf('\n\n使用函數lsqnonlin()估計得到的參數值為:\n')

Output

% 以函數fmincon()估計得到的結果為初值,使用函數lsqnonlin()進行參數估計

k0 = k_fmincon;

[k,resnorm,residual,exitflag,output,lambda,jacobian] = ...

lsqnonlin(@ObjFunc4LNL,k0,lb,ub,[],x0,yexp);

ci = nlparci(k,residual,jacobian);

fprintf('\n\n以fmincon()的結果為初值,使用函數lsqnonlin()估計得到的參數值為:\n')

Output

% ------------------------------------------------------------------

function f = ObjFunc4Fmincon(k,x0,yexp)

tspan = [0.00 : 5.03 : 15.09];

[t x] = ode45(@KineticEqs,tspan,x0,[],k);

y(:,1) = x(:,1);

y(:,2:4) = x(:,4:6);

f = sum((y(:,1)-yexp(:,1)).^2) + sum((y(:,2)-yexp(:,2)).^2) ...

+ sum((y(:,3)-yexp(:,3)).^2) + sum((y(:,4)-yexp(:,4)).^2);

% ------------------------------------------------------------------

function f = ObjFunc4LNL(k,x0,yexp)

tspan = [0.00 : 5.03 : 15.09];

[t x] = ode45(@KineticEqs,tspan,x0,[],k);

y(:,1) = x(:,1);

y(:,2:4) = x(:,4:6);

f1 = y(:,1) - yexp(:,1);

f2 = y(:,2) - yexp(:,2);

f3 = y(:,3) - yexp(:,3);

f4 = y(:,4) - yexp(:,4);

f = [f1; f2; f3; f4];

% ------------------------------------------------------------------

function dxdt = KineticEqs(t,x,k)

M=1.003;

dxdt = ...

[ ( (k(1)+k(2)+k(3))*(1-x(1))*M*(1-x(2)-x(3)-x(4)-2*x(5)) )

( M*(1-x(2)-x(3)-x(4)-2*x(5))*(k(1)*(1-x(1))-k(4)*x(2)) )

( k(2)*(1-x(1))*M*(1-x(2)-x(3)-x(4)-2*x(5)) )

( M*(1-x(2)-x(3)-x(4)-2*x(5))*(k(3)*(1-x(1))-k(5)*x(4)) )

( M*(1-x(2)-x(3)-x(4)-2*x(5))*(k(4)*x(2)+k(5)*x(4)) )

];

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的matlab数值很小出错,求大神帮忙解决一下,用MATLAB求解动力学数据总是出错~ - 计算模拟 - 小木虫 - 学术 科研 互动社区...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。