Matroids Matheplanet Forum Index
Moderiert von mire2
Mathematische Software & Apps » Matlab » Lineare Ausgleichsrechnung und Normalgleichung
Druckversion
Druckversion
Autor
Universität/Hochschule J Lineare Ausgleichsrechnung und Normalgleichung
s-amalgh
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 16.12.2020
Mitteilungen: 103
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2021-05-15


Hallo zusammen, könnte mir jemand bitte dabei helfen?




Ich weiß nicht wie ich die Daten mit Ausgleichsgerade und Ausgleichsparabel bei Matlab approximieren soll.

Danke im Voraus! :)



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Kitaktus
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.09.2008
Mitteilungen: 6878
Wohnort: Niedersachsen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  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.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 16.12.2020
Mitteilungen: 103
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  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?



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 16.12.2020
Mitteilungen: 103
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  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! :)

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



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Kitaktus
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.09.2008
Mitteilungen: 6878
Wohnort: Niedersachsen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  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.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 16.12.2020
Mitteilungen: 103
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  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?



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 16.12.2020
Mitteilungen: 103
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  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! :)



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 16.12.2020
Mitteilungen: 103
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.7, vom Themenstarter, eingetragen 2021-05-19


?



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Kitaktus
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.09.2008
Mitteilungen: 6878
Wohnort: Niedersachsen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  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.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 16.12.2020
Mitteilungen: 103
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.9, vom Themenstarter, eingetragen 2021-05-19


Wie ich verstanden habe, soll ich dann so schreiben :
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)
 


oder?

Danke im Voraus! :)



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Kitaktus
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.09.2008
Mitteilungen: 6878
Wohnort: Niedersachsen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.10, eingetragen 2021-05-20


Ja, so würde ich das machen.



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


Danke für deine tolle Hilfe! :))



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


Hi Kitaktus, könntest du mir bitte dabei helfen?
LinkPolynominterpolation mit Lagrange-Polynomen
Danke im Voraus! :)



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
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.
Neues Thema [Neues Thema]  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]