初值問題
范德波德莫是界說范德波爾方程的函數。
type vanderpoldemo
按“Enter”鍵。
如圖1所示。
方程被寫當作一個二階一階賦格。對于參數Mu的分歧值,對它們進行計較。為了加速積分速度,我們按照參數μ的值來選擇合適的求解器。
對于μ=1,肆意一個MATLAB的ODE解算器都能有用地求解范德波爾方程。下面利用的ODE45求解器就是這樣一個例子。方程在[0,20]域內求解。
tspan = [0, 20];
y0 = [2; 0];
Mu = 1;
ode = @(t,y) vanderpoldemo(t,y,Mu);
[t,y] = ode45(ode, tspan, y0);
% Plot of the solution
plot(t,y(:,1))
xlabel('t')
ylabel('solution y')
title('van der Pol Equation, \mu = 1')
按“Enter”鍵。
得圖2所示。
對于較大的μ量級,問題變得棘手。快速積分需要特別的數值方式。ODe15S、ODe23S、ODe23T和ODe23Tb能有用地解決剛性問題。
這里是一個解決范德波爾方程的μ=1000利用ODe15S。
tspan = [0, 3000];
y0 = [2; 0];
Mu = 1000;
ode = @(t,y) vanderpoldemo(t,y,Mu);
[t,y] = ode15s(ode, tspan, y0);
plot(t,y(:,1))
title('van der Pol Equation, \mu = 1000')
axis([0 3000 -3 3])
xlabel('t')
ylabel('solution y')
按“Enter”鍵。
得圖3所示。
邊值問題
Bvp4C求解常微分方程邊值問題。
示例函數TWOODE有一個微分方程,它被寫當作二階一階ODEs系統。
type twoode
TWOBC的鴻溝前提。
type twobc
在利用Bvp4C之前,我們必需為我們想要在網格上暗示的解決方案供給一個猜測。然后求解器調整網格以細化解決方案。
BVPINIT以求解器Bvp4C所需的形式調集了最初的猜測。對于初始網格[0 1 2 3 4]和常量猜測的y(x)=1,y'(x)=0,像這樣挪用BVPINIT:
solinit = bvpinit([0 1 2 3 4],[1; 0]);
有了這個初步的猜想,我們就可以解決Bvp4C的問題。
溶液溶膠(如下圖),然后用DEVAL計較并繪制。
sol = bvp4c(@twoode, @twobc, solinit);
xint = linspace(0, 4, 50);
yint = deval(sol, xint);
plot(xint, yint(1,:),'b');
xlabel('x')
ylabel('solution y')
hold on
按“Enter”鍵。
得圖4所示。
這個特別的邊值問題正好有兩個解。獲得的另一個解是對
y(x) = -1, y'(x) = 0
像以前一樣繪圖。
solinit = bvpinit([0 1 2 3 4],[-1; 0]);
sol = bvp4c(@twoode,@twobc,solinit);
xint = linspace(0,4,50);
yint = deval(sol,xint);
plot(xint,yint(1,:),'r');
hold off
按“Enter”鍵。
得圖5所示。
偏微分方程
PDEPE在一個空間變量和時候內求解偏微分方程。
示例PDex1、PDex2、PDex3,PDex4,PDex5形當作了一個關于利用PDEPE的小型教程。瀏覽這些函數以獲取更多示例。
此示例問題利用了函數PDex1Pde、PDex1IC和PDex1BC。
PDex1Pde界說微分方程。
type pdex1pde
PDex1IC設置初始前提。
type pdex1ic
PDex1BC設置鴻溝前提。
type pdex1bc
PDEPE需要x(空間離散化)和t(但愿獲得解決方案快照的時候矢量)。我們利用20個節點的網格來解決這個問題,并在5個t值處請求解決方案。最后,我們提取并繪制溶液的第一組分。
x = linspace(0,1,20);
t = [0 0.5 1 1.5 2];
sol = pdepe(0,@pdex1pde,@pdex1ic,@pdex1bc,x,t);
u1 = sol(:,:,1);
surf(x,t,u1);
xlabel('x');
ylabel('t');
zlabel('u');
按“Enter”鍵。
得圖6所示。
END0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!