Hier ist ein Beispiel-Script double
-symbolic/vpa
Präzision Vergleich:
% Numeric approach
f_numeric = @(z) exp(z.^2);
Out_numeric = integral (f_numeric, 0, 1);
% Symbolic/vpa approach
syms x
f_symbolic(x) = exp(x^2);
Out_symbolic = int (f_symbolic, x, [0,1]);
% Comparison
fprintf('Numeric : %0.30f\n', Out_numeric)
fprintf('Symbolic : %s\n' , char (vpa (Out_symbolic, 32)))
fprintf('Converted: %0.30f\n', double (vpa (Out_symbolic, 32))) % back to double
Ausgang auf meinem Rechner (eps = 2.2204e-16):
Numeric : 1.462651745907181499717353290180
Symbolic : 1.462651745907181608804048586857
Converted: 1.462651745907181499717353290180
allgemeiner:
>> fprintf(' %0.32f\n %s\n', 1/3, char (vpa ('1/3', 32)))
0.33333333333333331482961625624739
0.33333333333333333333333333333333
Für eine Genauigkeit, die größer ist als das, was Ihr Gerät hardwaremäßig unterstützt, können Sie versuchen, die 'symbolic' Toolbox mit der Funktion' vpa' (variable precision arithmetic) zu verwenden. Oder Sie können einige der 'precision' Toolkits in Matlab FileExchange ausprobieren. –
In Ordnung, aber wie kann ein Integral beispielsweise nach E-20-Genauigkeit berechnet werden? (mit vpa ich denke) – Peter
Ich sollte auch darauf hinweisen, dass, da Sie Java-Klassen direkt aus Matlab/Oktave verwenden können, eine andere Option ist, nur auf vorhandene beliebige Präzise Funktionen in Java vorhanden. –