Die Mathe-Redaktion - 24.07.2017 10:46 - Registrieren/Login
Auswahl
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps

Bücher
Englische Bücher
Software
Suchbegriffe:
Mathematik bei amazon
Naturwissenschaft & Technik
In Partnerschaft mit Amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden oder den Newsletter bestellen.

Der Newsletter Apr. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 614 Gäste und 18 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Zum letzten Themenfilter: Themenfilter:
Matroids Matheplanet Forum Index
Moderiert von Bilbo matph
Informatik » Angewandte Informatik » Polynomfunktion arduino
Druckversion
Druckversion
Autor
Universität/Hochschule J Polynomfunktion arduino
NoNameTI-30x
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 20.05.2016
Mitteilungen: 323
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2017-07-17 20:30


Ich weiß das ist hier kein Arduino Forum aber weil ich mit euch schon so gute Erfahrungen gemacht habe und es hier mehr ums programmieren geht, frag ich mal drauf los.
Ich habe 3 Polynome. Die Werte im Bereich von 0 bis 200 möchte ich an eine LED weiter geben die dann mehr oder weniger leuchtet. Bei 2 Polynomen klappt das auch ganz gut nur beim 3.aus irgendeinen Grund nicht.
Arduino
int LED3 = 9;
void setup()
{
  Serial.begin(9600);
}
static float f3(float x)
{   (((3.2e-6 * x - 0.0012) * x + 0.013) * x - 2.5) * x + 63;
}
void loop()
{float x2;
for (int x = 0; x <= 200; x++) {
 
   Serial.println(f3(x));
        analogWrite(LED3,f3(x));
     delay(50);
    }
    delay(10000);
}
Mit serial Plot kann ich mir den Graphen ansehen und dieser sieht leider ganz anders aus als jenen den ich bekomme wenn ich das ganze mit Matlab plotte. Woran kann das liegen? Findet ihr einen Fehler?
Danke schon mal im Voraus!



  Profil  Quote  Link auf diesen Beitrag Link
ligning
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 07.12.2014
Mitteilungen: 1566
Aus: Berlin
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2017-07-17 20:54


In der Funktion f3 fehlt das return-Statement.

Um solche Fehler zu vermeiden, empfiehlt es sich, die Warnungsmeldungen des Compilers zu beachten (bzw. ggf. zu aktivieren.)

Weitere Strategien: Erstmal einen sanity check, was passiert, wenn man eine simplere Funktion berechnen lässt? Einfach x wieder zurückgeben, oder konstant 42 oder sowas. Damit hättest du den Fehler hier schon gefunden.


-----------------
⊗ ⊗ ⊗



  Profil  Quote  Link auf diesen Beitrag Link
NoNameTI-30x
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 20.05.2016
Mitteilungen: 323
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2017-07-17 21:17


Mir ist der Fehler kurz nach dem posten aufgefallen. Leider ändert das nichts. Ich bin eher erstaunt das es ohne return das selbe Ergebnis geliefert hat. Die Werte passen einfach generell garnicht und gehen ins negative. Das dürften sie aber laut Plot nicht. Ich bin das Polynom auch schon x mal durchgegangen aber ich finde keinen Fehler. Der Plot zu dem Polynom hab ich in Matlab mit
for (x =1:200)
 
    f(x) = 3.2*10^(-6)*x^4 - 0.0012*x^3 + 0.13*x^2 - 2.5*x +63 berechnet 
 
end
 
plot(f)
berechnet? Ich weiß einfach nicht wo mein Fehler liegt!



  Profil  Quote  Link auf diesen Beitrag Link
ligning
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 07.12.2014
Mitteilungen: 1566
Aus: Berlin
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, eingetragen 2017-07-17 21:42


2017-07-17 21:17 - NoNameTI-30x in Beitrag No. 2 schreibt:
Mir ist der Fehler kurz nach dem posten aufgefallen. Leider ändert das nichts. Ich bin eher erstaunt das es ohne return das selbe Ergebnis geliefert hat.
Das Fehlen eines return-Statements ist nicht im engeren Sinne ein Fehler, es führt aber zu "undefiniertem Verhalten". In dem Fall wird es wohl so sein, dass das Ergebnis der Berechnung "zufällig" in dem gleichen Register stand, in dem der return-Wert erwartet wird. Ein Verhalten, auf das man sich nicht verlassen kann.

Es gibt übrigens im Forum eine edit-Funktion, mit der man seine Beiträge nachträglich ändern kann.


 Die Werte passen einfach generell garnicht und gehen ins negative.
Vergleiche mal genau die Koeffizienten in dem Matlab- und dem C-Beispiel, die stimmen nicht alle überein...

Deinen Matlab-Code kann man übrigens besser so schreiben:
Matlab
p = [3.2e-6 -0.0012 0.13 -2.5 63];
f = polyval(p, 1:200);



  Profil  Quote  Link auf diesen Beitrag Link
NoNameTI-30x
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 20.05.2016
Mitteilungen: 323
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, vom Themenstarter, eingetragen 2017-07-17 22:02


Tatsächlich ich hab den Fehler gefunden! Eine 0 war in meinem Arduino Sketch zu viel. Jetzt scheint es zu klappen! Danke wirklich vielmals das du dir die Zeit genommen hast und das mit mir durchgegangen bist!! Ich wäre da vermutlich lange nicht drauf gekommen weil ich die Formel echt oft überprüft habe und wirklich davon überzeugt war das sie stimmt!



  Profil  Quote  Link auf diesen Beitrag Link
NoNameTI-30x hat die Antworten auf ihre/seine Frage gesehen.
NoNameTI-30x hat selbst das Ok-Häkchen gesetzt.
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-2017 by Matroids Matheplanet
This web site was made with PHP-Nuke, a web portal system written in PHP. 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]