Autor |
Beitrag |
Swordooo
      
Beiträge: 119
W2K, Windows XP Professional
Delphi 2005 Personal, Delphi 7 Personal
|
Verfasst: Mi 02.07.08 18:40
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
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: Mi 02.07.08 18:48
tjaa.. Canvas würde ich sagen
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: 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,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
Swordooo 
      
Beiträge: 119
W2K, Windows XP Professional
Delphi 2005 Personal, Delphi 7 Personal
|
Verfasst: 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
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: 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.
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)
Das sind die beiden größtmöglichen Teiler, damit erhältst du am Ende die größte Genauigkeit^^
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
Swordooo 
      
Beiträge: 119
W2K, Windows XP Professional
Delphi 2005 Personal, Delphi 7 Personal
|
Verfasst: Mi 02.07.08 19:36
|
|
FinnO
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: 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
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Mi 02.07.08 21:39
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
FinnO
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: Mi 02.07.08 21:59
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Mi 02.07.08 22:14
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
|