Matroids Matheplanet Forum Index
Moderiert von mire2
Mathematische Software & Apps » Matlab » Lineare Ausgleichsrechnung und Normalgleichung
Autor
Universität/Hochschule J Lineare Ausgleichsrechnung und Normalgleichung
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 122
  Themenstart: 2021-05-15

Hallo zusammen, könnte mir jemand bitte dabei helfen? https://www.matheplanet.com/matheplanet/nuke/html/uploads/b/54010_Unbelkjhfioh_snannt.PNG Ich weiß nicht wie ich die Daten mit Ausgleichsgerade und Ausgleichsparabel bei Matlab approximieren soll. Danke im Voraus! :)


   Profil
Kitaktus
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.09.2008
Mitteilungen: 6880
Wohnort: Niedersachsen
  Beitrag No.1, eingetragen 2021-05-15

Kannst Du eine lineare Gleichung aufstellen, so dass die linke Seite den Wert auf der Ausgleichsgeraden (-Parabel) darstellt und die rechte Seite die gegebenen Körpergrößen? Welches Ergebnis erhält man, wenn man Matlab so eine (überbestimmte!) Gleichung lösen lässt? Das habt ihr sicher besprochen, aber auch die Matlab-Hilfe dürfte einiges dazu zu sagen haben.


   Profil
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 122
  Beitrag No.2, vom Themenstarter, eingetragen 2021-05-15

Danke erstmal für deine Antwort! Ausgleichsgerade : y(t) = a + ßt Ich habe nicht verstanden was du damit gemeint hast dass die linke Seite den Wert auf der Ausgleichsgeraden (-Parabel) darstellt Könntest du mir bitte das deutlicher erklären?


   Profil
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 122
  Beitrag No.3, vom Themenstarter, eingetragen 2021-05-17

fehlt noch was oder habe ich irgendwas falsch verstanden? Danke im Voraus für deine Antwort! :) \sourceon Matlab function Alghabra05 jahr = [1 : 18]; mann = [68 84 93 101 108 115 122 128 133 139 144 150 156 164 171 175 179 180]; frau = [66 83 92 100 108 114 122 127 132 139 144 151 157 161 164 166 167 167]; function Ausgleichsrechnung disp("i) Ausgleichsgerade ------------------------------------------") % alpha und beta für das Geschlecht m für Ausgleichsgerade berechnen p = polyfit(jahr,mann,1); beta = p(1); alpha = p(2); % alpha und beta für das Geschlecht w für Ausgleichsgerade berechnen q = polyfit(jahr,frau,1); beta1 = q(1); alpha1 = q(2); %Ausgleichsgerade m_koerpergroesse_i = alpha + beta*jahr w_koerpergro0esse_i = alpha1 + beta1*jahr disp("ii) Ausgleichsparabel ------------------------------------------") % alpha, beta und gama für das Geschlecht m für Ausgleichsparabel berechnen p1 = polyfit(jahr,mann,2); gama2 = p1(1); beta2 = p1(2); alpha2 = p1(3); % alpha, beta und gama für das Geschlecht w für Ausgleichsparabel berechnen q1 = polyfit(jahr,frau,2); gama3 = q1(1); beta3 = q1(2); alpha3 = q1(3); %Ausgleichsparabel m_koerpergroesse_ii = alpha2 + beta2 * jahr + gama2 * (jahr).^2 w_koerpergroesse_ii = alpha3 + beta3 * jahr + gama3 * (jahr).^2 end % Die Funktion Ausgleichsrechnung aufrufen Ausgleichsrechnung % Matrix A und Vektor b für Ausgleichsgerade erstellen A = ones(18,2); A(1:18,2) = 1:18; b = m_koerpergroesse_i'; % Vektor für das Geschlecht m b1 = w_koerpergro0esse_i'; % Vektor für das Geschlecht w %Normalgleichungen bestimmen #A' * A * x = A' * b % Die linearen Gleichungssysteme lösen x = mldivide(A' * A , A' * b); %für das Geschlecht m x1 = mldivide(A' * A , A' * b1); %für das Geschlecht w % Matrix B und Vektor b für Ausgleichsgerade erstellen B = ones(18,3); B(1:18,2) = 1:18; B(1:18,3) = (1:18).^2; b2 = m_koerpergroesse_ii'; % Vektor für das Geschlecht m b3 = w_koerpergroesse_ii'; % Vektor für das Geschlecht w % Die linearen Gleichungssysteme lösen z = mldivide(B' * B , B' * b2); %für das Geschlecht m z1 = mldivide(B' * B , B' * b3); %für das Geschlecht w % Grafik darstellen plot(jahr,mann,'+',0:20,polyval(p,0:20)) hold on plot(jahr,frau,'o',0:20,polyval(q,0:20)) legend('mann','frau') % Residuum berechnen r = b - A*x; %Für das Geschlecht m von Ausgleichsgerade r1 = b1 - A*x1; %Für das Geschlecht w von Ausgleichsgerade r2 = b2 - B*z; %Für das Geschlecht m von Ausgleichsparabel r3 = b3 - B*z1; %Für das Geschlecht w von Ausgleichsparabel %Die euklidische Norm des Residuums berechnen for i = 1 : length(r) r_norm(i) = norm(r(i)); r1_norm(i) = norm(r1(i)); r2_norm(i) = norm(r2(i)); r3_norm(i) = norm(r3(i)); end %Residuum zeigen r_norm; r1_norm; r2_norm; r3_norm; end \sourceoff


   Profil
Kitaktus
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.09.2008
Mitteilungen: 6880
Wohnort: Niedersachsen
  Beitrag No.4, eingetragen 2021-05-17

Ohne Anspruch auf Vollständigkeit: a) Vielleicht liegt es an der unterschiedlichen Matlab-Version. Bei mir müssen die Zeichen innerhalb des disp-Befehls mit Apostrophen (') zusammengefasst werden, nicht mit Anführungsstrichen ("). b) Im Teil "Ausgleichsrechnung" verwendest Du "b = m_koerpergroesse_i';" Das sind die interpolierten Werte aus dem ersten Teil. Sinnvoll wären aber die Original-Daten. Das müsste Dir auffallen, wenn Du Dir die berechneten Residuen tatsächlich anzeigen lässt. c) Bei Plotten wäre es hilfreich, die Ausgleichskurven für Männer und Frauen unterschiedlich zu färben o.ä. Außerdem plottest Du vier Kurven, Deine Legende enthält aber nur zwei Einträge und die Zuordnung passt nicht. d) Du berechnest nicht die Norm des Residuums, sondern die Norm jedes einzelnen Wertes. Bemerkung 1: Mit der Verwendung von "polyfit" ziehst Du Dich geschickt aus der Affäre. Das ist die Funktion, bei der man eben nicht wissen muss, wie die lineare Algebra dahinter aussieht. Bemerkung 2: Was Du danach machst, ist fast genau das, worauf ich hinaus wollte. Wenn Du Dir die Hilfe von "mldivide" anschaust, wirst Du aber feststellen, dass die Multiplikation mit A' nicht nötig ist. In einem überbestimmten Gleichungssystem "Ax=b", berechnet die Funktion automatisch das x, das die 2-Norm des Residuums minimiert.


   Profil
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 122
  Beitrag No.5, vom Themenstarter, eingetragen 2021-05-17

Danke erstmal für deine Antwort! „ d) Du berechnest nicht die Norm des Residuums, sondern die Norm jedes einzelnen Wertes.“ Sollte einfach nur norm(r) schreiben? Aber in der Aufgabenstellung steht dass ich die euklidische Norm des Residuums zu jeder Lösung berechnen soll deswegen habe ich das so gemacht. Falsch?


   Profil
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 122
  Beitrag No.6, vom Themenstarter, eingetragen 2021-05-18

Könntest du mir bitte nur sagen was ich genau machen soll? Soll ich nur norm(r) berechnen? in der Aufgabenstellung steht dass ich die euklidische Norm des Residuums zu jeder Lösung berechnen soll deswegen habe ich das so gemacht. Habe ich falsch verstanden? Danke im Voraus für deine Antwort! :)


   Profil
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 122
  Beitrag No.7, vom Themenstarter, eingetragen 2021-05-19

?


   Profil
Kitaktus
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.09.2008
Mitteilungen: 6880
Wohnort: Niedersachsen
  Beitrag No.8, eingetragen 2021-05-19

Man interessiert sich ja dafür, wie gut die Ausgleichsgerade (-Parabel) den tatsächlichen Verlauf wiedergibt. Dafür ist nicht die Abweichung an einem Punkt entscheidend (die kann durchaus sehr klein sein), sondern die "Gesamtabweichung". Die naheliegendste Definition für diese "Gesamtabweichung" ist die Norm des Residuen-Vektors (Wobei es natürlich sehr viele Normen gibt, die dafür in Betracht kommen, hier ist nach der euklidischen Norm gefragt). In dieser Aufgabe wäre das "norm(r)". Im Text ist von mehreren Normen die Rede, da auch mehrere Ausgleichsprobleme gelöst werden.


   Profil
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 122
  Beitrag No.9, vom Themenstarter, eingetragen 2021-05-19

Wie ich verstanden habe, soll ich dann so schreiben : \sourceon MATLAB % Residuum berechnen r = b - A*x; %Für das Geschlecht m von Ausgleichsgerade r1 = b1 - A*x1; %Für das Geschlecht w von Ausgleichsgerade r2 = b2 - B*z; %Für das Geschlecht m von Ausgleichsparabel r3 = b3 - B*z1; %Für das Geschlecht w von Ausgleichsparabel norm(r) norm(r1) norm(r2) norm(r3) \sourceoff oder? Danke im Voraus! :)


   Profil
Kitaktus
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.09.2008
Mitteilungen: 6880
Wohnort: Niedersachsen
  Beitrag No.10, eingetragen 2021-05-20

Ja, so würde ich das machen.


   Profil
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 122
  Beitrag No.11, vom Themenstarter, eingetragen 2021-05-20

Danke für deine tolle Hilfe! :))


   Profil
s-amalgh
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 16.12.2020
Mitteilungen: 122
  Beitrag No.12, vom Themenstarter, eingetragen 2021-05-30

Hi Kitaktus, könntest du mir bitte dabei helfen? https://www.matheplanet.com/matheplanet/nuke/html/viewtopic.php?topic=254196&start=0&lps=1847097#v1847097 Danke im Voraus! :)


   Profil
s-amalgh hat die Antworten auf ihre/seine Frage gesehen.
s-amalgh hat selbst das Ok-Häkchen gesetzt.
s-amalgh wird per Mail über neue Antworten informiert.

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]