CompMath-Vorlesung 22.10.2021

Matrizen: Operationen, Loesen von Gleichungssystemen, spezielle Funktionen

Contents

Elementweise Operationen +, -, .*, ./, .\, .^

close all; clc; clear;

 disp('elementweise Operationen')
 x = 1:2:9;   % 1 x 5  Matrix  (Zeilenvektor)
 z = x+2;     % 1 x 5  Matrix  (Zeilenvektor)
 y = x.';     % 5 x 1  Matrix  (Spaltenvektor)

 v = x + z;   % 1 x 5  Matrix
 w = x.*z;    % 1 x 5  Matrix
 % s = x-y      % Fehler, da Dimensionen ungleich
 s = x.'-y;   % 5 x 1 Matrix
 whos
elementweise Operationen
  Name      Size            Bytes  Class     Attributes

  s         5x1                40  double              
  v         1x5                40  double              
  w         1x5                40  double              
  x         1x5                40  double              
  y         5x1                40  double              
  z         1x5                40  double              

Analog elementweise mit Matrizen

 A = [ 2 0 -1; -1 1  4 ];  % 2x3 Matrix
 B = [ 3 1  0;  1 0 -2 ];  % 2x3 Matrix

 C = A+B;                  % 2x3 Matrix
 D = A.*B;                 % 2x3 Matrix
 whos A B C D
  Name      Size            Bytes  Class     Attributes

  A         2x3                48  double              
  B         2x3                48  double              
  C         2x3                48  double              
  D         2x3                48  double              

Matrixoperationen (+,-), *, /, \, ^

Kompatibilitaetsbedingung

disp('Matrixoperationen')

%E = A*B;                   % Fehler, Dimensionen inkompatibel

% Transponieren von B
B = B.';
whos A B
E = A*B                     % (Matrix 2x3) * (Matrix 3x2) ==> 2x2 Matrix
whos E

% Sonderfall potenzieren:
% A^2     ==>  Fehler, da A keine quadratische Matrix ist (#Zeilen == #Spalten)
E^2       %    E ist quadratische Matrix  ==>  E*E  moeglich

% desgleichen mit Vektoren
v1 = x   .* y.';            % Elementweise 1x5
v2 = x.' .* y ;             % Elementweise 5x1
v3 = x*y;                   % Matrixweise  (1x5)*(5x1) ==> 1x1 Matrix
v4 = y*x;                   % Matrixweise  (5x1)*(1x5) ==> 5x5 Matrix
Matrixoperationen
  Name      Size            Bytes  Class     Attributes

  A         2x3                48  double              
  B         3x2                48  double              


E =

     6     4
    -2    -9

  Name      Size            Bytes  Class     Attributes

  E         2x2                32  double              


ans =

    28   -12
     6    73

Loese lineares Gleichungssystem

   3x - 2y -z = 0
         y +z = 2
   -x  +3y    = 2
disp('Loesen eines (quadratischen, linearen) Gleichungssytems')

A = [3 -2 -1; 0 1 1; -1 3 0];
f = [0; 2; 2];
x = A\f;        %  Loest  A * x = f   linksseitig
disp(x)
% Probe;
fp = A*x;
% Residuum
res = f-A*x;
nr = norm(res);
disp(['Norm des Residuums: ',num2str(nr)] )
Loesen eines (quadratischen, linearen) Gleichungssytems
     1
     1
     1

Norm des Residuums: 0

Was passiert bei x/(1+x)? "/"-Operator

x = 1:10;             % re-definition of x
xq =  x/(1+x)         % rechtsseitiges Loesen eines GlS

whos x xq             %  skalar statt gewuenschter Vektor
xq =

    0.8713

  Name      Size            Bytes  Class     Attributes

  x         1x10               80  double              
  xq        1x1                 8  double              

spezielle Funktionen

disp('Spezielle Funktionen fuer Matrizen')
size(A)               % Anzahl der Elemente pro Dimension
numel(A)              % Gesamtanzahl der Elemente
% letzte Zeile
A(end,:)

% zeros, ones, rand, eye, diag
ones(5)
C = diag(1:5);
p = diag(C)
Spezielle Funktionen fuer Matrizen

ans =

     3     3


ans =

     9


ans =

    -1     3     0


ans =

     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1


p =

     1
     2
     3
     4
     5

Hoeherdimensionale Matrizen

siehe view_jpg.m

Meshgrid und Visualisierung einer Funktion z(x,y)

        (x,y)  aus [1, 2]x[0.5, 2.5]
x = linspace(1,2,31);           %  x aus [1,2]
y = linspace(0.5,2.5,15);       %  y aus [0.5,2.5]
[xx,yy] = meshgrid(x,y);        %  Gitternetz erzeugen
zz = sin(3*pi*xx).*exp(2-yy);   %  zz(xx,yy) Gitterkoordinaten verwenden !!
surf(xx,yy,zz)                  %  Visualisiere die durch (xx,yy,zz) beschriebene Flaeche

publish('v_3_a.m')