Matroids Matheplanet Forum Index
Moderiert von mire2
Mathematische Software & Apps » Matlab » Kondition von Matrixpotenzen
Druckversion
Druckversion
Antworten
Antworten
Seite 1   [1 2]   2 Seiten
Autor
Universität/Hochschule Kondition von Matrixpotenzen
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 102
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2021-05-07


Hallo zusammen, ich habe diese Aufgabe.




Ich bin mir nicht sicher ob ich richtig verstanden habe was ich bei a) genau machen soll ....
Was wurde mit "Gleichungssysteme aufstellen" gemeint ?
Das ist mein Code, ist richtig oder habe ich falsch verstanden?


function Alghabra04(A,b,k)
 
#A zeigen
A
#k zeigen
k
disp("\nA^k :\n")
A^k
#b zeigen
b
 
# x rechnen
x = A^k\(A^(k-1) * b)
 
# Konditionszahl von A^k berechnen
disp("Konditionszahl von A^k ist : \n")
c = cond(A^k)
 
 
#halblogarithmischen Plot darstellen
index=1;
for i = 1:35
v(index) = cond(A^i);
index=index +1;
end
k1 = 1:35;
#v
semilogy(k1,v)
 
end
 
 





Danke im Voraus! :)



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Delastelle
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2006
Mitteilungen: 1675
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2021-05-09


Hallo s-amalgh!

Wie sieht denn der plot aus?
Sieht man da schon was?
(nicht zu große Bilder kann man auch hochladen und anzeigen lassen.)

Viele Grüße
Ronald



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 102
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2021-05-09


Danke erstmal für deine Antwort!

ich weiß erstmal nicht ob ich richtig verstanden habe was die Aufgabe verlängt



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Delastelle
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2006
Mitteilungen: 1675
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, eingetragen 2021-05-09


Bei mir ist Numerik lange her - ich müsste auch erst mal überlegen wie man das richtig löst.
Eventuell hat ja jemand anderes noch Ideen...



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 102
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, vom Themenstarter, eingetragen 2021-05-09


mein Plot sieht so aus




Denkst du ist das richtig?



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Delastelle
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2006
Mitteilungen: 1675
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.5, eingetragen 2021-05-10


Hallo,

Zur Konditionszahl in Octave (kostenlos - ähnlich zu Matlab) fand ich foldendes:
Octave
 -- cond (A)
 -- cond (A, P)
     Compute the P-norm condition number of a matrix with respect to
     inversion.
 
     'cond (A)' is defined as 'norm (A, P) * norm (inv (A), P)'.
 
     By default, 'P = 2' is used which implies a (relatively slow)
     singular value decomposition.  Other possible selections are 'P =
     1, Inf, "fro"' which are generally faster.  See 'norm' for a full
     discussion of possible P values.
 
     The condition number of a matrix quantifies the sensitivity of the
     matrix inversion operation when small changes are made to matrix
     elements.  Ideally the condition number will be close to 1.  When
     the number is large this indicates small changes (such as underflow
     or round-off error) will produce large changes in the resulting
     output.  In such cases the solution results from numerical
     computing are not likely to be accurate.
 
     See also: condest, rcond, condeig, norm, svd.
Eventuell sieht man auch etwas zur Kondition wenn man sich einmal eine höhere Potenz der Matrix ausdruckt(anzeigt)!

Viele Grüße
Ronald



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 102
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.6, vom Themenstarter, eingetragen 2021-05-10


kann man also cond(A^k) nicht so schreiben?
was ist p ? ich habe nicht so gut verstanden



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Delastelle
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2006
Mitteilungen: 1675
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.7, eingetragen 2021-05-10


Hallo,

man kann cond(A^k) schreiben.
In der Octave-Beschreibung bezeichnet p eine Zahl für eine spezielle Norm. Laut Beschreibung wird p erst mal 2 gesetzt.
Du kannst ja mal schauen ob Ihr im Skript oder verwendeten Buch die Kondition genauso definiert habt!
als
'norm (A, P) * norm (inv (A), P)'
(inv(A) sollte die invertierte Matrix A^(-1) sein.)

Viele Grüße
Ronald



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 102
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.8, vom Themenstarter, eingetragen 2021-05-10


ja aber wenn man cond(A^k) schreiben kann dann brauche ich  'cond (A)' is defined as 'norm (A, P) * norm (inv (A), P)' nicht oder..



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Delastelle
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2006
Mitteilungen: 1675
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.9, eingetragen 2021-05-10


Hallo,

ich hatte die Octave-Hilfe zu "cond" gesucht um noch mal nachzuschauen was dort steht.
Im Plot Beitrag 4 steigt ja die Konditionszahl bei höheren Matrixpotenzen von A an. Sie soll aber eher bei 1 liegen für gute Kondition der Matrix.

Viele Grüße
Ronald



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 102
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.10, vom Themenstarter, eingetragen 2021-05-10


"Funktion, welches die Gleichungssysteme in Abhängigkeit von k aufstellt "

bedeutet das dass die Funktion die Gleichungssysteme lösen soll oder wie?



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Delastelle
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2006
Mitteilungen: 1675
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.11, eingetragen 2021-05-10


Hallo,

mir fällt da ein:
Octave
>> A = [2 4 -5; 1 2 0; -4 12 6]
A =
 
    2    4   -5
    1    2    0
   -4   12    6
 
>> b = [15; 5; 14]
b =
 
   15
    5
   14
 
>> A\b
ans =
 
   1
   2
  -1
 
>>
Dies geht auch für höhere Potenzen von A z.B. in einem Matlab-Skript.

Ich denke später noch mal drüber nach ob das die Lösungsidee ist.

Viele Grüße
Ronald



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 102
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.12, vom Themenstarter, eingetragen 2021-05-10


"Dies geht auch für höhere Potenzen von A"

nein also z.B. x =A^2\b gibt nicht (1,2,-1)^T .
aber was ich nicht verstehe ist was ist der unterschied zwischen das "Funktion, welches die Gleichungssysteme in Abhängigkeit von k aufstellt" bei a) und das "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" ?
bedeuten beide gleich?



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2279
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.13, eingetragen 2021-05-10


2021-05-10 02:56 - s-amalgh in Beitrag No. 12 schreibt:
bedeuten beide gleich?

Bei a) bildest du die Matrizen $A^k$ und berechnest deren Konditionszahlen. Das hast du ja im Startbeitrag bereits getan.

Bei b) berechnest du die Fehler der Lösungen von $A^k\,x=A^{k−1}\,b$, indem du dieses System per $x=A^k\setminus(A^{k-1}\,b)$ löst und dann die Lösung $x$ mit der in der Aufgabe genannten exakten Lösung $\hat x$ vergleichst. Dieser Schritt fehlt noch.

Mehr ist nicht zu tun. Insbesondere muss man sich keine Gedanken zur richtigen Definition der Konditionszahl machen, da in der Aufgabe explizit gesagt wird, dass man die MATLAB-Funktion cond benutzen soll.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 102
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.14, vom Themenstarter, eingetragen 2021-05-10


Danke erstmal für deine Antwort! :)
Soll ich das “ x = A^k\(A^(k-1) * b)”  in der 12 Zeile löschen? Ich bin mir nicht sicher ob ich für a) das x = A^k\(A^(k-1) * b)  löschen soll
Weil bei b) steht dass ich die lineare Gleichungssystem mit “ mldivide”  lösen soll.

Bei a) soll ich noch halblogarithmischen Plot darstellen und das habe ich gemacht aber ich bin mir nicht sicher ob mein Plot richtig aussieht .

“ Lösung x mit der in der Aufgabe genannten exakten Lösung x^ vergleichst “
Wie vergleiche ich das? Mit norm( x - x^) oder wie meinst du das?

Und wie ich verstanden habe ich soll bei b) noch das Produkt aus Maschinengenauigkeit und  der Konditionszahl berechnen und dann muss ich die relativen Fehler mit dem Produkt in einem halblogarithmischen Plot darstellen oder?

Danke im Voraus für deine Antwort! :)



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2279
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.15, eingetragen 2021-05-10


2021-05-10 15:56 - s-amalgh in Beitrag No. 14 schreibt:
Weil bei b) steht dass ich die lineare Gleichungssystem mit “ mldivide”  lösen soll.

mldivide ist nur eine andere Schreibweise für den \-Operator. Die Doku sagt "x = mldivide(A,B) is an alternative way to execute x = A\B, but is rarely used. It enables operator overloading for classes."

2021-05-10 15:56 - s-amalgh in Beitrag No. 14 schreibt:
aber ich bin mir nicht sicher ob mein Plot richtig aussieht .

Er sieht erstmal plausibel aus. Wenn du dir nicht sicher bist, rechne einfach ein paar wenige Punkte von Hand nach.

2021-05-10 15:56 - s-amalgh in Beitrag No. 14 schreibt:
Wie vergleiche ich das? Mit norm( x - x^) oder wie meinst du das?

Ja. Dass du die euklidische Norm verwenden sollst, steht in der Aufgabenstellung.

2021-05-10 15:56 - s-amalgh in Beitrag No. 14 schreibt:
Und wie ich verstanden habe ich soll bei b) noch das Produkt aus Maschinengenauigkeit und  der Konditionszahl berechnen und dann muss ich die relativen Fehler mit dem Produkt in einem halblogarithmischen Plot darstellen oder?

So ist es.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 102
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.16, vom Themenstarter, eingetragen 2021-05-10


mldivide ist nur eine andere Schreibweise für den \-Operator. Die Doku sagt "x = mldivide(A,B) is an alternative way to execute x = A\B, but is rarely used. It enables operator overloading for classes."

soll ich also das “ x = A^k\(A^(k-1) * b)”  zweimal in meinem Code schreiben einmal für a) und einmal für b) oder wie?

Ja. Dass du die euklidische Norm verwenden sollst, steht in der Aufgabenstellung.
 

Die relativen Fehler berechne ich so norm(x1 - x)/norm(x) oder falsch? x ist die exakte Lösung und x1 die Lösung meines Codes

So ist es.

c = cond(A^k)
produkt = c*eps

soll ich das Produkt so berechnen oder ist eps falsch?



Danke im Voraus für deine Antwort! :)



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2279
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.17, eingetragen 2021-05-10


Du musst dir nicht jeden noch so kleinen Schritt hier bestätigen lassen.

2021-05-10 17:04 - s-amalgh in Beitrag No. 16 schreibt:
soll ich also das “ x = A^k\(A^(k-1) * b)”  zweimal in meinem Code schreiben einmal für a) und einmal für b) oder wie?

Diese Rechnung benötigst du erst in b).

2021-05-10 17:04 - s-amalgh in Beitrag No. 16 schreibt:
Die relativen Fehler berechne ich so norm(x1 - x)/norm(x) oder falsch? x ist die exakte Lösung und x1 die Lösung meines Codes

Ja, das würde ich auch unter dem relativen Fehler verstehen.

2021-05-10 17:04 - s-amalgh in Beitrag No. 16 schreibt:
produkt = c*eps

soll ich das Produkt so berechnen oder ist eps falsch?

Wenn du dir nicht sicher bist, solltest du die Doku zu eps anschauen.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 102
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.18, vom Themenstarter, eingetragen 2021-05-10


Danke :)
Letzte Frage: wie kann ich die relativen Fehler mit dem Produkt in einem halblogarithmischen Plot darstellen ?



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2279
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.19, eingetragen 2021-05-10


2021-05-10 17:50 - s-amalgh in Beitrag No. 18 schreibt:
wie kann ich die relativen Fehler mit dem Produkt in einem halblogarithmischen Plot darstellen ?

Schau in die Doku zu semilogy. Das "Plot Multiple Lines"-Beispiel passt zu deiner Aufgabe.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 102
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.20, vom Themenstarter, eingetragen 2021-05-10


Was sollte auf der x-Achse sein und was sollte auf der y-Achse sein?



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2279
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.21, eingetragen 2021-05-10


2021-05-10 18:21 - s-amalgh in Beitrag No. 20 schreibt:
Was sollte auf der x-Achse sein und was sollte auf der y-Achse sein?

Machs wie in deinem Beitrag Nr. 4.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 102
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.22, vom Themenstarter, eingetragen 2021-05-10


Eine Frage ist mir jetzt aufgefallen und zwar soll k = 1,2,….. oder k = 1,2,……,35 ?



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2279
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.23, eingetragen 2021-05-10


2021-05-10 18:56 - s-amalgh in Beitrag No. 22 schreibt:
soll k = 1,2,….. oder k = 1,2,……,35 ?

Die Gleichung $A^k\,x=A^{k−1}\,b$ kann man für alle $k$ formulieren. Daher steht dort $k=1,2,\ldots$.

Sobald man aber etwas plotten will, muss man irgendwo ein Ende finden. Daher steht in der Aufgabenstellung unter a) und b) jeweils $k=1,2,\ldots,35$.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 102
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.24, vom Themenstarter, eingetragen 2021-05-11


"Stellen Sie jeweils die relativen Fehler zusammen mit
der Fehlersch¨ atzung κ(Ak) "0 in einem halblogarithmischen Plot dar"

heißt das muss ich alle relativen Fehler der Lösung für k=1 und dann k=2 bis k= 35? wenn ja wie kann ich das machen?  



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2279
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.25, eingetragen 2021-05-11


2021-05-11 00:06 - s-amalgh in Beitrag No. 24 schreibt:
wenn ja wie kann ich das machen?  

Völlig analog dazu, wie du es für die Konditionszahl im Startbeitrag gemacht hast.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 102
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.26, vom Themenstarter, eingetragen 2021-05-11





Denkst du ist das richtig?



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 102
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.27, vom Themenstarter, eingetragen 2021-05-11


Das ist mein Code :


function Alghabra04(A,b,k)
 
    #A zeigen
     A
    #k zeigen
     k
    disp("\nA^k :\n")
    A^k
    #b zeigen
    b
    #Die exakte Lösung
    x = [1 ; 2 ;-1]
 
    # Konditionszahl von A^k in Abhängigkeit von k in einem halblogarithmischen Plot
    index=1;
    for i = 1:35
    v(index) = cond(A^i);
    index=index +1;
    end
    k1 = 1:35;
    semilogy(k1,v)    
 
    #die Lösung x berechnen
    x1 = mldivide(A^k,(A^(k-1)) * b)
 
    #der relativer Fehler der Lösung berechnen
    fehler = norm(x)\norm(x - x1)
 
    # 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
 
    #Die relativen Fehler mit der Fehlerschätzung in einem halblogarithmischen Plot darstellen 
    index1=1;
    for i = 1:35
    u(index1) = cond(A^i)*eps;
    x2 = A^(i) \ (A^(i -1) * b);
    fehler1(index1) = norm(x)\norm(x - x2);  
    index1 = index1 +1;
    end
    semilogy(fehler1,u)
 
 
end



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2279
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.28, eingetragen 2021-05-11


2021-05-11 00:30 - s-amalgh in Beitrag No. 26 schreibt:
Denkst du ist das richtig?

Nein, das sieht nicht richtig aus.

2021-05-11 00:32 - s-amalgh in Beitrag No. 27 schreibt:
Das ist mein Code

Du bist beim Aufruf von semilogy nicht diesem Hinweis gefolgt:

2021-05-10 17:59 - zippy in Beitrag No. 19 schreibt:
Schau in die Doku zu semilogy. Das "Plot Multiple Lines"-Beispiel passt zu deiner Aufgabe.

Wenn du semilogy so aufrufst, wie oben beschrieben...
MATLAB
A = [2, 4, -5; 1, 2, 0; -4, 12, 6]
b = [15; 5; 14]
x = [1; 2; -1]
r = 1:35
 
for k = r
  c(k) = cond(A^k)
  f(k) = norm(A^k \ (A^(k-1) * b) - x) / norm(x)
end
 
semilogy(r, c * eps, r, f)

... sieht der Plot so aus:




Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Delastelle
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2006
Mitteilungen: 1675
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.29, eingetragen 2021-05-11


Hallo,

eine Ergänzung:
ich kam bei A^35 auf
Octave
A = [2, 4, -5; 1, 2, 0; -4, 12, 6]
>> A^35
ans =
 
   8.2129e+30  -3.8879e+31  -2.1800e+31
   1.3959e+30  -6.6079e+30  -3.7052e+30
  -8.5477e+30   4.0464e+31   2.2689e+31

dabei ist zu beachten, dass Matlab für viele Funktionen double-Gleitkommazahlen verwendet.
Diese haben 8 Byte und eine Genauigkeit von 15-16 Stellen.
Damit ist eine Zahl "x e+30" nur näherungsweise gespeichert.

Die Software Maple kann auch mit größerer Genaugikeit rechnen.
Matlab kann dies inzwischen eventuell auch
(eine solche Matlab-Version besitze ich aber nicht.)

Viele Grüße
Ronald



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 102
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.30, vom Themenstarter, eingetragen 2021-05-11


Ist mein Code sonst richtig oder?

und noch eine Frage :
Soll ich die erste For -Schleife in meinem Code löschen und alles in einer For-schleife schreiben wie du gemacht hast oder nicht?

Und soll ich die Matrix A und die rechte seite b in meinem Code schreiben oder das eigeben wenn ich meine Funktion anwenden will (Alghabra04([2 4 -5; 1 2 0 ; -4 12 6],[15 ; 5 ; 14],3)) ? Eigentlich ich wusste nicht was ich da mache weil ich diese Punkt in der Aufgabenstellung nicht verstanden habe

Danke im Voraus für die Antwort! :)



[Die Antwort wurde nach Beitrag No.28 begonnen.]



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2279
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.31, eingetragen 2021-05-11


2021-05-11 01:28 - s-amalgh in Beitrag No. 30 schreibt:
Soll ich die erste For -Schleife in meinem Code löschen und alles in einer For-schleife schreiben wie du gemacht hast oder nicht?

Mein Code entspricht nicht der Aufgabenstellung. Die möchte nämlich, dass du bestimmte Dinge in eine Funktion auslagerst.

Du könntest deinen Code beispielsweise zu aufteilen:
1. Eine Funktion von $k$ zur Berechnung der Konditionszahl.
2. Eine Funktion von $k$ zur Berechnung des relativen Fehlers.
3. Eine Schleife zum Auswerten dieser Funktionen für $k=1,\ldots,35$.
4. Die Aufrufe von semilogy für die beiden Plots.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 102
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.32, vom Themenstarter, eingetragen 2021-05-11


Meinst du soll mein Code die Hauptfunktion haben und drin 3 Funktionen noch? Könntest du mir bitte ein Beispiel vom Code  geben damit ich verstehe. ?


Und soll ich die Matrix A und die rechte seite b in meinem Code schreiben oder das eigeben wenn ich meine Funktion anwenden will (Alghabra04([2 4 -5; 1 2 0 ; -4 12 6],[15 ; 5 ; 14],3)) ?



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 102
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.33, vom Themenstarter, eingetragen 2021-05-11


Entspricht mein Code der Aufgabenstellung oder fehlt noch was ?
Matlab
function Alghabra04(k)
 
  function [x] = konditionszahl(A,b)
 
    # 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
 
    #Der relative Fehler für A^k
    fehler = norm(A^k \ (A^(k-1) * b) - [1 ; 2 ;-1]) / norm([1 ; 2 ;-1])
 
  end
 
  function relativen_fehler(A,b) 
    #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  
    A1 = [2 4 -5; 1 2 0; -4 12 6];
    b1 = [15; 5; 14];
 
    # Aufruf die Funktione
    x1 = konditionszahl(A1,b1);
    relativen_fehler(A1,b1)
 
    #halblogarithmischer Plot
    semilogy(1:35, c1, 1:35, f)
    legend({"Konditionszahl von A^k ","die relativen Fehler mit der Fehlerschaetzung "},"Location","southeast")   #legend
 
 
end



und das ist das Plot :



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Delastelle
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2006
Mitteilungen: 1675
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.34, eingetragen 2021-05-12


Hallo,

ich habe bei Matlab-Funktionen bisher immer so gearbeitet
(Eventuell geht es auch anders):
Hauptprogramm.m
for i = 1:10
fib(i)
end
fib.m
function [erg] = fib(n)
% die Fibonacci-Folge
if ( (n == 0) | (n == 1) )
  erg = 1;
else
  erg = fib(n-2)+fib(n-1);
end 
Viele Grüße
Ronald



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 102
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.35, vom Themenstarter, eingetragen 2021-05-12


- Habe ich also einen Fehler in meinem Code?
- Soll ich die beiden Funktionen “konditionszahl(A,b)“ und „ relativen_Fehler(A,b)“ in einem Funktion statt 2 ?
- Was soll ich mit dem k machen? “Alghabra04(k)” . Lasse ich es da oder soll ich es irgendwo anders schreiben?

Könntet ihr mir bitte antworten? Weil ich meinen Code heute abschicken muss

Danke im Voraus!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2279
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.36, eingetragen 2021-05-12


Du hast keinen Fehler in deinem Code und auch die Verwendung von inneren Funktionen ("nested functions") halte ich für sinnvoll.

Etwas verwirrend ist für mich der Umgang mit der Variablen $k$ (das ist aber kein Fehler im engerern Sinne, und du musst das nicht unbedingt ändern): Die äußere Funktion sollte keinen Parameter $k$ haben, weil sie ja etwas für alle Werte von $k$ macht. Die beiden inneren Funktionen würde ich nur für einen Wert von $k$ ihr Ergebnis berechnen lassen und ihnen somit das $k$ als Parameter mitgeben.

Übrigens können innere Funktionen auf die Variablen der äußeren zugreifen. Du musst ihnen daher $A$ und $b$ nicht notwendigerweise als Parameter mitgeben.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 102
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.37, vom Themenstarter, eingetragen 2021-05-12


Ich habe jetzt meinen Code geändert
könntest du bitte einen Blick darauf werfen?
Matlab
function Alghabra04
 
  function [x] = konditionszahl
 
    # 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
 
    #Der relative Fehler für A^k
    fehler = norm(A^k \ (A^(k-1) * b) - [1 ; 2 ;-1]) / norm([1 ; 2 ;-1])
 
  end
 
  function relativen_fehler 
    #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];
    k = 3;
    # Aufruf die Funktione
    konditionszahl
    relativen_fehler
 
    #halblogarithmischer Plot
    semilogy(1:35, c1, 1:35, f)
    legend({"Konditionszahl von A^k ","die relativen Fehler mit der Fehlerschaetzung "},"Location","southeast")   #legend
 
 
end
 



So meinst du das oder habe ich dich falsch verstanden?



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2279
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.38, eingetragen 2021-05-12


2021-05-12 16:59 - s-amalgh in Beitrag No. 37 schreibt:
So meinst du das oder habe ich dich falsch verstanden?

Nein, so meinte ich das nicht. Deine Funktion relativen_fehler hat doch beispielsweise keine dieser beiden Eigenschaften:

2021-05-12 07:45 - zippy in Beitrag No. 36 schreibt:
Die beiden inneren Funktionen würde ich nur für einen Wert von $k$ ihr Ergebnis berechnen lassen und ihnen somit das $k$ als Parameter mitgeben.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 102
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.39, vom Themenstarter, eingetragen 2021-05-12


du meintest vielleicht die Funktion Konditionszahl weil relativen_fehler hat nur for schleife
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
 
    #Der relative Fehler für A^k
    fehler = norm(A^k \ (A^(k-1) * b) - [1 ; 2 ;-1]) / norm([1 ; 2 ;-1])
 
  end
 
  function relativen_fehler 
    #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
 
    #halblogarithmischer Plot
    semilogy(1:35, c1, 1:35, f)
    legend({"Konditionszahl von A^k ","die relativen Fehler mit der Fehlerschaetzung "},"Location","southeast")   #legend
 
 
end
 


ich habe das jetzt wieder geändert. richtig jetzt?



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
-->> Fortsetzung auf der nächsten Seite -->>
Seite 1Gehe zur Seite: 1 | 2  
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


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-2021 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]