Anzahl an Matlab Nachkommastellen erhöhen

Neue Frage »

MacYdanim Auf diesen Beitrag antworten »
Anzahl an Matlab Nachkommastellen erhöhen
Hallo Board,

Wie der Titel schon sagt, wüsste ich gerne wie man die Anzahl an dargestellten Nachkommastellen in Matlab erhöhen kann.
Mit "format long" werden mir nicht genug Stellen angezeigt. Ich soll eine Aufgabe mit Exaktheit von 50 Nachkommastellen lösen und wüsste gerne ob ich einfach per Befehl die Anzahl der dargestellten Ziffern erhöhen kann.
Suche bei Google und im Matheboard haben mir leider nicht geholfen.

Danke im vorraus !
rad238 Auf diesen Beitrag antworten »

Hallo,

beachte:

ld(10^50) = 166,0964....

Mein Prozessor hat keine Wortbreite von 167 Bit. Ich habe nur 64 Bit. Von daher erscheint mir Dein Ansinnen nicht leicht erreichbar.

Aber grundsätlich (für realistische Genauigkeiten) kann man das z.B. so machen:

test=rand(1,1);
precision=10;
num2str(test,precision)

Das geht bei mir bis precision=17. Wenn Du mehr haben willst musst Du irgendwie geschickt rechnen... evt. rekusiv die Reste berechnen oder so...


Vgl. auch

doc num2str
Tom Servo Auf diesen Beitrag antworten »

Hallo,

wenn du symbolisch rechnest gibt es mit vpa die Möglichkeit, beliebig viele Stellen zu nehmen. Das setzt aber die Toolbox für symbolisches Rechnen voraus.

Gruß, Tom
jabaa Auf diesen Beitrag antworten »

Ich weiß, Beitrag is schon uralt. Aber ich bin heute morgen darüber gestolpert und so werden es wohl auch andere tun. Da ich nix gefunden habe, habe ich selbst was gemacht:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
function [ str ] = mult_array(a,b)     
   str = 0;    
   c = 0;
   for z1 = 1:numel(a)+numel(b)
      c = floor(c/10);
      for z2 = 1:z1
         if z2 <= numel(a) && z1-z2+1 <= numel(b)
            c = c + a(end-z2+1)*b(end-(z1-z2+1)+1);
         end
      end
      str(1) = mod(c,10);
      str(2:end+1) = str(1:end);
   end
   str(1:end-1) = str(2:end);
   str(end) = [];
end


Wichtig ist, die Funktion erwartet keine Zahlen sondern Arrays mit jeweils den Ziffern. Also statt a=123 muss man a=[1,2,3] übergeben und bekommt auch ein Array zurück. Dadurch kann man direkt weiterrechnen und nur zu Anfang und zum Schluss muss umgewandelt werden. So wird die maximale Genauigkeit nich mehr durch den Prozessor sondern durch den Speicher beschränkt. Is wahrscheinlich verdammt langsam und auch nich gut implementiert, aba es erfüllt vollkommen seinen Zweck
jabaa Auf diesen Beitrag antworten »

Achja, habs jetz mit 41 Stellen erfolgreich getestet, weil ichs halt dafür brauchte. Wie weit es kann, weiß ich nich und werde ich wohl auch erstma nich mehr brauchen smile
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »