matlab練習程式(高階常微分方程組數值解)

2022-06-08 18:39:07 字數 994 閱讀 3620

這裡以三元二次常微分方程組做乙個例子,更多元更高次的都類似。

比如下列方程組:

x'' = x' - x + y' -z'

y'' = y' - y - x'

z'' = z' - z + x'

matlab**如下:

main.m:

clear all;

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;

testfun.m:

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表...