006
23.08.2009, 07:22 Uhr
Hans
Library Walker (Operator)
|
Hi,
@beefy: Nur mal so nebenbei: Hast Du das Problem mit dem Funktionsplotter inzwischen gelöst, und den passenden Algorithmus gefunden?
Ich hab mich jetzt noch mal etwas mit GNUplot und der Vorgehensweise aus dem oben genannten Buch beschäftigt. Nach einigem herum fummeln kam für die Funktion cos(x^2) * x ein Bild heraus, das der Wahrheit ziemlich nahe kommen dürfte. Da ich jetzt nicht weis, wie das mit den Bildern funktioniert, poste ich hier mal das Programm, das die Wertetabelle berechnet hat, und das "Skript" für GNUplot.
C++: |
/* Datei: cos-xqx.c
Kurzes Programm zum erstellen einer Wertetabelle der Funktion cos(x^2)*x für GNUplot.
Nach dem ersten Beispiel aus: Elementare Numerik für Techniker, Datenanlyse und Modellbildung - Programmierung mit C und Grafikprogrammierung mit GNUplot; von Jörg Birmelin und Christian Hupfer; Vieweg+Teubner, Wiesbaden 2008, ISBN 978-3-8348-0603-1; Seite 4ff */
#include <stdio.h> #include <stdlib.h> #include <math.h>
#define dx 0.001
int main() { int i=0; double x, y; FILE *f_ptr = NULL;
f_ptr = fopen("cosxqx.csv", "w+");
for (i=-10000; i<10000; i++) { x = i*dx; y = (cos(x*x)) * x;
/* Daten in Datei schreiben */ fprintf (f_ptr, "%0.5f %0.15f\n", (0 + i*dx), y); } fclose (f_ptr); return 0; }
|
(Das produziert mal eben so rund 500KB Daten.)
Und für GNUplot:
Code: |
reset set size nosquare unset key set grid set xrange [-10:10] set yrange [-10:10] set xtics 2 set ytics 2 plot 'cosxqx.csv' title 'Tangensfunktion' with points 0
|
Interessant ist auch, wenn man GNUplot die Funktion danach mal selber berechnen lässt. Das Ergebniss im Intervall von etwa [-1.7, 1.7] erscheint noch halbwegs brauchbar. Den Rest kann man eher mit einer kaputten Säge vergleichen... Soweit noch mal mein Senf dazu.
Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. |