003
20.02.2016, 11:18 Uhr
ao
(Operator)
|
Und hier ist eine für Horner.
C++: |
#include <stdio.h>
/* * horner: * x: die zu untersuchende Stelle * n: Grad des Polynoms (höchste vorkommende Potenz) * a: Vektor der Koeffizienten. Die Länge ist um 1 größer als der Grad! */ double horner (double x, int n, double * a) { double y = 0; return y; }
int main (void) { /* Polynom definieren */ double coeff [] = { 36, -13, 1 }; /* x^2 - 13 x + 36 */ int n_coeff = sizeof (coeff) / sizeof (coeff[0]); /* * Achtung: n_coeff ist um 1 höher als der Grad des Polynoms! * Das wird in der Variablen grade berücksichtigt. */ int grade = n_coeff - 1; /* Wertetabelle, x = 0 .. 9 */ int i; for (i = 0; i < 10; i++) { /* Funktion horner aufrufen und Ergebnis speichern */ double x = i; double y = horner (x, grade, coeff); /* Tabelle ausgeben */ printf ("x = %lf | y = %lf\n", x, y); } return 0; }
|
Beachte, dass das 2. Argument von horner der Grad des Polynoms ist. Das ist um 1 weniger als die Länge des Koffizienten-Vektors. Das ist mathematisch gedacht sinnvoll, aber in C gedacht ziemlich bescheuert, weil es dazu zwingt, anders zu programmieren als üblich. Aber wenn die Funktion in der Aufgabe so definiert ist, dann halten wir uns dran. Behalt das im Hinterkopf.
Die main-Funktion tut nicht alles das, was in der Aufgabe 2 gefordert ist (Koeffizienten abfragen, Bereich für x, Schrittweite, Betrags-Minimum), sie testet nur die Funktion horner. Ein bisschen Fleißarbeit muss ja auch noch für dich bleiben ...
Zitat: |
Außerdem ist der betragsmäßig kleinste Funktionswert mit der Funktion absmin zu ermitteln und gemeinsam mit dem dazugehörigen x-Wert auszugeben.
|
Hier ist ein Widerspruch. So wie die Funktion absmin definiert ist (... int * amin), kann sie nicht den kleinsten Funktionswert bestimmen (dazu müsste amin vom Typ double* sein), sondern sie findet seinen Index im Array. Hast du irgendwas falsch abgeschrieben?
Natürlich kannst du, wenn du den Index hast, den zugehörigen Funktionswert einfach aus dem Array lesen. Umgekehrt ist komplizierter. Dieser Post wurde am 20.02.2016 um 11:56 Uhr von ao editiert. |