
發布
注冊
/
登錄ode45
關注創建者:SimPC 創建時間:2022-10-14
ode45的視頻教程
MATLAB/ADAMS求解動力學
CASE1 采用ode45求解動力學方程 adams后處理及數據導出 MATLAB數據導入 提供matlab文獻繪圖模板 CASE2 四桿機構運動學基礎 采用simulink求解運動學方程、求解機構鉸鏈約束內力 SIMULINK——ADAMS聯合仿真過程及注意事項 CASE3 (曲柄滑塊)拉格朗日動力學構建方法 采用simulink
¥25 2小時54分鐘 1029播放
查看
Matlab求解常微分方程/偏微分方程/復雜邊值問題
本專題視頻是關于Matlab求解微分方程、偏微分方程、復雜邊界值問題的微分方程、橢圓形微分方程、雙曲線型微分方程、拋物線型微分方程、ode45、bvp4c、pdepe等內容!實際課程數不局限于7節課,會一直更新,把我科研過程中遇到的比較特殊有意思的微分方程求解案例做成課程分享給大家,而且包含所有案例的matlab源文件,方便大家下載學習!!!
¥59 1小時50分鐘 154播放
查看
ode45的實例教程
一、算法設置
1.變步長(Variable—Step)求解器
可以選擇的變步長求解器有:ode45,ode23,ode113,odel5s,ode23s和discret.缺省情況下,具有狀態的系統用的是ode45;沒有狀態的系統用的是discrete。
1)ode45基于顯式Runge—Kutta(4,5)公式,Dormand—Prince對.它是—個單步求解器(solver)。也就是說它在計算y(tn)時,僅僅利用前一步的計算結果y(tn-1).對于大多數問題.在第一次仿真時、可用ode45試一下。
2)ode23是基于顯式Runge—Kutta(2,3).Bogackt和Shampine對.對于寬誤差容限和存在輕微剛性的系統、它比ode45更有效一些.ode23也是單步求解器。
3)odell3是變階Adams-Bashforth—Moulton PECE求解器.在誤差容限比較嚴時,它比ode45更有效.odell3是一個多步求解器,即為了計算當前的結果y(tn),不僅要知道前一步結果y(tn-1),還要知道前幾步的結果y(tn-2),y(tn-3),…;
4)odel5s是基于數值微分公式(NDFs)的變階求解器.它與后向微分公式BDFs(也叫Gear方法)有聯系.但比它更有效.ode15s是一個多步求解器,如果認為一個問題是剛性的,或者在用ode45s時仿真失敗或不夠有效時,可以試試odel5s。 odel5s是基于一到五階的NDF公式的求解器.盡管公式的階數越高結果越精確,但穩定性會差一些.如果模型是剛性的,并且要求有比較好的穩定性,應將最大的階數減小到2.選擇odel5s求解器時,對話框中會顯示這一參數. 可以用ode23求解器代替。del5s,ode23是定步長、低階求解器。
展開 'r','s','flag','m','n','h');
s_end=5;
sp=1;
rsa=0.1;
rsb=1;
d=1;
[r1,s1]=ode45(fun,[eps,R],[rsa;0],[],m,n,h);
[r2,s2]=ode45(fun,[eps,R],[rsb;0],[],m,n,h);
figure;
subplot(121);
plot(r1,s1(:,1));hold on;
plot(r2,s2(:,1),'r');
legend('for rsa','for rsb',0);
xlim([0,R]);
tg=title(['rsa=',num2str(rsa),', rsb=',num2str(rsb)]);
subplot(122);
pa=plot(r1,s1(:,1));hold on;
pb=plot(r2,s2(:,1),'r');
pc=plot(r2,s2(:,1)*0.6,'k');
legend('for rsa','for rsb',0);
xlim([0,R]);
tg=title(['rsa=',num2str(rsa),', rsb=',num2str(rsb)]);
while abs(s1(end,1)-s2(end,1))>1e-4; % 控制精度
[r1,s1]=ode45(fun,[eps,R],[rsa;0],[],m,n,h);
[r2,s2]=ode45(fun,[eps,R],[rsb;0],[],m,n,h);
rs=[rsa+rsb]/2;
[r,s]=ode45(fun,[eps,R],[rs;0],[],m,n,h);
if s(end,1)>5; % 二分法部分
rsb=rs;
else
rsa=rs;
展開 4、ABS的數學模型
防抱死制動系統的車輪轉速Simulink框圖:
整體系統框圖:
5、仿真實例
車輛初始速度:??0= 88????/??;
車輪半徑:???? = 1.25????;
車輛質量:?? = 50;
最大制動扭矩:????=1500??????*????;
液壓滯后:????=0.01 ??;
轉動慣量:????= 5????4
其中,
求解器選擇:
ode45
Solve nonstiff differential equations —medium order method
Syntax
[t,y] = ode45(odefun,tspan,y0)
[t,y] = ode45(odefun,tspan,y0,options)
[t,y,te,ye,ie] =ode45(odefun,tspan,y0,options)
sol = ode45(___)
數據檢查器選擇:
仿真結果:
模型自取:
鏈接:https://pan.baidu.com/s/17DdK3_UO1HefVRVakyh1bg
提取碼:j78t
展開 ,'markersize',1);end
二、MATLAB函數ode45對duffing方程進行數值求解,生成相平面圖和poincaré 截面圖
deq=@(t,x)[x(2);x(1)-0.3*x(2)-(x(1))^3+0.37*cos(1.25*t)]; options=odeset('RelTol',1e-4,'AbsTol',1e-4);
[t,xx]=ode45(deq,[0 200],[1,0],options);
plot(xx(:,1),xx(:,2),'k-','linewidth',1.5);
fsize=15;
axis([-2 2 -2 2])
xlabel('x','Fontsize',fsize);
ylabel('y','Fontsize',fsize);
title('diffing,Gamma=0.37')
clear Gamma=0.37;
deq=@(t,x)[x(2);x(1)-0.3*x(2)-(x(1))^3+Gamma*cos(1.25*t)]; options=odeset('RelTol',1e-4,'AbsTol',1e-4); [t,xx]=ode45(deq,0:(2/1.25)*pi:(4000/1.25)*pi,[1,0]); plot(xx(:,1),'.'
展開 3.代碼分析
3.1 解微分方程基本知識
微分方程分為常微分方程(ODE)與偏微分方程(PDE),簡單來說系數為常數的為ODE,而系數為變量的為PDE。目前Matlab提供了多種解微分方程的結算器,如ode113、ode15i、ode23s、ode3t等,以后有機會將系統的闡述各種算法的差異以及其各種擅長的領域,現在只需要記住,一般默認ode45算法即可,Matlab公司的建議是,如果不清楚系統的具體情況,建議先選擇ode45。常微分解法器的輸入輸出格式有:
[t,Y] = solver(odefun,tspan,y0);
[t,Y] = solver(odefun,tspan,y0,options);
[t,Y,TE,YE,IE] = solver(odefun,tspan,y0,options);
上述指令的“solver”所指的就是ode45、ode45, ode23, ode113, ode15s, ode23s, ode23t, or ode23tb等,其他參數的含義介紹如下:
a) odefun 用以計算微分程右邊的函數,所有解法器處理的系統方程形式均是y’=dydt=f(t,y)的形式,通常可由odefile模板改寫而成;
b) tspan 為積分區間的向量[t0,tf],解法器設定初值在tspan(1),然后由tspan(1)積分至tspan(end)。如果需要得到特定時間所對應的解,可以用tspan[t0,t1,…,tf]的形式。
展開 
ode45的相關專題、標簽、搜索
ode45的最新內容
c0H8QB9SPnEicQStxFtr7GQDoDO23e/XGym8KyE9x2s/0AO9knwR5PH7cele5tdPSTHz8u2CL6+o0jrjKL1qSQO9spJPn5/oCe7X9da436SqjRHwj1JPr969sGHnCYB11ttN5Pr03NsbKLyqA0otFwfupIB8jnx8n9j/AK+mzRW/CZImxufSLjzt8pwQeWCdD5f1HeL6Wtrj7VeLikla4SgobPd3p45
,'markersize',1);end
二、MATLAB函數ode45對duffing方程進行數值求解,生成相平面圖和poincaré 截面圖
deq=@(t,x)[x(2);x(1)-0.3*x(2)-(x(1))^3+0.37*cos(1.25*t)]; options=odeset('RelTol',1e-4,'AbsTol',1e-4);
[t,xx]=ode45
前面講過當我們處理一個常微分方程組(一般對應于一個物理系統的求解)的時候,可以直接采用matlab中的ode函數比如ode15s和ode45,python的scipy中也有對應的函數像odeint和odebvp。
Solve nonstiff differential equations —medium order method
Syntax
[t,y] = ode45(odefun,tspan,y0)
[t,y] = ode45(odefun,tspan,y0,options)
[t,y,te,ye,ie] =ode45(odefun,tspan,y0,options)
sol =
分析數據以及遞交結果都在一個文檔中進行,無需使用多個應用程序
Wolfram 特有技術
高度優化了的超級函數分析方程,自動選擇正確的算法,以便快速得出準確結果 —— 有時為了進一步優化的需要,中途改變算法
其他計算系統要求用戶手動分析自己的方程,來確定要應用哪一個函數——例如,在 Mathematica 中您只需要使用 NDSolve 的地方,在 Matlab 中您必須要從 ode45
目前Matlab提供了多種解微分方程的結算器,如ode113、ode15i、ode23s、ode3t等,以后有機會將系統的闡述各種算法的差異以及其各種擅長的領域,現在只需要記住,一般默認ode45算法即可,Matlab公司的建議是,如果不清楚系統的具體情況,建議先選擇ode45。
%%以下是主函數,當主函數1與子函數1,2,3在同一目錄下,運行主
%%函數即可
h0=50;
k=60;
m1=20;m2=50;
tstart=0;
tfinal=1000;
y0=[h0;0;0;0];
tout=tstart;
yout=y0';
options=odeset('Events','on');
for i=1:25
[t,y,event]=ode45
一、算法設置
1.變步長(Variable—Step)求解器
可以選擇的變步長求解器有:ode45,ode23,ode113,odel5s,ode23s和discret.缺省情況下,具有狀態的系統用的是ode45;沒有狀態的系統用的是discrete。
舉個例子,若為一剛性系統,即便我的程序選用了ode15s而默認為ode45,本次仿真確實用了ode15s解,仍然會報警說應該用剛性解法。不過對于剛性系統,ode45可不好使,因此從仿真效果上可以認定我們設定的剛性解法奏效了。大家不要被表面現象迷惑。
注意,要將仿真模塊放到matlab訪問的目錄下
希望能給大家帶來幫助。
246012-SimulinkVC.rar
*sin(3*t)
%定義仿真時間和采樣點數
t=0:0.01:100;
%對結果進行fft變換
u1=eval(x(1));
u2=eval(x(2));
u3=eval(x(3));(省去后面的畫圖和FFt變換部分),
下面是調用ode45函數的代碼
%test4.m
function f=test4(t,y);
m1=1;m2=1;m3=2;k=1;
U=[0 1 0 0 0 0;
-