As an integer and as an floating point number
MATLAB: How to compute 3^301 as an integer
powernumber
Related Solutions
In this sequence you put a colon (:) instead of a semicolon (;). This is likely throwing the error —
10,15,4.3301;10,20,4.3301:
should be —
10,15,4.3301;10,20,4.3301;
With that correction, and the addition of a closing square bracket, this works —
joint = [0,0,4.3301;0,5,4.3301; 0,10,4.3301;0,15,4.3301;0,20,4.3301;... 0,25,4.3301; 0,30,4.3301; 0,35,4.3301;0,40,4.3301;5,0,4.3301;... 5,5,4.3301; 5,10,4.3301;5,15,4.3301;5,20,4.3301;5,25,4.3301;... 5,30,4.3301; 5,35,4.3301;5,40,4.3301;10,0,4.3301;10,5,4.3301; 10,10,4.3301;... 10,15,4.3301;10,20,4.3301; 10,25,4.3301; 10,30,4.3301; 10,35,4.3301;10,40,4.3301;... 15,0,4.3301;15,5,4.3301; 15,10,4.3301;15,15,4.3301;15,20,4.3301; ... 15,25,4.3301; 15,30,4.3301; 15,35,4.3301;15,40,4.3301; 2.5,2.5,0;2.5,7.5,0;2.5,12.5,0;2.5,17.5,0;2.5,22.5,0;... 2.5,27.5,0;2.5,32.5,0; 2.5,37.5,0;7.5,2.5,0;7.5,7.5,0;7.5,12.5,0;7.5,17.5,0;7.5,22.5,0;... 7.5,27.5,0;7.5,32.5,0; 7.5,37.5,0;12.5,2.5,0;12.5,7.5,0;12.5,12.5,0;12.5,17.5,0;12.5,22.5,0];
Depending on what you are doing, you can use any of several tools. For example ...
The symbolic toolbox:
sym(17)^173ans =737332536277664007345135166862919042342198303176957733423911897658606050420746608682751241168475893711891774173437592993636785506777793476094874734220957516554685643214228598246375959317220176420842802110495459537
My own VPI toolbox (free download from the file exchange):
vpi(17)^173ans = 737332536277664007345135166862919042342198303176957733423911897658606050420746608682751241168475893711891774173437592993636785506777793476094874734220957516554685643214228598246375959317220176420842802110495459537
Of course, VPI is only for large integer arithmetic.
For high precision floating point operations, you can use my HPF toolbox, also a free download from the file exchange. So here, the sine of 2.3 radians, out to 500 decimal digits.
DefaultNumberOfDigits 500sin(hpf('2.3'))ans =0.74570521217672017738540621164349953894264877802047425750762828050000099313904725787119141718409288762817250225753133592135334980555453298342113583580957089845003916537428359514540258159501067012614643093890466791278548509412263198294482089203977890584979559621160856653150662947581690813330676541668856555926001056589318039296179001073304389700504217567754815087240130585632142045686943253384330660013244550634516301559995926758472414911946682819947915408675727440373168283432224358384420096808300220
Again, the symbolic toolbox can also give you large number arithmetic for floats.
digits 500sin(sym('2.3'))ans =0.7457052121767201773854062116434995389426487780204742575076282805000009931390472578711914171840928876281725022575313359213533498055545329834211358358095708984500391653742835951454025815950106701261464309389046679127854850941226319829448208920397789058497955962116085665315066294758169081333067654166885655592600105658931803929617900107330438970050421756775481508724013058563214204568694325338433066001324455063451630155999592675847241491194668281994791540867572744037316828343222435838442009680830022
HOWEVER, a large, even huge caveat exists. Much of the time, you never needed to use those large numbers in the first place! This often means you need to learn to use mathematics in a thoughtful way.
For example, at least some of the time when we think we need to use large integer arithmetic, we can avoid it completely. Thus, what is the value of mod(2^2000,17)?
mod(2^2000,17)ans = NaN
Of course that fails, since 2^2000 overflows a double, creating an inf. The mod of that is indeterminate, so the mod is a NaN.
However, we can use powermod toools (I have one in my VPI toolbox, and there is one in the symbolic toolbox too.)
powermod(2,2000,17)ans = 1
As you can see, it is correct.
mod(sym(2)^2000,17)ans =1
Powermod tools are tremendously useful for large integer problems, doing things like primality testing and large integer factorizations.
For example, suppose I want to compute a Taylor series expansion for exp(x). That series looks like:
exp(x) = 1 + x + x^2/factorial(2) + x^3/factorial(3) + x^4/factorial(4) + x^5/factorial(5) + ...
A good trick for many series is to recognize that one term of the series can easily be computed from the previoius term. Think about it. How would you compute the term
x^(n+1)/factorial(n+1)
if you already know the term
x^n/factorial(n)
And of course, logs are often valuable too, if you recognize that factorial(n) = gamma(n+1), and you know that the gammaln function exists, and does not need to compute a factorial at all.
log(factorial(100))ans = 363.74 gammaln(101)ans = 363.74
The point is, very often, use of mathematics in an intelligent, artful way is far better than a brute force use of arithmetic.
Best Answer