| FunktionPlotV4.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 for-Schleife und Berechnung der x-Werte direkt
6 * aus der Laufvariablen (ohne x-Inkrementierungen)
7 */
8 public class FunktionPlotV4 {
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 // für alle x-Werte im Intervall:
18
19 /**************************/
20 for (int i = 0; i <= n; i++) { // n + 1 Iterationen
21 /**************************/
22
23 // aus i kann x direkt (genauer) berechnet werden:
24 /********************/
25 double x = a + i * dx; // automatische Typumwandlung für i: int -> double
26 /********************/
27
28 double y = f(x);
29
30 int pos = (int) ( y / dx );
31
32 String s = positionszeichen(pos, 2, '*');
33
34 System.out.println(s);
35
36 }
37
38 }
39
40 /**
41 * Erzeugung einer Zeichenkette, die aus n Leerzeichen, gefolgt von einem Zeichen ch, besteht
42 */
43 private static String positionszeichen(int n, int k, char c) {
44
45 String s = ""; // mittels dieser lokalen Variablen wird das Ergebnis aufgebaut
46
47 // n*k-maliges Anfügen eines Leerzeichens
48 for(int i = 0; i < k*n; i++)
49 s += ' ';
50
51 // abschließendes Anfügen des Zeichens ch
52 s += c;
53
54 return s; // Rückgabe der fertigen Zeichenkette
55 }
56
57 /**
58 * Berechnung der Funktion -0.01*x^5 + 0.08*x^4 - 0.26*x^3 - 0.31*x^2 + 1.4*x + 2.36
59 */
60 private static double f(double x) {
61 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;
62 }
63
64 }
65