這裡以三元二次常微分方程組做乙個例子,更多元更高次的都類似。
比如下列方程組:
x'' = x' - x + y' -z'
y'' = y' - y - x'
z'' = z' - z + x'
matlab**如下:
main.m:
clear all;testfun.m:close all;
clc;
[t,x]=ode45('
testfun
',[0:0.1:5],[1
1 -1
10.5
0]); %[0:0.1:5]是t的範圍,[1 1 -1 1 0.5 0]是[x(0) y(0) z(0) x'(0) y'(0) z'(0)]
plot(t,x(:,1))
grid on;
function dx=testfun(t,x) dx=[x(4); %x'結果如下:x(5); %y'
x(6); %z'
x(4)-x(1)+x(5)-x(6); %x''
x(5)-x(2)-x(4); %y''
x(6)-x(3)+x(4)]; %z''
同樣的,可以用simulink來解方程組,系統圖如下:
結果如下:
結果是完全一致的。
matlab練習程式(常微分方程組向量場)
過去有畫過常微分方程的向量場,通過向量場能夠很形象的看出方程解的狀態。這裡用matlab也實現一下,同時對三維情況也做了乙個實現。繪製的方法就是計算方程在二維或三維某個點的方向,然後把方向歸一化,畫出歸一化的向量即可。二維微分方程組如下 三維微分方程組如下 matlab 如下 二維情況 clear ...
matlab練習程式(線性常微分方程組引數擬合)
比如我們已經有了微分方程模型和相關資料,如何求模型的引數。這裡以seir模型為例子,seir模型可以參考之前的文章。一般的線性方程我們可以用最小二乘來解,一般的非線性方程我們可以用lm來解。這裡是線性微分方程組,所以我們採用最小二乘來解。關鍵是構造出最小二乘形式,微分可以通過前後資料差分的方法來求。...
MATLAB學習筆記 常微分方程的數值解
常微分方程數值求解的命令 求常微分方程的數值解,matlab的命令格式為 t,y solver odefun tspan,y0,options 其中solver選擇ode45等函式名,odefun為根據待解方程或方程組編寫的m檔名,tspan為自變數的區間 t0,tf 即準備在那個區間上求解,y0表...