Hallo zusammen, ich müsste die Koeffitienten für ein Polynom 2. Grades aus endlich vielen Punkten ermitteln. Kann mir jemand eine Funktion zur ermittlung für den M16C zur Verfügung stellen ? Keine Ahnung wie die Umsetzung aussehen könnte. Vielen Dank im voraus !! m.f.G Stefan Laux
Wenn Du es etwas verständlicher ausdrücken könntest, kann ich mal nachschauen, ob ich was für Dich tun kann. (Ich hoffe, Dein µC hat viel Speicher ;-))
Hallo Tex, nett von Dir dass Du mir helfen möchtest. Was war den Unverständlich ? Ich versuche einfach noch mal mein Problem zu beschreiben. Ich möchte über den AD- Wandler Daten einlese, die ich linearesiert wieder ausgeben muß (Teach In Funktion). Um eine Korrektur vornehmen zu können, benötige ich eine Funktion die mir aus meinen Messdaten ca. 100 Stützpunkten einen Polynominterpolation berechnet. Die 3 dazugehörenden Koefftienten für Polynom 2. Grades sollen dann zur verfügung stehen. m.f.G Stefan Laux
In Excell kann man das ganz einfach. Oder musst du die Koeffizienten im Prozessor rechnen?
Der µC soll eine Eichfunktion übernehmen. Also muß die Berechnung im µC ablaufen. m.f.G Stefan Laux
Hi du mußt halt eine Approximation deiner Punktmenge mit einer Polynomfunktion zweiten Grades realisieren. Das läuft darauf hinaus ein LGS (in deinem Fall mit 3 unbekannten) zu lösen. Wie du dieses LGS aufstellst sollte in jeder besseren Formelsammlung zu finden sein. So aus dem Kopf siehe Anhang. Das LGS lößt man dann nach dem Gaußschen Algorithmus. Matthias
@Mr_Boertsch Ich glaube nicht dass er in der Lage ist ein Gerät zu eichen, höchstens kalibrieren kann er.
@benedikt aha. hab schon gedacht du glaubst nicht, dass Excell das kann*g*
Geht am einfachsten mit Newton-Differenzenschema; das ganze ist übrigens eine Interpolation, keine Approximation. geg. x1,x2,x3 und y1,y2,y3 p(x) = y1 + C1(x-x1) + C2(x-x1)(x-x2) C1 = (y2-y1)/(x2-x1) = h1 C2 = (h2-h1)/(x3-x1) h2 = (y3-y2)/(x3-x2) Auflösen musst Du selber :)
M16C hab ich keine Ahnung von. Ich hab mal was ähnliches in einen 80537 gequetscht. Der hat ein paar 4Byte Multiplikations / Divisionsregister mit denen man die Rechenzeit in erkläglichen Grenzen halten konnte. 535 ist bei der Nummer kläglich verreckt. Diese Summe über ... bis ... löst Du in form von for-Schleifen auf. Du wirst vieleicht Probleme mit dem Speicher bekommen. Verwende alle Variablen, die Du nicht mehr brauchst doppelt und dreifach weiter. Am einfachsten geht es, wenn Du Dir mal ein Beispiel Deines Polynoms zu Fuss ausrechnest. Dann hast Du alle Steps die Du brauchst.
Hi @sepp es ist eine Approximation. Bei einer Interpolation läuft die Kurve durch alle gegebenen Punkte. D.h. du brauchst für ein Polynom zweiten Grades mindestens 3 Punkt. Hast du mehr nimmt man drei Punkte aus dieser Menge bzw. findet evtl. keine Lösung. In der Praxis hat man aber oftmals mehr Punkte und muß diese mit einer Kurve gegebenen Grades mit möglichst kleinem Fehler approximieren. Matthias
Oh ok ich dachte aus 3 Punkten. Dann ists in der Tat 'ne Approximation. Wie wär's mit Gaußscher Fehlerquadratmethode mit Polynom 2. Grades als Modellfunktion?
Hi und genau das müßte http://www.mikrocontroller.net/attachment.php/141579/approx.png sein. Matthias
Die Beiträge sind ja ganz interssant ! Aber meine eigentlich Frage war, hat jemand von euch eine solche Polynominterploation schon mal programmiert. Wäre es möglich den Quellcode einen solchen Funktion zu bekommen. Leider bin ich nicht in der Lage das Umzusetzen. Bin erst vor kurzem in die C- Programmierung eingestiegen. m.f.G Stefan Laux
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.