Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Prüfen ob Zahl irrational ist (https://www.delphipraxis.net/88460-pruefen-ob-zahl-irrational-ist.html)

Axxus 15. Mär 2007 21:21

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

Khabarakh 15. Mär 2007 21:39

Re: Prüfen ob Zahl irrational ist
 
Zitat:

Zitat von Nikolas
- Wie sieht denn dann die Primfaktorzerlegung von 4/5 aus?

2² * 5^-1
@Axxus: Das ist genau meine Vorgehensweise - Primfaktorzerlegung mit nicht-ganzen (halben *g* ?) Exponenten =>[1] Irrationalität.

[1]Schön, wenn's auch anderherum ginge...

HannosG 15. Mär 2007 22:42

Re: Prüfen ob Zahl irrational ist
 
Zitat:

Zitat von Axxus
Erst ma sollte es für den PC kein Problem sein zumindest zu prüfen ob ein Wurzelausdruck irrational ist und Zwar so:
...
wäre interessant sowas ma selbst zu programieren

Dem stimme ich zu. :wink:

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;

omata 16. Mär 2007 00:14

Re: Prüfen ob Zahl irrational ist
 
Hier nochmal eine Version ohne exit...

Delphi-Quellcode:
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;
Gruss
Thorsten

IngoD7 16. Mär 2007 08:21

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?

Cöster 16. Mär 2007 10:21

Re: Prüfen ob Zahl irrational ist
 
Zitat:

Delphi-Quellcode:
Zahl/i = Zahl div i
{...}
z/2 <> z div 2;

:gruebel: Wofür wurde eigentlich mod erfunden. . .

Zitat:

Zitat von IngoD7
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.)

Richtig, und in allen anderen Fällen ist das Ergebnis irrational.

Zitat:

Zitat von IngoD7
Etwas weit vom Thema ab

Axxus hat in Beitrag #21 von so einer Funktion gesprochen, HannosG hat sie implementiert. Das dumme ist nur, dass die Funktion nur mit ganzzahligen Parametern funzt.


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.

IngoD7 16. Mär 2007 10:53

Re: Prüfen ob Zahl irrational ist
 
Zitat:

Zitat von Cöster
Richtig, und in allen anderen Fällen ist das Ergebnis irrational.

Wo steht das denn geschrieben?

//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. :?

Cöster 16. Mär 2007 12:05

Re: Prüfen ob Zahl irrational ist
 
Zitat:

Zitat von IngoD7
Zitat:

Zitat von Cöster
Richtig, und in allen anderen Fällen ist das Ergebnis irrational.

Wo steht das denn geschrieben?

Nenn mir ein Gegenbeispiel: Eine ganze Zahl, dessen Wurzel weder ganzzahlig noch irrational ist.

IngoD7 16. Mär 2007 12:10

Re: Prüfen ob Zahl irrational ist
 
Zitat:

Zitat von Cöster
Zitat:

Zitat von IngoD7
Zitat:

Zitat von Cöster
Richtig, und in allen anderen Fällen ist das Ergebnis irrational.

Wo steht das denn geschrieben?

Nenn mir ein Gegenbeispiel: Eine ganze Zahl, dessen Wurzel weder ganzzahlig noch irrational ist.

Das ist zwar nicht die Antwort auf meine Frage :wink: , aber ist auch wurscht --> siehe mein Nachtrag im Vorposting (hat sich überschnitten).

Cöster 16. Mär 2007 12:38

Re: Prüfen ob Zahl irrational ist
 
Zitat:

Zitat von IngoD7
Aber den Bezug zum eigentlichen Problem dieses Threads habe ich irgendwie verloren. :?

Was ist deiner Meinung nach das eigentliche Problem des Threads? Die Frage nach dem gleicheseitigen Dreieck, dessen Höhe und Seitenlänge beide rationale Zahlen sind, wurde ja schon längst geklärt.

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:
2^23*0,9375*Sqrt(44)
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 Uhr.
Seite 3 von 4     123 4      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz