# To find value of variable using iteration

7 views (last 30 days)
Dhananjay Singh on 28 Aug 2021
Commented: Image Analyst on 28 Aug 2021
Hello,
At first I need to generate a random number that was done using rand command.
Then I have to use iteration such that it satisfies a certain relation. I used while loop but it is not stopping.
x = rand(1,1);
while 350-12.9-x-32.4498 ~= 0
x= x+ 0.0001
end
The problem is other values can also change drastically so it would take a long time to find values. Any other suggestions?

Image Analyst on 28 Aug 2021
Your condition never matches 0 exactly. Why not? See the FAQ:
Try it like this:
x = rand(1,1);
maxIterations = 10000000; % Failsafe to prevent infinite loop
loopCounter = 0; % Failsafe to prevent infinite loop
value = abs(350-12.9-x-32.4498);
while value >= 0.00009 && (loopCounter < maxIterations)
x = x + 0.0001;
value = abs(350-12.9-x-32.4498);
loopCounter = loopCounter + 1; % Failsafe to prevent infinite loop
% fprintf('After %d iterations, x = %f and value = %f.\n', loopCounter, x, value);
end
fprintf('After %d iterations, x = %f and value = %f.\n', loopCounter, x, value);
You might get:
After 3038399 iterations, x = 304.650168 and value = 0.000032.
##### 2 CommentsShowHide 1 older comment
Image Analyst on 28 Aug 2021
Yes, only between 0 and 1. See the help if you need it in a range different from that
r = vMin + (vMax - vMin) * rand(1); % Get value between vMin and vMax

Awais Saeed on 28 Aug 2021
Edited: Awais Saeed on 28 Aug 2021
What is your goal exactly? Do you want to find the value for x where the result is zero? You can find the roots using solve
syms x
vpa(solve(350-12.9-x-32.4498 == 0,x))
ans =
304.65019999999999669171302230097
Dhananjay Singh on 28 Aug 2021
x = .. some guess number
y = f(x);
z= f(y);
w=g(y);
a=z+x+w;
x is to be guessed first ,then using relations find y,z,w and a is a constant value such that the relation satisfies.
was thinking of iteration of doing this . Is there any other method?