Piecewise Iterated Function not looping all the way
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
I am trying to write a program that calculates the value of y after inputting a number into f(x) and as well as f^2(x) and f^3(x) and so on up until f^100(x) but my loop is freezing after 4-5 loops, what could be the error?
x0 = 0.2;
syms x
y = piecewise(0<=x<=0.5, 2*x, 0.5<x<=1, 2*x-1);
for c=0:3
subs(y,x,0.2)
y = piecewise(0<=y<=0.5, 2*y, 0.5<y<=1, 2*y-1);
end
0 Kommentare
Antworten (1)
Shivam Malviya
am 14 Jun. 2021
Hi Brian!
The execution time of below code increases exponentially with number of iterations, which might be the cause of your issue.
y = piecewise(0<=y<=0.5, 2*y, 0.5<y<=1, 2*y-1);
To check the execution time of your program, you can use the below code: -
x0 = 0.2;
syms x;
y = piecewise(0<=x<=0.5, 2*x, 0.5<x<=1, 2*x-1);
for c=0:10
disp("The iteration number: " + int2str(c))
tic;
subs(y,x,0.2);
subs_exec_time = toc
tic;
y = piecewise(0<=y<=0.5, 2*y, 0.5<y<=1, 2*y-1);
pw_exec_time = toc
end
One possible workaround for this could be that you use the value of the last piecewise function instead of using the previous piecewise function to make the next piecewise function (code given below). This will improve the computational complexity from exponential to constant.
x0 = 0.2;
syms x;
y = piecewise(0<=x<=0.5, 2*x, 0.5<x<=1, 2*x-1);
d = x0;
for c=0:10
disp("The iteration number: " + int2str(c))
d = subs(y, x, d);
end
0 Kommentare
Siehe auch
Kategorien
Mehr zu Assumptions finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!