Matroids Matheplanet Forum Index
Moderiert von mire2
Mathematische Software & Apps » Matlab » Kondition von Matrixpotenzen
Thema eröffnet 2021-05-07 17:03 von s-amalgh
Seite 2   [1 2]   2 Seiten
Autor
Universität/Hochschule Kondition von Matrixpotenzen
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 4422
  Beitrag No.40, eingetragen 2021-05-12

\quoteon(2021-05-12 17:40 - s-amalgh in Beitrag No. 39) du meintest vielleicht die Funktion Konditionszahl weil relativen_fehler hat nur for schleife \quoteoff Nein, ich meinte schon relativen_fehler. Tatsächlich enthält diese Funktion bei dir eine for-Schleife, aber das ist nicht, was ich vorgeschlagen hatte: \quoteon(2021-05-11 01:37 - zippy in Beitrag No. 31) 2. Eine Funktion von $k$ zur Berechnung des relativen Fehlers. \quoteoff Aber du musst meinen Vorschlag nicht umsetzen. Es ist ja nur ein Vorschlag.


   Profil
s-amalgh
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 16.12.2020
Mitteilungen: 374
  Beitrag No.41, vom Themenstarter, eingetragen 2021-05-12

Jetzt ist so wie du gemeint hast oder? \sourceon Matlab function Alghabra04 function [x] = konditionszahl(k) # A^k zeigen disp("\nA^k :\n") A^k #die Lösung x berechnen disp("die Loesung x :\n") x = mldivide(A^k,(A^(k-1)) * b) # Konditionszahl von A^k berechnen disp("Konditionszahl von A^k ist : \n") c = cond(A^k) #Das Produkt aus Maschinengenauigkeit eps und der Konditionszahl berechnen disp("Produkt aus Maschinengenauigkeit eps und der Konditionszahl : ") produkt = c*eps end function relativen_fehler(k) #Der relative Fehler für A^k fehler = norm(A^k \ (A^(k-1) * b) - [1 ; 2 ;-1]) / norm([1 ; 2 ;-1]) #Die relativen Fehler berechnen r = 1:35; for k = r c(k) = cond(A^k); c1(k) = cond(A^k)*eps; f(k) = norm(A^k \ (A^(k-1) * b) - [1 ; 2 ;-1]) / norm([1 ; 2 ;-1]); end end #Eingabe der Matrix und rechter Seite A = [2 4 -5; 1 2 0; -4 12 6]; b = [15; 5; 14]; # Aufruf die Funktione konditionszahl(3) relativen_fehler(3) #halblogarithmischer Plot semilogy(1:35, c1, 1:35, f) legend({"Konditionszahl von A^k ","die relativen Fehler mit der Fehlerschaetzung "},"Location","southeast") #legend end \sourceoff Ich habe eigentlich noch eine Frage \sourceon Matlab function [x] = konditionszahl(k) \sourceoff Wofür benutzt man [x] ? Ich habe das auf google gesehen aber ich weiß nicht ob ich das schreiben muss oder nicht Könntest du mir bitte das erklären und meinen Code auch wieder sehen? Danke im Voraus!


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 4422
  Beitrag No.42, eingetragen 2021-05-12

\quoteon(2021-05-12 18:06 - s-amalgh in Beitrag No. 41) Jetzt ist so wie du gemeint hast oder? \quoteoff Nein, die Funktion berechnet ja immer noch etwas anderes als den relativen Fehler für dieses $k$. \quoteon(2021-05-12 18:06 - s-amalgh in Beitrag No. 41) Wofür benutzt man [x] \quoteoff Mit dem $x$ sagst du, welche Variable dem Rückgabewert der Funktion entsprechen soll. In deinem Code weist du tatsächlich $x$ einen Wert zu, aber von diesem Wert machst du später keinen Gebrauch mehr. Die eckigen Klammern brauchst du nur, wenn es um mehrere Rückgabewerte geht (siehe hier den Abschnitt "Function with One Output").


   Profil
Buri
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 02.08.2003
Mitteilungen: 46764
Wohnort: Dresden
  Beitrag No.43, eingetragen 2021-05-12

Hi s-amalgh, ich hatte befürchtet, dass Matlab die Matrixpotenz Ak nicht wie gewünscht berechnet. Es ist möglicherweise so, dass das (i,j)-Element von Ak gleich der Potenz (aij)k ist, die Potenzierung also elementweise erfolgt und nicht als Matrixpotenz. Das müsste man an Hand einer Testmatrix, zum Beispiel (1,2;3,4)^2 feststellen, die elementweise Potenz wäre (1,4;9,16) , während die Matrixpotenz gleich (7,10;15,22) ist. Glücklicherweise wird die Matrixpotenz von Matlab durch Ak richtig berechnet, siehe Beitrag #45. Gruß Buri


   Profil
s-amalgh
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 16.12.2020
Mitteilungen: 374
  Beitrag No.44, vom Themenstarter, eingetragen 2021-05-12

"Nein, die Funktion berechnet ja immer noch etwas anderes als den relativen Fehler für dieses k." wieso rechnet was anders? ich habe k= 3 geschcrieben fehler = 5.3051e-016 das ist jetzt der relative Fehler von k=3 wieso falsch?


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 4422
  Beitrag No.45, eingetragen 2021-05-12

\quoteon(2021-05-12 18:19 - Buri in Beitrag No. 43) ich befürchte, dass Matlab die Matrixpotenz Ak nicht wie gewünscht berechnet. \quoteoff Das ist Unsinn, du verwechselst "^" und ".^": \sourceon MATLAB 1> A = [1, 2; 3, 4] A = 1 2 3 4 2> A^2 ans = 7 10 15 22 3> A.^2 ans = 1 4 9 16 \sourceoff [Die Antwort wurde nach Beitrag No.43 begonnen.]


   Profil
s-amalgh
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 16.12.2020
Mitteilungen: 374
  Beitrag No.46, vom Themenstarter, eingetragen 2021-05-12

"Nein, die Funktion berechnet ja immer noch etwas anderes als den relativen Fehler für dieses k." wieso rechnet was anders? ich habe k= 3 geschcrieben fehler = 5.3051e-016 das ist jetzt der relative Fehler von k=3 wieso falsch?


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 4422
  Beitrag No.47, eingetragen 2021-05-12

\quoteon(2021-05-12 18:22 - s-amalgh in Beitrag No. 44) ich habe k= 3 geschcrieben \quoteoff Danach berechnest du ihn aber für alle $k$ von 1 bis 35.


   Profil
s-amalgh
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 16.12.2020
Mitteilungen: 374
  Beitrag No.48, vom Themenstarter, eingetragen 2021-05-12

"Danach berechnest du ihn aber für alle k von 1 bis 35." ja aber ich muss es für alle k von 1 bis 35 für halblogarithmischen Plot


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 4422
  Beitrag No.49, eingetragen 2021-05-12

\quoteon(2021-05-12 18:28 - s-amalgh in Beitrag No. 48) ja aber ich muss es für alle k von 1 bis 35 für halblogarithmischen Plot \quoteoff Du kannst ja diese Funktion für $k$ von 1 bis 35 aufrufen.


   Profil
s-amalgh
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 16.12.2020
Mitteilungen: 374
  Beitrag No.50, vom Themenstarter, eingetragen 2021-05-12

meinst du dass ich noch eine andere Funktion schreiben?


   Profil
s-amalgh
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 16.12.2020
Mitteilungen: 374
  Beitrag No.51, vom Themenstarter, eingetragen 2021-05-12

Könntest du mir bitte das schreiben? ich wäre dankbar Danke im Voraus!


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 4422
  Beitrag No.52, eingetragen 2021-05-12

Ich skizziere mal, was ich meinte: \sourceon MATLAB function Alghabra04 A = [2, 4, -5; 1, 2, 0; -4, 12, 6] b = [15; 5; 14] x = [1; 2; -1] r = 1:35 function c = konditionszahl(k) c = cond(A^k) end function f = relativer_fehler(k) f = norm(A^k \ (A^(k-1) * b) - x) / norm(x) end for k = r c(k) = konditionszahl(k) f(k) = relativer_fehler(k) end % Teil a) semilogy(r, c) % Teil b) semilogy(r, c * eps, r, f) end \sourceoff [Die Antwort wurde nach Beitrag No.50 begonnen.]


   Profil
s-amalgh
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 16.12.2020
Mitteilungen: 374
  Beitrag No.53, vom Themenstarter, eingetragen 2021-05-12

soll ich keinen Wert für k geben? als Beispiel um A^k und konditioszahl und Produkt und fehler zu rechnen?


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 4422
  Beitrag No.54, eingetragen 2021-05-12

\quoteon(2021-05-12 19:06 - s-amalgh in Beitrag No. 53) soll ich keinen Wert für k geben? als Beispiel um A^k und konditioszahl und Produkt und fehler zu rechnen? \quoteoff Das kannst du machen, in der Aufgabe verlangt werden aber nur die beiden Plots (den für Teil a) habe ich oben noch ergänzt).


   Profil
s-amalgh
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 16.12.2020
Mitteilungen: 374
  Beitrag No.55, vom Themenstarter, eingetragen 2021-05-12

in der Aufgabe verlangt wird das Gleichungssystem für k = 1,.... , 35 zu lösen. Wo sollte ich das schreiben "x1 = mldivide(A^k,(A^(k-1)) * b)" ?


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 4422
  Beitrag No.56, eingetragen 2021-05-12

\quoteon(2021-05-12 20:01 - s-amalgh in Beitrag No. 55) in der Aufgabe verlangt wird das Gleichungssystem für k = 1,.... , 35 zu lösen. \quoteoff Das wird hier gemacht: \quoteon(2021-05-12 18:57 - zippy in Beitrag No. 52) \sourceon f = norm(A^k \ (A^(k-1) * b) - x) / norm(x) \sourceoff \quoteoff \quoteon(2021-05-12 20:01 - s-amalgh in Beitrag No. 55) Wo sollte ich das schreiben "x1 = mldivide(A^k,(A^(k-1)) * b)" ? \quoteoff Warum willst du das denn noch irgendwo hinschreiben?


   Profil
s-amalgh
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 16.12.2020
Mitteilungen: 374
  Beitrag No.57, vom Themenstarter, eingetragen 2021-05-12

"f = norm(A^k \ (A^(k-1) * b) - x) / norm(x)" das ist um die relativen Fehler zu rechnen oder ? "Lösen Sie für k = 1; : : : ; 35 das Gleichungssystem A^k x = A^k−1 b mit einem bereits in MATLAB implementierten Löser für lineare Gleichungssysteme (z.B. mldivide)" So steht in der Aufgabe und wie ich verstanden habe ich muss das Gleichungssystem durch mldivide lösen deswegen will ich x1 irgendwo hinschreiben


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 4422
  Beitrag No.58, eingetragen 2021-05-12

\quoteon(2021-05-12 20:20 - s-amalgh in Beitrag No. 57) So steht in der Aufgabe und wie ich verstanden habe ich muss das Gleichungssystem durch mldivide lösen deswegen will ich x1 irgendwo hinschreiben \quoteoff Der Ausdruck $A^k\setminus(A^{k-1}\cdot b)$ ist die Lösung des Gleichungssystems. Warum willst du dieses Zwischenergebnis einer Variablen zuweisen? Aber wenn du Spaß daran hast, kannst du das natürlich tun. Schreib \sourceon x1 = A^k \ (A^(k-1) * b) f = norm(x1 - x) / norm(x) \sourceoff statt \sourceon f = norm(A^k \ (A^(k-1) * b) - x) / norm(x) \sourceoff


   Profil
s-amalgh
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 16.12.2020
Mitteilungen: 374
  Beitrag No.59, vom Themenstarter, eingetragen 2021-05-13

Alles klar, Vielen vielen Dank für deine tolle Hilfe! :))


   Profil
s-amalgh
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 16.12.2020
Mitteilungen: 374
  Beitrag No.60, vom Themenstarter, eingetragen 2021-05-15

Könntest du mir bitte dabei helfen ? https://www.matheplanet.com/matheplanet/nuke/html/viewtopic.php?topic=253920&start=0&lps=1845192#v1845192 Danke im Voraus! :)


   Profil
s-amalgh hat die Antworten auf ihre/seine Frage gesehen.
s-amalgh hatte hier bereits selbst das Ok-Häkchen gesetzt.
s-amalgh wird per Mail über neue Antworten informiert.
Seite 2Gehe zur Seite: 1 | 2  

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]