• <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>

    matlab中怎么使用微分方程

    這個例子展示了如何用MATLAB建立和求解三種不同類型的微分方程。MATLAB提供了幾種數值算法來求解各種各樣的微分方程。

    東西/原料

    • matlab軟件
    • 電腦

    方式/步調

    1. 1

      初值問題

      范德波德莫是界說范德波爾方程的函數。

      type vanderpoldemo

    2. 2

      按“Enter”鍵。

      如圖1所示。

    3. 3

      方程被寫當作一個二階一階賦格。對于參數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')

    4. 4

      按“Enter”鍵。

      得圖2所示。

    5. 5

      對于較大的μ量級,問題變得棘手。快速積分需要特別的數值方式。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')

    6. 6

      按“Enter”鍵。

      得圖3所示。

    7. 7

      邊值問題

      Bvp4C求解常微分方程邊值問題。

      示例函數TWOODE有一個微分方程,它被寫當作二階一階ODEs系統。

      type twoode

    8. 8

      TWOBC的鴻溝前提。

      type twobc

    9. 9

      在利用Bvp4C之前,我們必需為我們想要在網格上暗示的解決方案供給一個猜測。然后求解器調整網格以細化解決方案。

      BVPINIT以求解器Bvp4C所需的形式調集了最初的猜測。對于初始網格[0 1 2 3 4]和常量猜測的y(x)=1,y'(x)=0,像這樣挪用BVPINIT:

      solinit = bvpinit([0 1 2 3 4],[1; 0]);

    10. 10

      有了這個初步的猜想,我們就可以解決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

    11. 11

      按“Enter”鍵。

      得圖4所示。

    12. 12

      這個特別的邊值問題正好有兩個解。獲得的另一個解是對

       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

    13. 13

      按“Enter”鍵。

      得圖5所示。

    14. 14

      偏微分方程

      PDEPE在一個空間變量和時候內求解偏微分方程。

      示例PDex1、PDex2、PDex3,PDex4,PDex5形當作了一個關于利用PDEPE的小型教程。瀏覽這些函數以獲取更多示例。

      此示例問題利用了函數PDex1Pde、PDex1IC和PDex1BC。

      PDex1Pde界說微分方程。

      type pdex1pde

    15. 15

      PDex1IC設置初始前提。

      type pdex1ic

    16. 16

      PDex1BC設置鴻溝前提。

      type pdex1bc

    17. 17

      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');

    18. 18

      按“Enter”鍵。

      得圖6所示。

      END
    原作者:matlabj教程舉報
    • 發表于 2020-02-13 20:00
    • 閱讀 ( 1230 )
    • 分類:其他類型

    0 條評論

    請先 登錄 后評論
    admin
    admin

    0 篇文章

    作家榜 ?

    1. xiaonan123 189 文章
    2. 湯依妹兒 97 文章
    3. luogf229 46 文章
    4. jy02406749 45 文章
    5. 小凡 34 文章
    6. Daisy萌 32 文章
    7. 我的QQ3117863681 24 文章
    8. 華志健 23 文章

    聯系我們:uytrv@hotmail.com 問答工具
  • <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>
    久久久久精品国产麻豆