WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Function fuer Fakultaet

 

Anilla
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 19.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.03.2016, 13:42     Titel: Function fuer Fakultaet
  Antworten mit Zitat      
Hallo,
ich bin ganz neu und mit Matlab sehr unerfahren. Ich habe folgende Funktion geschrieben:
Code:

function[fakultaet]=f(n)
n=200
A=(1:n)
fakultaet=prod(A)
end
 

Funktioniert aber für kleine Zahlen. Für 200 bekomme ich:
Code:

Was heiß das? Was mache ich falsch?
Danke!
edit winkow. code umgebung umformatiert
Private Nachricht senden Benutzer-Profile anzeigen


huhu0815
Forum-Century

Forum-Century


Beiträge: 141
Anmeldedatum: 20.02.14
Wohnort: Dresden
Version: R2013b, R2014b, R2016b, R2018a
     Beitrag Verfasst am: 19.03.2016, 14:12     Titel:
  Antworten mit Zitat      
Hallo Anilla,

du machst bei deiner Function nichts falsch. Der Grund hängt einfach in der Auflösbarkeit der Datentypen. MATLAB arbeit standardmäßig mit Gleitkommazahlen vom Typ double. Das sind 64 Bit in der Auflösung. Nebenbei gibt es z.B. auch:

single: Fließkomma 32 bit
double: Fließkomma 64 Bit
intX: Festkomma X=8,16,32
uintX: Festkomma ohne Vorzeichen X=8, 16, 32

die maximalen Wertebereiche kannst du mit
Code:
ndoubleMAX = realmax('double') % maximaler Wertebereich von double
ndoubleMIN = realmin('double') % minimaler Wertebereich von double


herausfinden. Also ist in deinem Fall bei n = 171 schluss mit der Auflösung und es wird (Inf)inity ausgegeben.

Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Anilla
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 19.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.03.2016, 14:28     Titel:
  Antworten mit Zitat      
Vielen Dank huhu0815!
Das bedeutet, dass ich die Max-Grenzwerte auch ändern kann, oder?
Tut mir leid, dass ich wieder frage, aber wie mache ich das? Ich bin Neulinge und kurz vor Abgeben, sorry!
_________________

Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
huhu0815
Forum-Century

Forum-Century


Beiträge: 141
Anmeldedatum: 20.02.14
Wohnort: Dresden
Version: R2013b, R2014b, R2016b, R2018a
     Beitrag Verfasst am: 19.03.2016, 14:46     Titel:
  Antworten mit Zitat      
nein du kannst die grenzen nicht ändern. die sind fest.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.03.2016, 18:02     Titel:
  Antworten mit Zitat      
Hallo,

so sähe die Funktion besser aus:
Code:
function[fakultaet]=f(n)
% n=200 <-- überschreibt das Eingabeargument, also keine gute Idee.
A=(1:n); % <-- unterdrückt Ausgabe im Command Window
fakultaet=prod(A);
end


Die einzige mir bekannte Möglichkeit, mit so großen Zahlen zu arbeiten, ist vpa :
Code:
vpa('factorial(200)', 10)


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 20.03.2016, 18:12     Titel:
  Antworten mit Zitat      
falls die toolbox nicht vorhanden ist giebt es auch im fex einiges.
ich könnte mir vorstellen das auch das hier klappt.
http://www.mathworks.com/matlabcent.....cision-integer-arithmetic
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.