WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Netzgitter --> LGS

 

Boki
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 26.12.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.12.2015, 23:01     Titel: Netzgitter --> LGS
  Antworten mit Zitat      
Hallo,

ich spiele derzeit einwenig mit Matlab rum und wollte nun mal die Spannungen in einer Welle mit Nut (Torsion) berechnen. Dazu muss ich aus meinen Konten im Netz ein lineares Gleichungssystem bilden.

Und genau da ist mein Problem:
Ich habe z.B. eine 5x5 Matrix : C

Nun soll ich für jeden Eintrag (im inneren bzw. for i=2 to 4 und for k=2 to 4) eine Gleichung aufstellen:
A = Const.
C(i, k+1) + C(i+1,k) + C(i,k-1) + C(i-1,k) - 4*C(i,k) = A

und das resultierende LGS lösen. Die erste und letzte Zeile/Spalte von C kann dabei ignoriert werden --> LGS mit 9 (3*3) unbekannten

Gibt es in Matlab einen eleganten Weg dieses LGS bzw. die Matrix dazu aufzustellen? Das einzige was mir einfällt wäre die Einträge meiner Matrix C per Schleifen durchzunummerieren und dann immer wieder zu vergleichen und somit die LGS Matrix aufzustellen...

Vielen Dank schonmal, noch einen schönen Feiertag und nen guten Rutsch!
Boki
Private Nachricht senden Benutzer-Profile anzeigen


Boki
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 26.12.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.12.2015, 23:09     Titel:
  Antworten mit Zitat      
Habs inzwischen mit Schleifen gelöst, absolut nicht schön aber es funktioniert..

Falls jmd mal drüber stolpert:
Code:

k = 1
for i=1 : 2*aH+1
   for j =1 : 2*aV+1
 
       if i ~= 1 && i~=(2*aH+1) && j ~= 1 && j~=(2*aH+1)

       LGSMat(k, k) = -4   ;
       p = k + 1 ;
       LGSMat(k, p) = 1;
       p = k - 1 ;
       LGSMat(k, p) = 1;    
       p = k - 2*aH-1 ;
       LGSMat(k, p) = 1;        
       p = k + 2*aH+1 ;
       LGSMat(k, p) = 1;    
       
       LLM(k,  +1) = A;
       
       else
       LGSMat(k,k) = 1 ;
       LLM(k,  1) = 0;
               
       end
       
      k=k+1 ;
 
   end
end

x = LGSMat\LLM;

k = 1;

for i=1 : 2*aH+1
   for j =1 : 2*aV+1
   Matrix(i,j) = x(k);
   k = k+1;
   end
end


Grüße
Boki
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 28.12.2015, 11:03     Titel:
  Antworten mit Zitat      
Hallo Boki,

Es ist oft sinnvoll, zunächst eine Methode mit Schleifen zu schreiben und zu testen. Danach kann man vektorisieren. Dafür muss man nur den Vektor aus der FOR-Schleife in den Code einsetzen.

Bei der ersten Schleife hilft eine Pre-allocation. Die zweite Schleife lässt sich so vereinfachen:
Code:
s1 = 1 : 2*aH+1;
s2 = 1 : 2*aV+1;

LGSMat = ones(s1*s2, s1*s2);
LLM(k,  1) = zeros(s1*s2);

% Dann entfällt dieser Teil:
%    else
%       LGSMat(k,k) = 1 ;
%       LLM(k,  1) = 0;

Matrix = reshape(x(1:s1*s2), s2, s1).';

Damit wird der Code hübscher und effizienter.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.