# How do I summarize this code in a for-loop?

1 view (last 30 days)
Geeniee on 2 Feb 2021
Commented: Geeniee on 2 Feb 2021
I am supposed find the best rational approximation for e using the quotient q/p, such that q is a 1-digit number, 2-digit number up to a 6-digit number. I've figured out how to solve the problem but I am certain I can make my code more efficient with a for loop. Any leads on how that would look like?
Some of the code:
a = 1:9; b = 10:99; c = 100:999; d = 1000:9999; e = 10000:99999; f = 100000:999999;
q = a; %set q eual to the first vector (1 digit)
p = round(q*exp(1)); %q is integer expression for e*q
T = p./q; %gather their quotient in vector T
best = T(1); %run sorting algorithm
for i = T
if abs(i-exp(1))<abs(best-exp(1))
best = i; %keep checking the next value for being a better approximation
end
end
x = find(T==best); tal1 = p(x)+"/"+q(x); %save tal1 as the quotient of the best approximation
%now repeat the process for b through f (2digit numbers to 6 digit numbers)

the cyclist on 2 Feb 2021
Edited: the cyclist on 2 Feb 2021
for ne = 1:6 % Loop over the exponent
q = 10^(ne-1) : (10^ne-1);
p = round(q*exp(1)); %q is integer expression for e*q
T = p./q; %gather their quotient in vector T
best = T(1); %run sorting algorithm
for i = T
if abs(i-exp(1))<abs(best-exp(1))
best = i; %keep checking the next value for being a better approximation
end
end
x = find(T==best); tal1 = p(x)+"/"+q(x) %save tal1 as the quotient of the best approximation
end
Geeniee on 2 Feb 2021
brilliant, thank you!