1. simulink模擬系統是模擬數字的、變步長(time step)的。這句話是什麼意思
因為從你引用的這句話可以看出,對simulink模擬其實並不熟悉。
simulink模擬其實本質就是建立一個數學模型。這個數學模型假設為y=f(x),其中,x就是模擬的現實時間t,y就是結果輸出。
simulink借用matlab的強大計算功能,對這個數學模型求解。這種求解通常是求數值解,而不是解析解。也就是說我們需要知道的是:0-t這段時間,y的數值結果,而不是y的式子。
對一個方程求解,看起來很容易,其實其中大部分都是很麻煩的,比如說微分方程,非線性方程,剛性的方程等等。數學家為了解決這些問題,發明了多種計算方程的方法,這些方法可以在solver裡面找到。
定步長和變步長是各個演算法自己的特性決定的。定步長是每隔固定的時間周期計算一次,變步長是自適應的決定計算時間點。兩者誰的效果最好其實並不一定。誰收斂,離真實波形最接近,就用誰。
對於實際系統而言,採用的是實際的時間,計算周期通常是固定的,計算方法一般是:輸入,數據處理,輸出。
控制器的參數之所以需要修改,不是因為采樣周期不同,而是因為模擬中的數學模型同現實中的實際模型存在差異。
simulink是在模擬某段時間內的系統,至於是一瞬間計算完成還是花上幾個小時取決於系統復雜程度。其時間是模擬的時間,而不是運行所花費的時間。而控制系統則是實際的時間。
2. 用simulink模擬,採用變步長,演算法ode45,最大和最小步長為auto,模擬時間10秒,但是模擬到1秒時停止不動
很簡單,改變一下模擬演算法就可以了。ode45不行,就ode23t等等,如果變步長的不行,那就換成固定步長的,直到試出一個你最滿意的演算法來。如果所有的都不行,那就是你的模擬有問題了。
3. matlab步長如何設置
1、打開MATLAB,file-new-script,進行程序編制,例如這里畫一條曲線。」clear;clc;m=1365;a=-11825/m+5.01;x=0:0.1:1.6;b=a-log10(x);y=10.^(b);p=plot(x,y,'r');」
4. 版本matlab2014a,simulink模擬步長和演算法無法設置,求問怎麼辦
一、演算法設置
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是定步長、低階求解器。
5)ode23s是基於一個2階改進的Rosenbrock公式.因為它是一個單步求解器,所以對於寬誤差容限,它比odel5s更有效.對於一些用odel5s不是很有效的剛性問題,可以用它解決。
6)ode23t是使用「自由」內插式梯形規則來實現的.如果問題是適度剛性,而且需要沒有數字阻尼的結果,可採用該求解器。
7)ode23tb是使用TR—BDF2來實現的,即基於隱式Runge—Kutta公式,其第一級是梯形規則步長和第二級是二階反向微分公式.兩級計算使用相同的迭代矩陣.與ode23s相似,對於寬誤差容限,它比odtl5s更有效。
8)discrete(變步長)是simulink在檢測到模型中沒有連續狀態時所選擇的一種求解器。
2.定步長(Flxed—Step)求解器
可以選擇的定步長求解器有:ode5,ode4,ode3,ode2,ode1和discrete。
1)ode5是ode45的一個定步長版本,基於Dormand—Prince公式。
2)ode4是RK4,基於四階Runge—Kutta公式。
3) ode3是ode23的定步長版本,基於Bogacki-Sbampine公式。
4) ode2是Heun方法,也叫作改進Euler公式。
5) odel是Euler方法。
6) discrete(定步長)是不執行積分的定步長求解器.它適用於沒有狀態的模型,以及對過零點檢測和誤差控制不重要的模型。
5. 用simulink模擬控制系統 設置的步長不同模擬結果不同 為什麼
這個主要是根據你設定的演算法而決定的。在很多積分環節中,如果設定的步長越大,造成的誤差就越大,所以一般來說步長設置的越小,計算結果越精確,但是這樣會帶來模擬時間增大的問題,因此一般在滿足計算精度的前提下盡可能的採用較大的計算步長。另外可以推薦使用變步長計算來比較模擬結果。
6. Simulink模擬問題
stiff solver:剛性演算法。
對於初學者來說,用不著分清演算法的區別,只需要挨著試一下演算法,看看誰的效果好就用誰的。
在菜單欄Simulation-Model Configuration Parameters-Solver對話框裡面的Solver options
可以選擇固定步長和變步長演算法,後面的是演算法類型,下面的是演算法步長。
7. matlab simulink 系統模擬步長假如想設置為0.001s,該怎麼設置
在模型的,,上面點Simulation標簽,,,
然後點擊Configuration Parameters...選項。。
就進入了Solver設置了:在Type種可以選擇定步長演算法和變步長演算法
Fixed-step是定步長。。裡面的Fixed-step size就是步長的設置。。
Variable-step是變步長,裡面只有最大步長和最小步長設置。。
8. simulink中的預設步長是什麼它和定步長、變步長是什麼關系請各位大神指點。。。
預設步長是模擬時間間隔的1/50,它是步長被設為auto時使用的值。
定步長演算法使用固定的步長大小,一種情況下直接指定具體的數值,另一種情況下,如果步長設為auto,就會用預設步長。
變步長演算法的啟動步長為預設步長,如果Max
step
size設為auto,也會使用預設步長。
Simulink模型常見的警告「最大步長為0.2秒」,那就是因為,默認的演算法為變步長演算法,模擬時間間隔為10秒,其1/50為0.2秒,盡管多數情況下通過步長控制機制能夠得到正確結果,但有些情況下可能會有問題(典型的例子是,模型只有一個簡單的Sine
wave和Scope模塊,而正弦的頻率為100*pi),所以通過警告的方式提醒用戶加以注意。
9. 為什麼simulink模擬 定步長與變步長結果不一樣
這個就是計算機演算法的問題了。舉個例子,比如說對一個曲線積分,在曲線變化率較大的地方,計算步長適當縮小,這樣可以帶來較精確的積分值,如果曲線變化率較大的地方,計算步長比較大,那麼造成這段積分偏離真實值比較遠。此外還有截斷誤差等等,具體的你可以參考書籍:數值分析。
如果不一樣,你可以選擇比較合適的結果作為你的最終結果,一般來說,只要不是計算發散了,兩者結果都差不太多。