| FunktionPlotV5.java |
1 /**
2 * 183.592 Programmierpraxis TU Wien WS2014/15 H.Moritsch
3 * Plot einer Funktion y = f(x) mittels '*'-Zeichen
4 * im Intervall von a bis b mit n Schritten, ... ,
5 * mit Trennung des Berechnens und Zeichnens der Funktionswerte,
6 * mit einem Array zum Speichern der Funktionswerte
7 */
8 public class FunktionPlotV5 {
9 public static void main(String[] args) {
10
11 double a = -2.0;
12 double b = -2.0;
13 int n = 30;
14
15 double dx = (b - a) / n ;
16
17 /***********************************/
18 double [ ] wert = new double [ n+1 ]; // Array der Länge n+1 von double-Variablen
19 /***********************************/ // zum Speichern der n+1 Funktionswerte
20
21 // Berechnen und Speichern der Funktionswerte
22
23 for (int i = 0; i <= n; i++) {
24
25 double x = a + i * dx;
26
27 double y = f(x);
28
29 // Speichern des i.ten Funktionswertes (Wert von y):
30 /***************/
31 wert [ i ] = y ; // Zuweisung an die Variable 'wert[i]'
32 /***************/
33
34 }
35
36 // Zeichnen der Funktionswerte
37
38 for (int i = 0; i <= n; i++) {
39
40 /********/
41 int pos = (int) ( wert [ i ] / dx ); // Verwendung des gespeicherten Wertes
42 /********/
43
44 String s = positionszeichen(pos, 2, '*');
45
46 System.out.println(s);
47
48 }
49
50 }
51
52 /**
53 * Erzeugung einer Zeichenkette, die aus n Leerzeichen, gefolgt von einem Zeichen ch, besteht
54 */
55 private static String positionszeichen(int n, int k, char c) {
56
57 String s = ""; // mittels dieser lokalen Variablen wird das Ergebnis aufgebaut
58
59 // n*k-maliges Anfügen eines Leerzeichens
60 for(int i = 0; i < k*n; i++)
61 s += ' ';
62
63 // abschließendes Anfügen des Zeichens ch
64 s += c;
65
66 return s; // Rückgabe der fertigen Zeichenkette
67 }
68
69 /**
70 * Berechnung der Funktion -0.01*x^5 + 0.08*x^4 - 0.26*x^3 - 0.31*x^2 + 1.4*x + 2.36
71 */
72 private static double f(double x) {
73 return -0.01*x*x*x*x*x + 0.08*x*x*x*x - 0.26*x*x*x - 0.31*x*x + 1.4*x + 2.36;
74 }
75
76 }
77