matlab裡ode45命令用4階龍格-庫塔解一階微分方程(常係數/變係數)都能解。
首先把微分方程化為dx/dt = f(x)的標準形式寫成函式放在乙個檔案裡,再寫主程式用ode45呼叫這個檔案。舉例如下:
函式檔案:方程的定義(一定要用函式名命名)
% di/dt = l-1u - l-1(wl+r)i
function iprime = hw11_2(t,i)
l = [.0072, 0, 0, .1, .0054, 0;
0, .007, 0, 0, 0, .0026;
0, 0, .001, 0, 0, 0;
1.5*.1, 0, 0, 2.5, .125, 0;
1.5*.0054, 0, 0, .125, .0068, 0;
0, 1.5*.0026, 0, 0, 0, .0016];
w = zeros(6,6);
w(1,2) = -100*pi;
w(2,1) = 100*pi;
r = diag([.002,.002,.002,.4,.015,.015]);
u = zeros(6,1);
u(4) = 400;
iprime = l\u - l\(w*l+r)*i;
主程式檔案:呼叫ode45
% solve function hw11_2
theta0 = 0;
h = 1e-3; % step
i0 = zeros(1,6);
i0(4) = 400/.4;
ts = 0:h:1; % time span
[t,i] = ode45('hw11_2',ts,i0); % solve
thetaa = 100*pi*ts + theta0;
thetab = thetaa - pi/3*2;
thetac = thetaa + pi/3*2;
n = length(ts);
ia = zeros(n,1);
ib = zeros(n,1);
ic = zeros(n,1);
% inverse park transform
for j = 1:n
tt = ts(j);
thetaa = 100*pi*tt + theta0;
thetab = thetaa - 2*pi/3;
thetac = thetaa + 2*pi/3;
ia(j) = cos(thetaa)*i(j,1) - sin(thetaa)*i(j,2) + i(j,3);
ib(j) = cos(thetab)*i(j,1) - sin(thetab)*i(j,2) + i(j,3);
ic(j) = cos(thetac)*i(j,1) - sin(thetac)*i(j,2) + i(j,3);
endfigure(1);
plot(ts,ia,'y',ts,ib,'g',ts,ic,'r');
title(['three phase short circuit (\theta_0 = ',num2str(theta0),')']);
xlabel('t/s');ylabel('i/a');
legend('i_a','i_b','i_c');
absia = abs(ia);
[iamax,jamax] = max(absia);
tamax = ts(jamax);
一階微分方程
傳送門 直接解得 g y dy f x dx 設g y 及f x 的原函式依次為g y 及f x 則g y f x c為微分方程的隱式通解 2.齊次方程解法 一般形式 dy dx y x 令u y x則y xu,dy dx u xdu dx,所以u xdu dx u 即du u u dx x 兩端積...
matlab解微分方程
1.dsolve函式 這是最簡單的一種求解微分方程的一種方法 符號解法。一般來說,在matlab中解常微分方程有兩種方法,一種是符號解法,另一種是數值解法。在本科階段的微分數學題,基本上可以通過符號解法解決。用matlab解決常微分問題的符號解法的關鍵命令是dslove命令。該命令中可以用d表示微分...
Matlab求微分方程de符號解
1.dsolve 函式 在求通解問題 syms y x y dsolve x 2 y x 2 y diff y 0 這裡插入 片 syms y x 定義符號變數 dy diff y 一階導數 d2y diff y,2 二階導數,用於初值或邊值條件的賦值 y dsolve diff y,3 diff ...