Sum digits after vpa(N,100) ?

4 views (last 30 days)
Per on 16 Jan 2013
Hi MatLab!
I've stumbled across a problem. I wish to take all the first hundred digits in the square root of 2 ---> sqrt(2) and sum them up.
I first use
N=sym('sqrt(2)'); vpa(N,100)
which gives me alot of digits. But when I try to num2str the answer it cant be done. How can I achieve this?

Accepted Answer

Shashank Prasanna
Shashank Prasanna on 16 Jan 2013
Here you go:
clear all
sumA = 0;
for i = 1:100
sumA = sumA + (floor(N*(10^(i-1))) - 10*floor(N*10^(i-2)));

More Answers (1)

Jan on 16 Jan 2013
Edited: Jan on 16 Jan 2013
Could you operate on the VPA number instead of converting it to a string? I do not have the Symbolic Toolbox, but I guess:
s = 0;
x = vpa(N, 100);
for ii = 1:100
s = s + floor(x);
x = rem(x, 1) * 10;
Does this work?
N = sym('sqrt(2)');
x = vpa(N, 100);
s = 0;
for ii = 1:100
f = floor(x);
s = s + f;
x = (x - f) * 10;
If rounding error appear, try it with 200 digits in the VPA command. Please use this as inspiration - as I said already, I do not have the corresponding toolboxes.
Jan on 16 Jan 2013
Now I can run Matlab again. The [EDITED] version works and gives the correct result.

Sign in to comment.


Find more on Mathematics in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!