Entwickler-Ecke
Sonstiges (Delphi) - Mathematische Zeichen in Delphi?
Swordooo - Mi 02.07.08 18:40
Titel: Mathematische Zeichen in Delphi?
Hi,
Ich möchte schon seit Längerem ein Programm basteln, dass mir eine Wurzel zieht (undzwar sehr viele Kommastellen!).
Hier ist eine Beispielaufgabe aus der Schule:
Finde die Wurzel aus 52! (√52)
√52 = √13*4
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| 1.) Schritt:13+4 = 8,5 2
2.) Schritt: 52 = 6,1 8,5
3.) Schritt: 8,5+6,1 = 7,3 2
4.) Schritt: 52 = 7,123 7,3
5.) " 7,3+7,123 = 7,2115 2 |
usw... Das ist die Methode, wie man Wurzeln mit der Hand zieht. Hätte da jem. eine Idee, wie man das in Delphi verwirklichen kann?
MfG Swordooo
Moderiert von
Narses: Code-Tags hinzugefügt und Punkte entfernt
FinnO - Mi 02.07.08 18:48
tjaa.. Canvas würde ich sagen
Hidden - Mi 02.07.08 18:57
Hi,
Willst du:
- Die Delphi-Entsprechung 'Sqrt()' für Wurzel 2?
- Eine sehr genaue Wurzel? -> mehr als 19 Nachkommastellen, wie sie 'Extended' bietet? Es gibt auch vordefinierte Datentypen zum rechnen mit großen Zahlen.
- (Wirklich, wie es aus dem Titel hervorgehen könnte das Wurzelzeichen zeichnen?)
Versuch mal die code- bzw. delphi-Tags. die dürften deine Formatierung erhalten.
mfG,
Swordooo - Mi 02.07.08 19:00
ist canvas nicht für Grafische Darstellungen da?
---
Moderiert von
Narses: Beiträge zusammengefasst---
ohh danke.
Sqrt() ist genau das was ich suche und dann mach ich das mit Extended.
Gibt es eine grenze bei Extended (Kommsstellen, generelle Länge)?
Ich glaube Extended geht von: 3,4 x 10^-4932 bis 1,1 x 10^4932, aber ich dachte immer Extended hat nur 20 Nachkommastellen und ist 10 Byte groß?
Hidden - Mi 02.07.08 19:08
Hi,
Swordooo hat folgendes geschrieben: |
ist canvas nicht für Grafische Darstellungen da? |
Ja, er hat nur den Titel gelesen. Deshalb auch meine mehr oder weniger dumme Frage zu deinem Post weiter oben. Bin aber gerade dabei, nen Algorithmus zu zu schreiben und mache gleich nen Edit.
Edit1:
Schau mal hier [
http://www.epinasoft.com/delphikurs/dkk_datatypes.html].
Edit2: So. größere Genauigkeit als Sqrt() bekommst du aber nur, wenn du die Zahlen anders speicherst.. da bräuchtest du imho einen Datentypen wie bigint oder so, der nicht im Standard-Delphi enthalten ist.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| function GetAccurateSqrt(X: Extended): Extended; var Speicher1, Speicher2: Extended; tmpTimer: TTimer; begin Speicher1 := X / 2; Speicher2 := 2; tmpTimer := TTimer.Create(nil); tmpTimer.Interval := 100; tmpTimer.Tag := 0; tmpTimer.Enabled := true; repeat Speicher1 := (Speicher1 + Speicher2) / 2; Speicher2 := X / Speicher1; until tmpTimer.Tag = 1; tmpTimer.Free; result := Speicher2; end;
procedure GetAccSqrt_TimeOut(Sender: TObject); begin (Sender as TTimer).Tag := 1; end; |
So, zu den Problemen: Wie o.ä., bräuchtest du wahrscheinlcih einen besonderen Datentypen, damit es sich lohnt - imho unrealistischer Aufwand ;) .
Ich habe gerade überlegt, was man am besten als Startwerte für V1, V2 nimmt und bin zu dem Schluss gekommen: Am besten Sqrt(X), Sqrt(X) :lol:
Das sind die beiden größtmöglichen Teiler, damit erhältst du am Ende die größte Genauigkeit^^
mfG,
Swordooo - Mi 02.07.08 19:36
Jo Danke für deine Mühe!
FinnO - Mi 02.07.08 21:22
zu meiner Verteidigung:
ICh dachte, er möchte die Bruchstriche, die er in seinem Post so mühsam mit
234*24*24
....2
dargestellt hat in Delphi anzeigen. sonst hätte ich auch sqrt gesagt ^^
Martok - Mi 02.07.08 21:39
Hidden hat folgendes geschrieben: |
Ich habe gerade überlegt, was man am besten als Startwerte für V1, V2 nimmt und bin zu dem Schluss gekommen: Am besten Sqrt(X), Sqrt(X) :lol:
Das sind die beiden größtmöglichen Teiler, damit erhältst du am Ende die größte Genauigkeit^^ |
Super, um die Wurzel zu berechnen benutze ich die Wurzel :roll:
FinnO - Mi 02.07.08 21:59
hat doch was ^^
Hidden - Mi 02.07.08 22:14
Hidden hat folgendes geschrieben: |
Ich habe gerade überlegt, was man am besten als Startwerte für V1, V2 nimmt und bin zu dem Schluss gekommen: Am besten Sqrt(X), Sqrt(X) :lol: |
Martok hat folgendes geschrieben: |
Super, um die Wurzel zu berechnen benutze ich die Wurzel :roll: |
Deshalb ja das :lol: -Simley. Mit anderen Worten: Bei dieser Art von Berechnung erhalte ich stets eine kleinere Genauigkeit als mit Sqrt(), da diese Methode die größte Genauigkeit bei Startwert Sqrt(), Sqrt() hat.
mfG,
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!