![]() |
Re: Prüfen ob Zahl irrational ist
Erst ma sollte es für den PC kein Problem sein zumindest zu prüfen ob ein Wurzelausdruck irrational ist und Zwar so:
1. Gehen wir von einer Summe aus: sqrt(367+91*2) 2. So nun Formen wir die Wurzel so um, dass aus der Summe ein Produkt wird (dieser Schritt gilt nur zur verdeutlichung, dass man ein Produkt benötigt) 3. Nun Haben wir: sqrt(549) 4. Nun zerlegen wir das ganze in Primzahlen sqrt(183*3) sqrt(61*3*3) So geht nicht weiter Jetzt radizieren wir teilweise: sqrt(61)*3 So da die Wurzel von Primzahlen immer irrational ist wisssen wir, das die Endzahl auch irrational ist Ich dachte es gäbe eine Function in Delphi di sowas drauf hat gibts aber anscheinend nicht (wäre interessant sowas ma selbst zu programieren) Das jetzt erst mal unabhängig zum Dreieck Im bezug auf das dreieck gibt es glaub ich keins das die anforderungen erfüllt :( Man wasn mist Naja egal DAnke Axxus |
Re: Prüfen ob Zahl irrational ist
Zitat:
@Axxus: Das ist genau meine Vorgehensweise - Primfaktorzerlegung mit nicht-ganzen (halben *g* ?) Exponenten =>[1] Irrationalität. [1]Schön, wenn's auch anderherum ginge... |
Re: Prüfen ob Zahl irrational ist
Zitat:
Delphi-Quellcode:
function IsSqrtIrrational(Zahl: Integer): boolean;
var I,Z: Integer; begin Result:=false; For I:=2 to Zahl Do begin Z:=0; While Zahl/I = Zahl div I Do begin Zahl:=Zahl div I; Inc(Z); end; If Z/2<>Z div 2 then begin Result:=true; exit; end; end; end; |
Re: Prüfen ob Zahl irrational ist
Hier nochmal eine Version ohne exit...
Delphi-Quellcode:
Gruss
function IsSqrtIrrational(Zahl: integer): boolean;
var i, z: integer; begin Result:=false; i:=2; while (i <= Zahl) and not Result do begin z:=0; while Zahl/i = Zahl div i do begin Zahl:=Zahl div i; inc(z); end; Result:=(z/2 <> z div 2); inc(i); end; end; Thorsten |
Re: Prüfen ob Zahl irrational ist
Die beiden Funktionen sagen auf geniale - wenn auch umständliche - Art und Weise aus, wann das Ergebnis vom Radizieren der zu untersuchenden Zahl nicht ganzzahlig ist. (Also False bei 0, 1, 4, 9, 16, 25, 36 ... etc. pp.). Toll. Etwas weit vom Thema ab, aber ansonsten toll. :???: :wink:
Im Ernst: Was soll das bringen? |
Re: Prüfen ob Zahl irrational ist
Zitat:
Zitat:
Zitat:
Wenn man eine Funktion schreiben wollte, die als Parameter eine Kommazahl enthält und von dieser wissen will, ob sie irrational ist, müsste man sich ein neues Zahlenformat ausdenken, da die vorhandenen reellen Typen alle irrationalen Zahlen auf rationale Zahlen rundet (wie ja schon gesagt wurde). Dieses neue Format müsste noch ein paar zusätzliche Bits für mögliche Wurzeln haben. |
Re: Prüfen ob Zahl irrational ist
Zitat:
//Nachtrag: Ich bin schon ganz kirre und habe wahrscheinlich den Faden verloren. Nur dass wir uns nicht missverstehen: Ein nicht ganzzahliges Ergebnis vom Wurzelziehen aus einer Ganzzahl ist irrational. Aber den Bezug zum eigentlichen Problem dieses Threads habe ich irgendwie verloren. :? |
Re: Prüfen ob Zahl irrational ist
Zitat:
|
Re: Prüfen ob Zahl irrational ist
Zitat:
|
Re: Prüfen ob Zahl irrational ist
Zitat:
Für die Frage, wie man prüfen kann, ob eine Zahl rational ist oder nicht (wie es auch in der Überschrift steht), könnte man die Prozedur "IsSqrtIrrational" gut gebrauchen. Die Zahl müsste nur in einem anderen Format gespeichert sein, z.B. so:
Code:
Eine Zahl in solch einem Format könnte man - im Gegensatz zu Extended o.ä. - einer Funktion "IsIrrational" übergeben. In dieser Funktion müsste dann "IsSqrtIrrational" aufgerufen werden.
2^23*0,9375*Sqrt(44)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz