To find value of variable using iteration

19 Ansichten (letzte 30 Tage)
Dhananjay Singh
Dhananjay Singh am 28 Aug. 2021
Kommentiert: Image Analyst am 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?

Akzeptierte Antwort

Image Analyst
Image Analyst am 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 Kommentare
Dhananjay Singh
Dhananjay Singh am 28 Aug. 2021
does rand function only generate number less than 1?
Image Analyst
Image Analyst am 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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Awais Saeed
Awais Saeed am 28 Aug. 2021
Bearbeitet: Awais Saeed am 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
  1 Kommentar
Dhananjay Singh
Dhananjay Singh am 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?

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by