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