TweakPC

Zurück   Computer Hardware Forum - TweakPC > Games und Software > Programmiersprachen

Antwort
 
LinkBack Themen-Optionen Thema bewerten Ansicht
Alt 29.09.2012, 03:16   #1 (permalink)
Mega Hyperaktiver Nerd
 
Benutzerbild von Profi Overclocker
 

Registriert seit: 12.12.2009
Ort: Erkelenz
Beiträge: 7.512

Profi Overclocker ist ein wunderbarer AnblickProfi Overclocker ist ein wunderbarer AnblickProfi Overclocker ist ein wunderbarer AnblickProfi Overclocker ist ein wunderbarer AnblickProfi Overclocker ist ein wunderbarer AnblickProfi Overclocker ist ein wunderbarer Anblick

Standard [JAVA] Nullstelle(n) finden

Moin,
ich hoffe mal, ich finde hier ein paar Java fähigere als ich es bin ^^

Das zulösende Problem:
Es soll ein kleine Programm entstehen, welches von einer Ableitung (bis Grad eine Nullstelle bestimmt, dabei ist es unwichtig, wo diese liegt.
Mein Ansatz war es, dass man den exponent bzw. den Faktor eines Gliedes der Ableitung in Felder einträgt, hier liegt aber nicht mein aktuelles Problem, dass klappt soweit wie es soll.
Viel mehr ist es im Nachhinein eine Nullstelle zu finden, bzw. funktioniert dies nicht.
Wofür das ganze? Die Aufgabe wurde als Zusatz zwar im Mathe LK gestellt, weil wir des öfteren mal eine Nullstelle "erraten" müssen, was aber bei einigen Funktionen alles andere als gemütlich ist. (Hornerchema etc.)
Nun ist soweit bekannt, dass Nullstellen der Ableitung sich erraten lassen, indem man Teiler der Konstante verwendet. Dabei bilden der Positive als auch der Negative Betrag der Konstante die Spanne in welcher die Nullstellen liegen (deren X-Koordinate).

Um das ganze zu beschleunigen, soll eine Art binärsuche Programmiert werden.
Nach verteilung der Variablen und der gleichen, bekomme ich folgende Zeile raus, welche zum berechnen des Wertes für f'(x) geeignet ist. (In der GUI werden die Werte der Ableitung bereits schon eingetragen).

diese Laute wie folgt:
Zitat:
calc = (Math.pow(a,aa)*x) + (Math.pow(b,bb)*x) + (Math.pow(c,cc)*x) + (Math.pow(d,dd)*x) + (Math.pow(e,ee)*x) + (Math.pow(f,ff)*x) + (Math.pow(g,gg)*x) + (Math.pow(h,hh)*x) + i;
calc bildet dabei meine Variable zum speichern des Ergebnisses. i bildet die Konstante.

Nun zum eigentlichen Problem:
Ausgehen von einem Wert von 4000 für i ergibt sich die Spanne von -4000 bis +4000 für i (soll im späteren Verlauf eingegrenzt werden können, wenn zum Beispiel ein Wort >0 gesucht wird).
Folglich war mein Ansatz:
n = -4000
z = 4000
zuerst wurden diese Werte betrachtet, falls mit einem dieser sich eine Nullstelle ergab, war das Problem schon gelöst.
Danach began die "Suche".
Dazu nahm ich mit den Mittelwert beider Zahlen (0) und setzte ein. Je nach konstante war das Ergebnis enstprechend positiv oder negativ.

Nun wurde zuerst abgefragt, ob dieser Wert 0 entsprach (anfags natürlich nicht, tolleranz von 0.0001 war gegeben sowohl nach oben als auch nach unten). Sollte diese Bedingung im späteren Verlauf stimmen, wurde die abbruchbedingung der "While-Schleife" auf true gesetzt, die errechnete Koordinate in eine ausgabe Variable gespiechert etc.

Die nächste zu prüfende Bedingung war es, ob das Ergebnis durch einsetzen von 0 ober oder unterhalb von 0 lag.

lag es unterhalb (also zu niedrig) wurde n auf den zuvor berechneten Mittelwert gesetzt, andersherum lag das Ergebnis oberhalb wurde z auf den Mittelwert gesetzt. Soweit die Theorie. Nun sollte sie der Wert für calc immer weiter der 0 annähern, bis dieser im Tollerenzbereich lag.
Mein Problem jedoch war es, nie einen realistichen Wert zu erhalten. Der Wert lies sich beeinflussen etc. Ergebnisse stimmten leider nicht. (Einfach Funktionen und mit bsp. Geogebra gegengeprüft).

Beispielsweise f'(x)=2x^2-2, die Nullstellen wären ja dementsprechend 1 bzw. -1. Mein Ergebnis lag deutlich unterhalb bei 0.5.

Ich hoffe hier kann mir wer helfen
Wenn noch infos gebraucht werden, gerne melden^^

btw. das verwendete Prog. nennt sich "Java-Editor".

Main:
MSI Z170A GAMING PRO|Intel Core i7 6700k|AMD RX VEGA 64
|AMD Radeon Pro Duo |AMD Radeon Fury X|Samsung 950 Pro NVMe M2 256 GB|Cougar Panzer Max|LEPA G1600 1600W

Server:
ASUS Z6PE-D18|Intel Xeon X5670|Intel Xeon X5670|96GB RAM Hynix DDR3 1333 RDIMM ECC|HP P410 1GB FBWC


In Bau - AMD Dragon Platform:
ASUS M3A79-T Deluxe|AMD Phenom II X4 940BE|Scythe Mugen 2 Rev. B|ATI Radeon HD480X2|ATI Radeon HD4870X2|CoolerMaster HAF932

Geändert von Profi Overclocker (29.09.2012 um 19:00 Uhr)
Profi Overclocker ist offline   Mit Zitat antworten
Alt 29.09.2012, 18:48   #2 (permalink)
The real MacGyver
 
Benutzerbild von Fakk-asrock
 

Registriert seit: 10.02.2005
Ort: L/A
Beiträge: 5.486

Fakk-asrock ist ein wunderbarer AnblickFakk-asrock ist ein wunderbarer AnblickFakk-asrock ist ein wunderbarer AnblickFakk-asrock ist ein wunderbarer AnblickFakk-asrock ist ein wunderbarer AnblickFakk-asrock ist ein wunderbarer AnblickFakk-asrock ist ein wunderbarer AnblickFakk-asrock ist ein wunderbarer Anblick

Standard AW: [JAVA] Nullstelle(n) finden

ehm, bringt dich das Newtonverfahren vllt weiter? weil du ja Zahlen nur auf eine Genauigkeit suchen kannst, ist villeichte eine Annäherung besser?

Newton-Verfahren
Fakk-asrock ist offline   Mit Zitat antworten
Für diesen Beitrag bedankt sich:
Profi Overclocker (29.09.2012)
Alt 29.09.2012, 19:02   #3 (permalink)
Mega Hyperaktiver Nerd
 
Benutzerbild von Profi Overclocker
 

Registriert seit: 12.12.2009
Ort: Erkelenz
Beiträge: 7.512

Profi Overclocker ist ein wunderbarer AnblickProfi Overclocker ist ein wunderbarer AnblickProfi Overclocker ist ein wunderbarer AnblickProfi Overclocker ist ein wunderbarer AnblickProfi Overclocker ist ein wunderbarer AnblickProfi Overclocker ist ein wunderbarer Anblick

Standard AW: [JAVA] Nullstelle(n) finden

Hehe, danke ^^
Das hab ich mir bereits mal durchgelesen, hab jetzt meins so hinbekommen wie es laufen soll

Zitat:
calc = (Math.pow(a,aa)*x) + (Math.pow(b,bb)*x) + (Math.pow(c,cc)*x) + (Math.pow(d,dd)*x) + (Math.pow(e,ee)*x) + (Math.pow(f,ff)*x) + (Math.pow(g,gg)*x) + (Math.pow(h,hh)*x) + i;
hier lag der Fehler
um es kurz zu halten:
anstatt wie vorher (Math.pow(a,aa)*x) (als kleines Beispiel) muss es aber (Math.pow(x,aa)*a) lauten und somit lief es dann auch
Sp spät läuft nunmal nicht mehr alles rund xD
Profi Overclocker ist offline   Mit Zitat antworten
Antwort

Stichworte
java, nullstellen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir erlaubt, neue Themen zu verfassen.
Es ist dir erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Performanceengpass finden matse71 Overclocking - Übertakten 12 16.04.2007 14:12
Anwendung (JAVA) als Service starten Pirke Windows & Programme 10 17.07.2006 22:16
Person finden sofl Off Topic 3 03.12.2005 20:39
JAVA applet Problem HyperY2K Programmiersprachen 2 25.04.2005 07:08
Wo bekomme ich JAVA Virtual Machine Firefighter Windows & Programme 3 22.11.2002 14:25


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:11 Uhr.




Powered by vBulletin® Version 3.8.10 (Deutsch)
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.
Impressum, Datenschutz Copyright © 1999-2015 TweakPC, Alle Rechte vorbehalten, all rights reserved