Polynominterpolation mit M16C

Gast #136825
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
Gast #136826
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 ;-))
Gast #136827
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
Gast #136832
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
Angehängte Dateien:
Gast #136835
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 :)
Gast #136836
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.
Gast #136837
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
Gast #136838
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?
Gast #136840
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.