Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Mathematik am Computer

Studierende:
weitere Angebote

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Matrix definieren mit Variablen in der Matrix

 

Ümit Mavis

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2022, 14:23     Titel: Matrix definieren mit Variablen in der Matrix
  Antworten mit Zitat      
Hallo Zusammen,

ich möchte gerne einen Code schreiben zu Bestimmung der Konditionszahl einer Matrix, die wie folgt aussieht:


A=( 1,tau ; 0,1) %Matrix A
A^T= ( 1,0 ; tau,1) %Matrix A Transponiert

A^T * A = (tau^2 +1, tau; tau,1)

Diese Berechnung muss ich für tau=1-10 durchführen. Auf dem Papier würden dann 10 unterschiedliche Matrizen entstehen. Anschließend sollen die Eigenwerte dieser 10 Matrizen bestimmt werden. Damit ich die Konditionszahl wie folgt bestimmen lässt:

K(A^T*A)= sqrt(größter EW) / sqrt(kleinster Eigenwert)

Die Umsetzung in Matlab ist schwieriger als gedacht. Natürlich möchte ich nicht einen fertigen Code. Jedoch bräuchte Hilfe beim generieren der 10 Matrizen.

Kann mir da jemand weiterhelfen. Danke im voraus Smile!

Konditionszahl.jpg
 Beschreibung:

Download
 Dateiname:  Konditionszahl.jpg
 Dateigröße:  446 KB
 Heruntergeladen:  16 mal


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.261
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.11.2022, 14:52     Titel:
  Antworten mit Zitat      
Hallo,

was hast du denn konkret in MATLAB versucht? Die Zeile
Zitat:
A=( 1,tau ; 0,1) %Matrix A
ist ja z.B. schon nahe an MATLAB-Code, du brauchst nur [ ] statt ( ) zu verwenden.

Du kannst tau symbolisch definieren, damit rechnen, und später Werte einsetzen. Alternativ kannst du das aber auch in einer for-Schleife mit 10 Iterationen (entsprechend den 10 Werten von tau) durchführen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2022, 18:05     Titel:
  Antworten mit Zitat      
Ich Danke dir vielmals für dein schnelle Antwort. Ich habe das jetzt wie folgt gelöst. Weiß zwar nicht, ob das die schönste Lösung ist, aber es funktioniert Very Happy.


Code:
tau = (1:1:10);
for i = 1:1:length(tau)
     v{i} = [tau(i)^2 + 1 tau(i); tau(i) 1];
end

for i = 1:1:length(v)
     Eigenwerte{i} = eig(v{1,i});
end
 

for i = 1:1:length(tau)
     Cell_Konditionszahlen {i} = sqrt(max(Eigenwerte{1,i})) / sqrt(min(Eigenwerte{1,i}));
end
 
Konditionszahlen = cell2mat(Cell_Konditionszahlen)


plot(tau,Konditionszahlen,'r:.')
title('Konditionszahl für T = 1,2,3,4,5,6,7,8,9,10')
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.261
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.11.2022, 20:46     Titel:
  Antworten mit Zitat      
Hallo,

so war es im Grunde gedacht.
Die drei for-Schleifen können zu einer zusammengefasst werden, und man sollte die Variablen vorbelegen. Bei 1D-Arrays würde ich zudem nur einen Index verwenden.

Code:
v = cell(size(tau));
Eigenwerte = cell(size(tau));
Cell_Konditionszahlen = cell(size(tau));

for i = 1:length(tau)
   v{i} = [tau(i)^2 + 1 tau(i); tau(i) 1];
   Eigenwerte{i} = eig(v{i});
   Cell_Konditionszahlen {i} = sqrt(max(Eigenwerte{i})) / sqrt(min(Eigenwerte{i}));
end


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.12.2022, 12:30     Titel:
  Antworten mit Zitat      
Ich danke dir Very Happy
 
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  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2023 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.