kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Anwendung der Methode der kleinsten Quadrate mit Scilab

  • Im stationären Zustand fallen alle Ableitungen nach der Zeit in den Modellgleichungen weg.
  • Das bedeutet, man erhält einfache algebraische Gleichungen.
  • In ihnen gelten nun die Parameter als Variablen und die Bewegungsgrößen als aus der Meßreihe bekannt.
  • Verwendung der elektrischen Teilmodell-Gleichung:
BILDBESCHREIBUNG

Bild 0-1: Elektrisches Teilmodell im stationären Zustand.

  • Mit den Messungen aus Code 7.1.4: Stationäre Messung ergibt sich dann folgendes lineare Gleichungssystem als Grundlage für die Methode der kleinsten Quadrate:
BILDBESCHREIBUNG

Bild 0-2: LGS aus Messungen und stationärer Gleichung.

  • In dem Gleichungssystem entspricht die erste Spalte der Matrix B dem Strom in A, die zweite der Winkelgeschwindigkeit in rad/s.
  • Letztere ergibt sich aus der gemessenen Frequenz nach der Formel ω=2πf/n, wobei n=12 die Anzahl der Löcher der Lochscheibe ist.
  • Im Vektor b stehen die gemessenen Spannungen.
  • Vektor r beinhaltet die Residuen (Fehler), deren Quadrate zu minimieren sind.
  • Durch Lösung des folgenden linearen Gleichungssystems können nun die Parameter k und R bestimmt werden:
BILDBESCHREIBUNG

Bild 0-3: Zu lösendes LGS.

  • Dabei bestimmt sich die Matrix A und der Vektor b wie folgt:
BILDBESCHREIBUNG

Bild 0-4: Bestimmung von A und b.

  • Durch dieses Vorgehen werden die Fehlerquadrate minimiert.
  • Das folgende Scilab-Programm liest die Tabelle mit den Meßwerten ein und bestimmt wie gerade beschrieben R und k.
//Vorbereitung: mit cd <Pfad> in das Verzeichnis gehen, wo sich die Meßdaten befinden

//Matrix mit Meßdaten laden:
M = M=fscanfMat("stationaer2.txt")

//Dimensionen feststellen:
[zeilen,spalten] = size(M)


//Konstante PI merken:
PI = 3.1415926535897932384626433832795

//Matrix B erzeugen:
//2. Spalte von M mal 0.001 wird erste von B
//3. Spalte von M mal 2pi/12 wird zweite von B
B = [M(:,2).*0.001,M(:,3).*(2.0*PI/12.0)]

//Matrix d sind die negativen Werte der Spannung U, also die erste Spalte von M:
d = M(:,1).*(-1.0)

//Bestimmung von k und R:
//Scilab bietet schon die Kleinste Quadrate-Methode als Funktion an, der man einfach B und -d übergibt.
//Hier muß man anders, als wenn man es von Hand macht nicht d, sondern -d übergeben:
c = lsq(B,-d)

//liefert hier:
//R = 15.706362
//k = 0.0166143

//Wir können aber auch A und b bestimmen und das LGS lösen:
A = B'*B
b = B'*d

//Das Gleichungssystem kann über die inverse Matrix von A gelöst werden:
c2 = inv(A)*(-b)
//(es wird das gleiche Ergebnis wie oben geliefert.)
 

Code 0-1: Scilab-Programm zur Bestimmung von R und k mittels der Methode der kleinsten Quadrate.

Download der Meßdaten und des obigen Scilab-Skripts

Diskussion

  • Mit R=15,7Ω wird hier ein stark abweichender Wert von den gemessenen 24Ω berechnet.
  • Daher stellt sich die Frage, ob das berechnete k brauchbar ist.
  • Alternativ wird nun der bekannte ohmsche Widerstand in die Rechnung eingesetzt und nur k bestimmt.
//Matrix mit Meßdaten laden:
M=fscanfMat("stationaer2.txt")

//Dimensionen feststellen:
[zeilen,spalten] = size(M)


//Konstante PI merken:
PI = 3.1415926535897932384626433832795

//Matrix B erzeugen (hier wird nur die Spalte mit Omega zur Bestimmung von k verwendet):
//2. Spalte von M mal 0.001 wird erste von B
//3. Spalte von M mal 2pi/12 wird zweite von B
B = [M(:,3).*(2.0*PI/12.0)]

//Matrix d sind die negativen Werte der Spannung U, also die erste Spalte von M,
//aber hinzu kommt nun das bekannte I*R, mit R=24Ohm (und Umrechnung von mA in A)
R=24.0
d = M(:,1).*(-1.0) + M(:,2).*(R*0.001)

//Bestimmung von k:
//Scilab bietet schon die Kleinste Quadrate-Methode als Funktion an, der man einfach B und -d übergibt.
//Hier muß man anders, als wenn man es von Hand macht nicht d, sondern -d übergeben:
c = lsq(B,-d)

//liefert hier:
//k = 0.0159620

//Wir können aber auch A und b bestimmen und das LGS lösen:
A = B'*B
b = B'*d

//Das Gleichungssystem kann über die inverse Matrix von A gelöst werden:
c2 = inv(A)*(-b)
//(es wird das gleiche Ergebnis wie oben geliefert.)
 

Code 0-2: Scilab-Programm zur Bestimmung von k bei Vorgabe von R mittels der Methode der kleinsten Quadrate.

Diskussion

  • Obwohl R sehr stark variiert zwischen beiden Berechnungen, wird k ungefähr gleich berechnet:
  • Berechnung1: k=0.0166143
  • Berechnung2: k=0.0159620
  • Somit sind die Werte relativ vertrauenswürdig.
Download der Meßdaten und der beiden obigen Scilab-Skripte.