![]() |
Prüfen ob Zahl irrational ist
HI Delphianer :hi:
Wie kann ich abfragen ob eine Zahl irrational ist Soll eine bedingung werden also so
Delphi-Quellcode:
Wie lautet der Befehl???
If Zahl <> irrational Then
begin ... end; DAnke im vorraus Axxus |
Re: Prüfen ob Zahl irrational ist
Zitat:
greetz Mike |
Re: Prüfen ob Zahl irrational ist
ich glaube, du wirst schon daran scheitern, dass der computer keine irrationale zahlen darstellen kann. ansonsten wird es dafür keinen einzelnen befehl geben.
|
Re: Prüfen ob Zahl irrational ist
[1. Teil gelöscht wegen rotem Kasten]
Möglich ist es natürlich trotzdem. Dann kannst du aber für dein Programm nicht die Standardfließkommatypen nehmen. Also besser gesagt: Was ist bei dir "Zahl"? Und reicht es dir auf Periodizität zu prüfen, wenn du nur 20 Stellen hast (inkl. Vorkommastellen)? |
Re: Prüfen ob Zahl irrational ist
Ok also folgendes:
Ich denke wer in der 9. KLasse Gimy ist (war) wird die Formel der Höhe eines gleichseitigen Dreiecks in Abhängigkeit von der Seitenlänge kennen Formel: h = sqrt(s²-(s/2)²) So Jetzt brauch ich ein Dreieck, bei dem Weder die Seitenlänge, noch die Höhe irrational ist :???: Und dass wollt ich mit einer Zählschleife berechnen. Aber wie kann ich jetzt prüfen, ob die Höhe rational oder irrational ist unabhängig davon ob der PC die irrationale Zahl anzeigen kann :wall: Axxus |
Re: Prüfen ob Zahl irrational ist
Er kann sie nicht nur nicht anzeigen. Er kann sie auch nicht speichern. Wie denn auch?
Wieso darf die Seite denn nur rational sein? Edit: Und was ist denn das für eine formel? |
Re: Prüfen ob Zahl irrational ist
Was das für eine Formel ist? Das ist die Formel für die Höhe im gleichseitigen Dreieck. So nebenbei, du müsstest eigentlich nur auf Quadratzahlen testen.
|
Re: Prüfen ob Zahl irrational ist
@Axxus: Das ist nicht dein Ernst, oder? Es ist ja nicht so, dass schon allein die rationalen Zahlen unendlich dicht wären... :stupid: .
h = sqrt(3)/2 * a Aus der Formel wird ersichtlich, dass der 3-Exponent von h um 0,5 größer ist als der von a. Damit können aber nicht beide gleichzeitig ganz sein -> mindestens eine Variable irrational. Zitat:
@sirius: Die Form kommt mir auch etwas unnütz vor, aber im Kern ist die Formel schon richtig. @3_of_8: Was nicht funktioniert, muss erst gar nicht getestet werden. |
Re: Prüfen ob Zahl irrational ist
Zitat:
Einen Wert (eine Zahl) als irrational zu bestätigen erfordert den Beweis, dass die Nachkommastellen dieses Wertes bei Dezimaldarstellung tatsächlich nie abbrechen und nicht periodisch sind. Welche Computerformel sollte das können? Wann immer du in deinem Dreieck einen Dezimalwert hast, der nicht freiwillig nach x Nachkommastellen abbricht (oder periodisch geworden ist), kannst du dir nicht mehr sicher sein, dass genau dieser Wert vielleicht nicht doch irrational ist. |
Re: Prüfen ob Zahl irrational ist
Zitat:
Du suchst zwei rationale Zahlen p und q, so dass p=sqrt(3)*q Dann kannst du p als a/b und q als c/d (Elemente aus Z/{0}) darstellen. Damit hast du dann sqrt(3)=(cb)/(da), womit dann sqrt(3) rational wäre. Da das nicht der Fall ist, kannst du dein rationales Dreieck vergessen. (ausser natürlich der triviale Fall mit einem entarteten Dreieck a=c=0 :-D ) Zitat:
|
Re: Prüfen ob Zahl irrational ist
Zitat:
![]() |
Re: Prüfen ob Zahl irrational ist
Zitat:
Zitat:
|
Re: Prüfen ob Zahl irrational ist
Zitat:
|
Re: Prüfen ob Zahl irrational ist
Zitat:
|
Re: Prüfen ob Zahl irrational ist
Zitat:
Zitat:
h = a * sqrt(3) / 2 = 2^1 * 3^1 Auch egal, nehmen wir einfach deinen Beweis :mrgreen: . |
Re: Prüfen ob Zahl irrational ist
Zitat:
Zitat:
|
Re: Prüfen ob Zahl irrational ist
Liste der Anhänge anzeigen (Anzahl: 1)
Hmm sind nicht alle Wurzeln aus Zahlen, bei dennen nicht eine ganze Zahl rauskommt irrational?
Bye Christan Edit: hab mal ein wenig rumumgestellt =p |
Re: Prüfen ob Zahl irrational ist
Zitat:
Zitat:
|
Re: Prüfen ob Zahl irrational ist
- Wie sieht denn dann die Primfaktorzerlegung von 4/5 aus?
- Ich glaube er meint natürliche Zahlen. |
Re: Prüfen ob Zahl irrational ist
|
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)
|
Re: Prüfen ob Zahl irrational ist
Zitat:
Zitat:
In mehreren Postings wurde daraufhin irgendwie erklärt, dass man ja eine irrationale Zahl nicht einmal in den Computer eingeben könne und sich daher ihre Überprüfung auf Irrationalität von selbst verbietet. Das hat auch jetzt noch Bestand. Und das eigentliche Thema wäre damit beendet gewesen. Dass aber in Wirklichkeit keine Zahl, sondern ein Ausdruck überprüft werden soll (wie beispielswiese sqrt(2)), das kam erst später. In weiterem Threadverlauf wurde dann immer wieder "Zahl" mit "Ausdruck" oder "Formel" verwechselt. Zuletzt gerade hier wieder: Zitat:
Wir müssen uns jetzt nicht daran aufhängen, aber mich hat das im Threadverlauf verwirrt. In eben diesem Thread wurde dann also irgendwann gesagt, dass es um ein gleichseitiges Dreieck ginge, indem weder Seitenlänge noch Höhe irrational sein dürften. Ab da ging ein wildes "Getummel" los, dem ich nicht folgen konnte. Es wurde Primfaktorisierung ins Spiel gebracht etc. pp. Wozu? Eigentlich hätte doch die auch im Thread bereits genannte Formel für die Höhe h=sqrt(3)/2*a ausreichen müssen, um den Thread entgültig zu beenden. sqrt(3) ist irrational. Jedes Produkt aus einer irrationalen und einer rationalen Zahl ist auch wieder irrational. Die Höhe ist also immer irrational, es sei denn a ist irrational. Nur dann - bei "passenden" irrationalen a - hätte man eine Chance auf eine rationale Höhe. Wie man's aber auch dreht: Irgendeiner von beiden ist immer irrational in einem gleichseitigen Dreieck. Der Thread war damit aber nicht zuende, sondern irgendwie kam er auf die Irrationalität von Wurzelausdrücken. Das wurde dann auf Ganzzahlen beschränkt und so weit verfeinert, dass es in einer Funktion gipfelte, die feststellen kann, ob Quadratwurzeln aus Ganzzahlen irrational sind oder nicht. Real (also programmtechnisch) stellt das Ding lediglich fest, ob das Ergebnis des Radizierens einer Ganzzahl wieder eine Ganzzahl ergibt oder nicht (wenn nicht --> irrational, okay). Und da wunderst du dich, wenn ich frage, was das alles mit der eigentlichen Fragestellung zu tun hat? Also mit der Frage, die prinzipiell sogar schon lange vorher beantwortet war (oder hätte sein müssen). :wink: Ich gebe zu, ich habe diesen Zusammenhang weiterhin gesucht. Das dürfte auch "mein Problem" mit diesem Thread ausgemacht haben. :) |
Re: Prüfen ob Zahl irrational ist
Zitat:
Code:
(-1)^0 * 2^(16402 - 16383) * 1.9073486328125
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:22 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