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