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

歡迎訪問 生活随笔!

生活随笔

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

循环神经网络

matlab 分式拟合,如何用matlab拟合微分方程

發布時間:2023/12/20 循环神经网络 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab 分式拟合,如何用matlab拟合微分方程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

//這里是代碼窗口,請將Forcal代碼寫在下面

i: OutVector(p:k,i)= k=FCDLen(p),printff{"\r\n"},i=0,(i

!using["XSLSF"];? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//使用命名空間XSLSF

//函數定義,用于計算微分方程組中各方程右端函數值,連分式法對微分方程組積分一步函數pbs1將調用該函數f。

//t為自變量,x為函數值,dx為右端函數值(即微分方程的值)。

//該函數被調用時將用到參數A,k,這2個參數正好是擬合參數,用模塊變量傳遞這2個參數。

f(t,x,dx::A,k)={

dx=A*x/(k+x)

};

//計算相鄰兩組實驗數據的理論值與實驗值的誤差:第一組數據作為理論值的起點,用以計算出終點處的理論值,與第二組數據代表的實驗值做比較。

//hf為函數f的句柄,預先獲得了該句柄;a為工作數值;step為積分步數;eps為積分精度;t1,t2為積分的起點和終點;

//x1是對應t1的實驗數據,即積分起始點處的函數值;x_1是對應t2的實驗數據,與積分終點處的函數值做比較。

//h,i為自動變量。

t_i_j(hf,a,step,eps,t1,t2,x1,x_1:h,i)=

{

a.setra(0,x1),? ?? ?? ?? ?? ?? ?//工作數組賦初值

h=(t2-t1)/step,? ?? ?? ?? ?? ???//計算積分步長

{? ?pbs1[hf,t1,a,h,eps],? ?? ???//pbs1是連分式法對微分方程組積分一步函數

t1=t1+h? ?? ?? ?? ?? ?? ?? ?//重新計算積分起點

}.until[abs(t1-t2)

a.getra(0,&x1),? ?? ?? ?? ?? ???//用引用方式獲得積分終點處的函數值

(x1-x_1)^2? ?? ?? ?? ?? ?? ?? ? //計算并返回理論值與實驗值差的平方和

};

//目標函數定義,自變量_A,_k為需優化的參數,需要將這些參數傳遞給對應的模塊變量A,k。

//模塊變量hf為函數f的句柄,預先獲得了該句柄;Array為工作數值;step為積分步數;eps為積分精度。

k(_A,_k::hf,Array,step,eps,A,k)={

A=_A,k=_k,? ? //將優化參數_A,_k傳遞給對應的模塊變量A,k

t_i_j(hf,Array,step,eps: 1 , 2 : 8.099469866 : 12.04826079 )+

t_i_j(hf,Array,step,eps: 2 , 3 : 12.04826079 : 17.46831287 )+

t_i_j(hf,Array,step,eps: 3 , 4 : 17.46831287 : 17.62752046 )+

t_i_j(hf,Array,step,eps: 4 , 5 : 17.62752046 : 10.35408296 )+

t_i_j(hf,Array,step,eps: 5 , 6 : 10.35408296 : 6.246065848 )+

t_i_j(hf,Array,step,eps: 6 , 7 : 6.246065848 : 5.577315848 )+

t_i_j(hf,Array,step,eps: 7 , 8 : 5.577315848 : 8.379678199 )+

t_i_j(hf,Array,step,eps: 8 , 20: 8.379678199 : 6.32249814??)

};

main(:d,u,v,x,_eps,k,xx,g,i:hf,Array,step,eps)=

{

hf=HFor("f"),? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//模塊變量hf保存函數f的句柄,預先用函數HFor獲得該句柄

Array=new[rtoi(real_s),rtoi(15)],? ?? ?? ?? ?//申請工作數組

step=20,eps=1e-6,? ?? ?? ?? ?? ?? ?? ?? ?? ? //積分步數step越大,積分精度eps越小越精確,用于對微分方程組積分一步函數pbs1

x=new[rtoi(real_s),rtoi(3)],? ?? ?? ?? ?? ???//申請工作數組

xx=new[rtoi(real_s),rtoi(2),rtoi(3)],? ?? ???//申請工作數組

g=new[rtoi(real_s),rtoi(3)],? ?? ?? ?? ?? ???//申請工作數組

_eps=1e-50, d=1,u=1.6,v=0.4,k=500,? ?? ?? ???//變換d、u、v進一步求解,k為允許的最大迭代次數:獲得的各組解差別較大

i=jsim[HFor("k"),d,u,v,x,_eps,k,xx,g],? ?? ? //求n維極值的單形調優法

printff{"\r\n實際迭代次數={1,r}\r\n",i},? ???//輸出實際迭代次數

OutVector[x],? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//輸出最優參數值及目標函數終值

delete[x],delete[xx],delete[g],delete[Array] //銷毀申請的對象

};

總結

以上是生活随笔為你收集整理的matlab 分式拟合,如何用matlab拟合微分方程的全部內容,希望文章能夠幫你解決所遇到的問題。

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