Logarithmus Algorithmus

j_new

Mitglied
Hallo,

ich bin JAVA Anfänger und stehe vor folgendem Problem. Ich möchte n^2 * log(n) berechnen.
Jedoch ohne Hilfe von irgendeiner Math Bibliothek. Das heißt ich möchte mir den Algorithmus selbst überlegen.

n^2 habe ich so gelöst

Code:
int n = 5;
int k = 0;
		
//n*n
for (int i = 0; i < n; i++) {
	for (int j = 0; j < n; j++) {
		k = k + 1;
	}
}
System.out.println(k);

k ist hier mein Ergebnis

für log habe ich jetzt schon folgenden Denkanstoß bekommen: Intervallhalbierung
Code: (Breitenbeschränkung entfernen)

Code:
while (k > 0)
{
  k = k / 2; // integer-division!
}

Das kommt mir nu ein bisschen komisch vor, und ich weiß nicht wo hier dann mein Ergebnis stehen soll.
Kann mir da von euch vielleicht jemand weiterhelfen? Oder hat irgendjemand eine andere Idee wie man dieses Problem lösen kann? Ich habe bei google keinerlei passende Lösung gefunden.


Danke und liebe Grüße
 

j_new

Mitglied
Wenn ich so vorgehe, dann habe ich erst recht wieder das Problem, dass bei mir steht:

n = 2^x

ich will mir aber das x ausrechnen. Jetzt stehe ich wieder vor dem Problem, dass ich laut meinem mathematische Verständinss einen Log brauche, und genau diesen möchte ich ausprogrammieren, da ich erst dann von mir behaupten kann, dass ich den Algorithmus verstanden habe.
 

Landei

Top Contributor
Wenn ich so vorgehe, dann habe ich erst recht wieder das Problem, dass bei mir steht:

n = 2^x

ich will mir aber das x ausrechnen. Jetzt stehe ich wieder vor dem Problem, dass ich laut meinem mathematische Verständinss einen Log brauche, und genau diesen möchte ich ausprogrammieren, da ich erst dann von mir behaupten kann, dass ich den Algorithmus verstanden habe.

Häh? n = 2^x, also x = ln(n)/ln(2), und die verlinkte Formel kann den Logarithmus ausrechnen. Wo ist das Problem?

[Edit] Ach so, du bezogest dich anscheinend auf den Vorredner...
 

Crian

Top Contributor
Mache dir vorher klar, welche Operationen du verwenden willst (darfst), und welche nicht. Statt

Code:
int n = 5;
int k = 0;
		
for (int i = 0; i < n; i++) {
	for (int j = 0; j < n; j++) {
		k = k + 1;
	}
}
System.out.println(k);

täte es vielleicht ja auch


Code:
int n = 5;
int k = n * n;
System.out.println(k);

Eine mathematische Bibliothek wurde dafür nun auch nicht benutzt.
 

Landei

Top Contributor
Hier der natürliche Logarithmus ohne Bibliothek:

Java:
public class Logarithm {
    
    private static double sqrtE = 1.6487212707001281468486507878141635716537761007101480115750;
    
    private static double ln_x_smaller_2(double x) {
        double x_1 = x - 1;
        double power = 1.0;
        double result = 0;
        double delta = 1;
        double factor = 1;
        for(int i = 1; delta > 0.000000001; i++) {
            power *= x_1;
            delta = power / i;
            result += delta * factor;
            factor = -factor;
        }
        return result;    
    }
    
    
    public static double ln(double x) {
        assert (x > 0);
        int count = 0;
        while(x > 1.9) {
            x = x / sqrtE;
            count ++;
        }    
        return  0.5*count + ln_x_smaller_2(x);
    }
}

Die Genauigkeit lässt sich über delta steuern.

Dann gilt:
log2(x) = ln(x) / ln(2) = ln(x) / 0.69314718
 

Andi_CH

Top Contributor
noch die Version mit der Reihenentwicklung.

Java:
public class Logarithmus {

	private final static double epsilon = 1E-6;

	public static double abs (double value) {
		if (value <0)
			return value * -1.0;
		else
			return value;
	}

	public static double pow (double value, int exp) {
		if (exp == 1)
			return value;
		else
			return value * pow(value, exp - 1);
	}

	public static double ln(double value) {
		double k = ((value - 1.0) / (value + 1));
		double temp = 0.0;
		double lastResult = 0.0;
		int i = 1;
		do {
			lastResult = 2.0 * temp;
			temp += (1.0 / i) * pow(k, i);
			// System.out.println("Value : " + value + ", Zw.resultat : " + (2 * temp) + ", delta : " + abs(lastResult - 2.0*temp));
			i += 2;
		} while ((abs(lastResult - 2.0*temp) > epsilon) || (i>1E6));
		System.out.println("Anz loops : " + ((i-1)/2));
		return 2.0 * temp;
	}

	public static void main(String... args) {
		double lnres = ln(10);
		System.out.println(lnres);
		System.out.println(Math.pow(Math.E, lnres));
		System.out.println(Math.log(10));
		System.out.println(abs(Math.log(10)-lnres));
	}
}
 

Landei

Top Contributor
Statt die aktuelle Potenz von k jedesmal komplett neu zu berechnen, solltest du sie dir merken und einfach in der Schleife mit k² multiplizieren.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Jose05 Logarithmus zur Basis 2 Java Basics - Anfänger-Themen 7
L Logarithmus-Aufgabe Java Basics - Anfänger-Themen 8
D Methoden Logarithmus zur Basis 2 Java Basics - Anfänger-Themen 3
E Logarithmus Java Basics - Anfänger-Themen 10
K Abtastung des Logarithmus Java Basics - Anfänger-Themen 18
I Logarithmus oder Schleife? Java Basics - Anfänger-Themen 8
K Algorithmus entwickeln Java Basics - Anfänger-Themen 1
laxla123 Eigenschaften eines Algorithmus (determiniert vs.. deterministisch) Java Basics - Anfänger-Themen 2
C Gewinnspiel erstellen mit Algorithmus Java Basics - Anfänger-Themen 3
C negamax-Algorithmus für Tic-Tac-Toe spielt manchmal falsch Java Basics - Anfänger-Themen 10
H Minimax Algorithmus in Tic Tac Toe Java Basics - Anfänger-Themen 3
M Minimax-Algorithmus für Vier gewinnt Java Basics - Anfänger-Themen 11
ohneInformatik; Trockentest Algorithmus, mathematischen Zusammenhang angeben Java Basics - Anfänger-Themen 3
M Minimax-Algorithmus Java Basics - Anfänger-Themen 17
mervanpolat Binary Search Algorithmus ausführen Java Basics - Anfänger-Themen 1
J Rekursiver Algorithmus Java Basics - Anfänger-Themen 9
M monte carlo Algorithmus für 4 gewinnt Java Basics - Anfänger-Themen 12
izoards Sortier Algorithmus für Bounding Box Elememte Links nach Rechts und von Oben nach Unten Java Basics - Anfänger-Themen 33
S Algorithmus entwicklen, der zu einem gegebenen Datum die Jahreszeit ermittelt Java Basics - Anfänger-Themen 13
rosima26 Merge-Algorithmus Java Basics - Anfänger-Themen 53
C Ein Algorithmus soll schneller werden Java Basics - Anfänger-Themen 24
D Dijkstra Algorithmus Hilfe!! Java Basics - Anfänger-Themen 9
U Den Kuchen aufteilen - aber wie? (Rebalancing-Algorithmus) Java Basics - Anfänger-Themen 14
s_1895 Pseudocode Naiver Algorithmus Java Basics - Anfänger-Themen 17
H String verschlüsseln - eigener Algorithmus Java Basics - Anfänger-Themen 104
T Algorithmus für Index mit min-Wert Java Basics - Anfänger-Themen 2
Düsseldorf2002 Testen meines Algorithmus Java Basics - Anfänger-Themen 1
D Primzahlen Rechner nach Eratostenes von Kyrene Algorithmus Java Basics - Anfänger-Themen 2
KogoroMori21 Frage zum Euklidischen Algorithmus Java Basics - Anfänger-Themen 11
S Algorithmus java searchAll IKey Java Basics - Anfänger-Themen 4
S Algorithmus Datensätze einfügen wenn... Java Basics - Anfänger-Themen 26
KogoroMori21 MergeSort Algorithmus Java Basics - Anfänger-Themen 2
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
fendix Compiler-Fehler Algorithmus zur Bestimmung von Primzahlen Java Basics - Anfänger-Themen 7
S Algorithmus (reelle Zahl <65536 von dezimal zu dual) max. 10 Nachkommastellen Java Basics - Anfänger-Themen 4
G Algorithmus Graphen Java Basics - Anfänger-Themen 10
D Input/Output fehlerhafter Algorithmus zum Ersetzen von Array-Werten nach logischem Schema Java Basics - Anfänger-Themen 1
N Selection Algorithmus: Methode wird nicht erkannt (BlueJ) Java Basics - Anfänger-Themen 3
U Meinung zum Dijkstra Algorithmus Java Basics - Anfänger-Themen 6
U Dijkstra Algorithmus Laufzeit Java Basics - Anfänger-Themen 3
L Math.exp also eigenen Algorithmus Java Basics - Anfänger-Themen 2
Kirby.exe Algorithmus entwickeln Java Basics - Anfänger-Themen 37
M Algorithmus Max-Heap? Java Basics - Anfänger-Themen 3
I Labyrinth auf der Basis eines rekursiven Algorithmus Java Basics - Anfänger-Themen 27
CptK Best Practice Algorithmus nach jedem Schritt zum Visualisieren pausieren Java Basics - Anfänger-Themen 3
A Algorithmus effizienter machen Java Basics - Anfänger-Themen 1
V Algorithmus zur fortlaufenden Berechnung des duechscjnt Java Basics - Anfänger-Themen 1
M Dijkstra Algorithmus in Graphen auf mehrere verschiedene Knoten anwenden lassen Java Basics - Anfänger-Themen 11
O Labyrinth Algorithmus Java Basics - Anfänger-Themen 3
G Quicksort Algorithmus Java Basics - Anfänger-Themen 12
S Binäre-Suche Algorithmus Java Basics - Anfänger-Themen 1
D Algorithmus in Pseudocode mit log2(n) Operationen erstellen Java Basics - Anfänger-Themen 3
C Laufzeit eines Sortier-Algorithmus ermitteln Java Basics - Anfänger-Themen 4
H aufgabe java luhn algorithmus Java Basics - Anfänger-Themen 10
A Datenstruktur für Savings Algorithmus und Planung von kleinen Programmierprojekten Java Basics - Anfänger-Themen 1
J Algorithmus für eine Reihe implementieren Java Basics - Anfänger-Themen 2
S Dijkstra Algorithmus funktioniert nicht Java Basics - Anfänger-Themen 4
N Denksportaufgabe durch Algorithmus lösen Java Basics - Anfänger-Themen 2
S Problem mit einem rekursivem FloodFill Algorithmus Java Basics - Anfänger-Themen 62
B Algorithmus Square und Multiply Java Basics - Anfänger-Themen 3
J Algorithmus - Strings auf eigene Reihenfolge miteinander vergleichen Java Basics - Anfänger-Themen 4
D Frage Boyer-Moore Algorithmus Java Basics - Anfänger-Themen 7
M Komplexität Algorithmus Java Basics - Anfänger-Themen 8
H Zeichen im algorithmus Java Basics - Anfänger-Themen 4
B Code Verständnisfragen - FLoyd Warshall Algorithmus Java Basics - Anfänger-Themen 1
B Algorithmus zum entmischen einer Zahlenfolge Java Basics - Anfänger-Themen 15
X Minimax-Algorithmus über alle Kanten möglich? - Kanten darstellen Java Basics - Anfänger-Themen 1
T Algorithmus zur Überprüfung eines binären Suchbaums Java Basics - Anfänger-Themen 2
K Best Practice Algorithmus für Berechnung von Zahlenreihenfolge Java Basics - Anfänger-Themen 12
M Simpler Algorithmus läuft extrem langsam. Java Basics - Anfänger-Themen 3
K Erste Schritte Brute Force Algorithmus Java Basics - Anfänger-Themen 2
L Frage zu BubbleSort Algorithmus Java Basics - Anfänger-Themen 2
B gibt es ein Stundenplan-Algorithmus? Java Basics - Anfänger-Themen 11
O Algorithmus-Problem Java Basics - Anfänger-Themen 5
P Euklidischer Algorithmus Java Basics - Anfänger-Themen 9
L Greates Commong Dividend - euklidischer Algorithmus, modulos not positive Java Basics - Anfänger-Themen 5
J Euklidischer Algorithmus Java Basics - Anfänger-Themen 1
S Quicksort Algorithmus Java Basics - Anfänger-Themen 2
S GraphNode --- Dijkstra Algorithmus : NullPointerException Java Basics - Anfänger-Themen 1
B Rekursive Algorithmus schreiben Java Basics - Anfänger-Themen 8
V Algorithmus in einer Methode ausführen Java Basics - Anfänger-Themen 3
M Implementierung des Knuth-Morris-Pratt-Algorithmus Java Basics - Anfänger-Themen 0
M Dijkstras Algorithmus Java Basics - Anfänger-Themen 5
S Zusammenhang Datenstruktur/Algorithmus Java Basics - Anfänger-Themen 1
M Simulation - Algorithmus Java Basics - Anfänger-Themen 3
F Erste Schritte Hilfe beim Algorithmus finden Java Basics - Anfänger-Themen 8
D Algorithmus für Punkte auf einem Kreis Java Basics - Anfänger-Themen 0
D Algorithmus zu gegebener Laufzeit implementieren Java Basics - Anfänger-Themen 1
B Doppelte Werte aus Array entfernen ohne Import - Algorithmus Java Basics - Anfänger-Themen 5
C Ideen für einen Algorithmus Java Basics - Anfänger-Themen 1
F Best Practice Algorithmus optimieren - Binaeruhr Java Basics - Anfänger-Themen 2
S Euklid Algorithmus zur Berechnung des GGTs Java Basics - Anfänger-Themen 2
L Welcher Algorithmus ist das ? Java Basics - Anfänger-Themen 9
J Rekursiver Horner-Schema-Algorithmus - Verstehe ich ihn richtig? Java Basics - Anfänger-Themen 2
O Java Zufalls-Verteil-Algorithmus Java Basics - Anfänger-Themen 3
P ganz simpler algorithmus Java Basics - Anfänger-Themen 3
C Sortieren ohne Algorithmus Java Basics - Anfänger-Themen 8
J Algorithmus: Grad von floating zu Grad/Minute/Sekunde Java Basics - Anfänger-Themen 3
A Text Verschriebung/Algorithmus(?) Java Basics - Anfänger-Themen 8
R Rekursionsformel für Laufzeit von Algorithmus Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben