[MATLAB] i rekurencja (duże liczby)
: 21 lip 2012, o 18:45
Witam!
Chciałem napisać prosty programik w MATLAB'ie, liczący \(\displaystyle{ f(n)}\) , gdzie:
\(\displaystyle{ f(0) = 1}\)
\(\displaystyle{ f(n) = 1 + n f(n-1)}\)
skleciłem coś takiego
Kod jak najbardziej działa, ale mam problem jak wyświetlić dokładną wartość dla nieco większych liczb, np. dla \(\displaystyle{ n=150}\) mam odpowiedź
Nie wiem też jak rozwiązać problem z liczeniem funkcji dla liczb większych niż 170, gdyż wtedy wyświetla mi
Głównie jednak chodzi mi o możliwość wyświetlania dokładnego wyniku, np. zamiast \(\displaystyle{ 1.5531e+263}\)
chciałbym, by mi pokazał
Problem rozwiązałem w C++ w ciągu 5 minut, gdyż miałem gotowy programik do liczenia silni dużych liczb poprzez traktowanie ich jako obiekty typu string... jednak MATLAB, który teoretycznie jest przeznaczony do różnego typu obliczeń chyba powinien mieć możliwość operowania na większych liczbach, albo przynajmniej wyświetlania dokładnego wyniku?
Niestety nie jestem jeszcze dobry w MATLAB'ie, stąd mój post tutaj
Pozdrawiam
Chciałem napisać prosty programik w MATLAB'ie, liczący \(\displaystyle{ f(n)}\) , gdzie:
\(\displaystyle{ f(0) = 1}\)
\(\displaystyle{ f(n) = 1 + n f(n-1)}\)
skleciłem coś takiego
Kod: Zaznacz cały
function a = sumasilniabinomial(n)
if n==0
a=1;
else
a=1;
for k=1:n;
a=1+k*a;
end
end
end
Kod: Zaznacz cały
ans =
1.5531e+263
Kod: Zaznacz cały
ans =
Inf
Głównie jednak chodzi mi o możliwość wyświetlania dokładnego wyniku, np. zamiast \(\displaystyle{ 1.5531e+263}\)
chciałbym, by mi pokazał
Kod: Zaznacz cały
15530587787816211682219642768268073428243574525577152573186625231647001894087190962465
86295932899263205825162408558809928658995715743976913170898272039427934247122194267442
77804734420224298185323081413896801104549583083214118879069441437623651199932805792771
830501
Niestety nie jestem jeszcze dobry w MATLAB'ie, stąd mój post tutaj
Pozdrawiam