Praktická cvičení z Numerické matematiky

Počáteční (Cauchyova) úloha pro ODR - 6. týden

  • Explicitní Eulerova metoda pro lin. ODR 2. řádu
  • y  ' ' + y = t exp(-t),     y(0) = 1, y '(0) = 0
    Iterace v jednotlivych casech ukladame jako sloupecky matice X.
    X  = [  1 ; 0 ];
    T  = 1; 
    n  = 800;
    dt = T / n; tt = 0:dt:T; 
    i = 1;
    % opakujeme
    fX = [  X(2,i) ; -X(1,i) + tt(i) * exp(-tt(i)) ]; 
    X(:, i+1) = X(:, i) + dt * fX;
    i  = i + 1;
    
  • Explicitní Eulerova metoda pro soustavu ODR
  • A  = [ -0.2  10;  -10  -0.05];   X  = [  2 ; 0 ];
    T  = 4; 
    n  = 800;
    dt = T / n;
    for i = 1:n, X(:,i+1) = X(:,i) + dt * A * X(:,i), end
    
  • Graf řešení, fázová trajektorie
  • tt = 0:dt:T;
    plot(tt, X(1,:));
    
    plot(X(1,:), X(2,:));
    
  • Implicitní Eulerova metoda pro lineární ODR
  • A  = [ -0.2  10;  -10  -0.05];   X  = [  2 ; 0 ];
    T  = 4; 
    n  = 800;
    dt = T / n; B = eye(size(A,1)) - dt * A; 
    for i = 1:n, X(:,i+1) = B \ X(:,i), end
    
  • Collatzova metoda pro soustavu ODR
  • A  = [ -0.2  10;  -10  -0.05];   X  = [  2 ; 0 ];
    T  = 4; 
    n  = 800;
    dt = T / n;
    % opakujeme postupne pro i = 1:n
    i = 1;
    k1 = A * X(:,i);
    Xpom = X(:,i) + dt / 2 * k1;
    k2 = A * Xpom;
    X(:, i+1) = X(:,i) + dt * k2;