|
|
NewbieHilfe: Skript "Ab wann ist n = n+1" (double |
|
Klötzchen |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.10.2015, 16:06
Titel: NewbieHilfe: Skript "Ab wann ist n = n+1" (double
|
 |
|
 |
|
Hallo,
Ich habe Matlab (nach einigen Komplikationen mit meinem Linuxrechner) heute aufgrund meiner Hochschule istalliert. Leider habe ich so gut wie keinerlei Vorerfahrungen beim Programmieren.
Ich soll bis Montag diese Aufgabe lösen und bin ehrlich gesagt etwas ratlos, wie ich das anfangen soll.
Durch einige Recherchen bin ich inzwischen so weit, dass ich mir von Matlab zwei Zahlen vergleichen lassen kann und es mir per Textausgabe sagt, ob die Zahlen identisch sind oder nicht.
if x == y
disp ('Zahlen sind identisch')
else
disp ('Zahlen weichen von einander ab')
end
Aber ich kann ja jetzt nicht jede einzelne Zahl durchprobieren um den Grenzwert herauszufinden.
Immerhin bin ich durch probieren schon so weit gekommen, dass ich weiß, dass mein gesuchter Grenzwert irgendwo zwischen 10^15; und 10^16; liegt.
Ich habe zwar herausgefunden, wie ich Zahlenreihen erstellen kann, aber für diesen Bereich sagt mir Matlab nur, dass es zu viele Zahlen sind...
Kann mir jemand einen Tipp geben, wie ich dieses Problem lösen kann bzw. wie ich jetzt weiter komme?
Ich bin wirklich für jede Hilfe dankbar!
Liebe Grüße,
Klötzchen (das irgendwie auf der Leitung steht...)
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 10.10.2015, 16:20
Titel:
|
 |
Hallo,
denk doch mal dran, dass ein Rechner im Binärsystem arbeitet. Es wird also einen Punkt geben, in dem 2^n und 2^n - 1 noch unterscheidbar sind, 2^n und 2^n + 1 aber nicht mehr. Du brauchst also nur diese Kombinationen durchzutesten.
Grüße,
Harald
|
|
|
Klötzchen |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.10.2015, 08:57
Titel:
|
 |
|
 |
|
Hallo Harald,
Danke erstmal für deine schnelle Antwort. Gibt es denn irgendeine andere Möglichkeit als durchprobieren und abfragen um auf den richtigen Wert zu kommen?
Wir solen ja ein Skript abgeben, von daher bin ich ziemlich sicher, dass "Ich habe so lange probiert bis ..." nicht wirklich als Antwort zählen wird.
Wie gesagt, der Logik folgend hätte ich jetzt versucht diese beiden Bedingungen (also n+1 kann nicht mehr unterschieden werden, n-1 aber noch) mit Hilfe einer Zahlenreihe herauszufinden.
Aber der Zahlenbereich den ich durch probieren und raten herausgefunden habe ist für Matlab einfach noch zu groß... :/
(Siehe mein erster Beitrag)
Gibt es da noch irgendeinen Trick oder eine Möglichkeit, dass er die Zahlen durch einen gewissen (mir unbekannten) Befehl selbstständig einsetzt und durchprobiert?
Oder muss ich das ganze im Zweifelsfall durch mehrere kleinere Zahlenreihen bewerkstelligen?
Da liegt eigentlich mein Hauptproblem. Ich weiß nicht ganz wie ich dem Programm erklären soll was ich will
Liebe Grüße!
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 11.10.2015, 10:04
Titel:
|
 |
Hallo,
Zitat: |
Wir solen ja ein Skript abgeben, von daher bin ich ziemlich sicher, dass "Ich habe so lange probiert bis ..." nicht wirklich als Antwort zählen wird. |
Die Idee ist ja auch, durchprobieren zu lassen statt durchprobieren ;)
Also nicht händisch die zu überprüfenden Zahlen einzugeben, sondern MATLAB dies automatisch machen zu lassen. Da bietet sich z.B. eine
while
-Schleife an.
Zitat: |
Aber der Zahlenbereich den ich durch probieren und raten herausgefunden habe ist für Matlab einfach noch zu groß |
Wie du die Anzahl der durchzuprobierenden Zahlen stark einschränken kannst, habe ich dir ja gesagt: du brauchst bloß die 2er-Potenzen durchzuprobieren.
Grüße,
Harald
|
|
|
Klötzchen |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.10.2015, 14:53
Titel:
|
 |
|
 |
|
Danke Harald für deine Hilfe!
Ich habe so tatsächlich das passende Ergebnis gefunden.
Allerdings muss ich zugeben, dass ich keine Ahnung habe, warum ich so rechnen darf...
% Aufgabe 2-4.)
% Schreiben Sie ein MatLab-Skript zur Bestimmung der kleinsten natürlichen
% Zahl n , für die n und n+1 die gleiche Darstellung mit dem double -Datentyp
% besitzen (und daher nicht unterschieden werden können).
n = 0;
while 2^n ~= 2^(n)+1
n =n+1;
end
disp ('n=')
disp (n)
if 2^n == (2^n)+1
disp ('2^53 ist laut Matlab das Selbe wie (2^53)+1')
end
if 2^n ~= (2^n)-1
disp ('2^53 kann von Matlab von (2^53)-1 unterschieden werden')
Aber wieso stimmt dieses Ergebnis?
Wie gesasgt, ich habe leider keinerlei Vorkenntnisse und bin darum diesbezüglich ein wenig überfragt.
Klar, ein Computer arbeitet binär, also nur mit zwei verschiedenen Operanten. Aber wie man davon jetzt auf den Rechenweg schließen kann ist mir ehrlich gesagt genauso schlüssig wie eine chinesische Tageszeitung...
Es wäre super wenn du mir das vielleicht nochmal erklären könntest!
Liebe Grüße,
das Klötzchen
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 11.10.2015, 15:43
Titel:
|
 |
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|