21: Funktionen 5 – Zeichnen einer kubischen Funktion

 

Zeichnen Sie die kubische Gleichung

y = ax^3 +bx^2 +cx+d

in einem vorgegebenen Intervall. Zeichnen Sie auch die Koordinatenachsen ein.

Lösung

Zur Lösung dieser Aufgabe wird die Datei unibwm.jar benötigt. Sie kann in der Eclipse Umgebung in den Projektoptionen unter “add external jar” hinzugefügt werden.

import java.util.Scanner; 	// Scanner für die Eingabe von Werten
import unibwm.*;			// Grafik für die Ausgabe des Polynoms

public class Aufgabe21
{
	static final int iFaktor = 10; // streckt die Kurve

	public static double PolynomWert(double a, double b, double c
			, double d, double x)
	{ // Berechnet den Wert des Polynoms an der Stelle x
		return (a * (x*x*x)+b * (x*x)+c * x+d);
	} // end PolynomWert

	public static Grafik ZeichnePolynom(double a, double b, double c
			, double d, double dLinkeGrenze, double dRechteGrenze)
	{ // Zeichnet das Polynom im gewählten Intervall
		// Variablen Deklaration
		double dMin, dMax;
		Grafik gfkAusgabe = new Grafik();

		// Variablen Initialisierung
		dMin = 0;
		dMax = 0;

		// Berechnung des Polynoms an allen Stellen im Intervall
		for (double dPos = dLinkeGrenze; dPos < dRechteGrenze;
				dPos += 1. / iFaktor)
		{
			gfkAusgabe.addLine(dPos * iFaktor, PolynomWert(a, b, c, d, dPos),
					(dPos+1. / iFaktor) * iFaktor,
					PolynomWert(a, b, c, d, dPos+1. / iFaktor));
			if (PolynomWert(a, b, c, d, dPos) < dMin)
				dMin = PolynomWert(a, b, c, d, dPos);
			if (PolynomWert(a, b, c, d, dPos+.1) > dMax)
				dMax = PolynomWert(a, b, c, d, dPos);
		} // end for

		// Zeichnen des Koordinatensystems
		gfkAusgabe.addLine(dLinkeGrenze * iFaktor, 0,
				dRechteGrenze * iFaktor, 0);
		gfkAusgabe.addLine(0, dMin, 0, dMax);

		return gfkAusgabe;
	} // end ZeichnePolynom

	public static void main(String[] args)
	{
		//Variablen Deklaration
		double a, b, c, d, dLinkeGrenze, dRechteGrenze;
		Scanner scnEingabe = new Scanner(System.in);

		// Variablen Initialisierung
		System.out.println("Bitte Werte eingeben für a, b, c, d:");
		a = scnEingabe.nextDouble();
		b = scnEingabe.nextDouble();
		c = scnEingabe.nextDouble();
		d = scnEingabe.nextDouble();
		System.out.println("Bitte linke und rechte Grenze eingeben:");
		dLinkeGrenze = scnEingabe.nextDouble();
		dRechteGrenze = scnEingabe.nextDouble();

		// Zeichnen des Polynoms mit eingegebenen Werten
		ZeichnePolynom(a, b, c, d, dLinkeGrenze, dRechteGrenze).show("asd");
	} // end main
} // end class