1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Matlab fehlerhafte Systemmatrix für die Randbedingung Neumann?

  • fossifoh
  • 2. Januar 2011 um 18:04
  • Unerledigt
  • fossifoh
    1
    fossifoh
    Mitglied
    Punkte
    10
    Beiträge
    1
    • 2. Januar 2011 um 18:04
    • #1

    Hallo Leute,
    ich habe folgendes Problem. Ich muss eine elliptische DGL in einem beliebigen rechteckigem Gebiet mit Neumann Randbedingungen in Matlab programmieren und lösen.
    Nur mit meiner programmierten Systemmatrix funktioniert das nicht und ich bekomm unendlich große Werte. Habe das Problem auch schon zum Teil herausbekommen (glaube ich).

    Hier erstmal der Programmabschnitt für die Matrix:

    Code
    h=1/3; % Festlegung der Schrittweite h   
    k=1/4; % Festlegung der Schrittweite k
    hk=k/h; % k faktoriell in h abgebildet
    %---Anfang Systemmatrix Neumann---%
    %---Anfang Blockdiagramm---%
    d1=diag((2+2/hk^2)*ones(n,1));
    r1=-diag(1*ones(n-1,1),1);
    l1=-diag(1*ones(n-1,1),-1);
    d1=d1+r1+l1;
    
    
    d1(1,2)=-2; 
    d1(n,n-1)=-2; 
    %---Ende Blockdiagramm---%
    
    
    %---Anfang Seitendiagonale rechts---%
    r2=-diag((1/hk^2)*ones(nm-n,1),n);
    
    
    for kk=1:n
        r2(0+kk,n+kk)=-1/hk^2*2;
    end
    %---Ende Seitendiagonale rechts---%
    
    
    %---Anfang Seitendiagonale links---%
    l2=-diag((1/hk^2)*ones(nm-n,1),-n);
    
    
    for kk=1:n
        l2(nm+1-kk,nm-n+1-kk)=-1/hk^2*2;
    end
    %---Ende Seitendiagonale links---%
    
    
    mat=d1;
    
    
    for kk=1:m-1
        mat=blkdiag(mat,d1);
    end
    
    
    mat1=mat+r2+l2;
    
    
    clear mat;
    %---Ende Systemmatrix Neumann---%
    disp(mat1)
    mat1=sparse(mat1);
    %;
    Alles anzeigen

    Die Matrix, die erstellt wird, sieht genauso aus, wie die, die wir in den Vorlesungen auf dem Papier erstellt haben.
    Wenn ich die zwei "-2" im Block einen anderen Wert gebe, bekomme ich vernünftige Zahlen.

    5.5556 -2.0000 0 0
    -1.0000 5.5556 -1.0000 0
    0 -1.0000 5.5556 -1.0000
    0 0 -2.0000 5.5556

    Ich hoffe, es ist nur ein kleiner Fehler, den mir ein gübter Matlab'er/erin beantworten kann.
    Erstmal vielen Dank, ich werde morgen wieder vorbeischauen.

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung