How to compose a function n-times and want value for a particular value of n?
19 views (last 30 days)
Show older comments
Sayantan Panja
on 30 Sep 2020
Commented: Ameer Hamza
on 1 Oct 2020
Suppose f(x)=x^2+1. Composition of two f, I mean f(f(x)), Similarly composition of 3 f is f(f(f(x))). n-th composition of f is denoted by f^n(x).
What is the general command to evaluate f^10(2) ?
0 Comments
Accepted Answer
Bruno Luong
on 30 Sep 2020
f = @(x) x.^2-x;
n = 10;
x = 1/pi;
y = x;
for k=1:n
y = f(y)
end
% y is f^10(x)
0 Comments
More Answers (1)
Ameer Hamza
on 30 Sep 2020
Edited: Ameer Hamza
on 30 Sep 2020
Use recursion
f = @(x) x.^2 + 1;
n = 2;
fn = nRecursion(f, n);
function f = nRecursion(f, n)
if n == 1
f = @(x) f(f(x));
return
else
f = nRecursion(f, n-1);
end
end
f, and fn are function handles.
Example
>> f(f(5))
ans =
677
>> fn(5)
ans =
677
>> f(f(10))
ans =
10202
>> fn(10)
ans =
10202
2 Comments
Ameer Hamza
on 1 Oct 2020
No, Run it inside a script. It will not work directly on the command line.
You can also do it like this. Create a file named nRecursion.m in MATLAB path and paste the following code in it
function f = nRecursion(f, n)
if n == 1
f = @(x) f(f(x));
return
else
f = nRecursion(f, n-1);
end
end
and then run
f = @(x) x.^2 + 1;
n = 2;
fn = nRecursion(f, n);
in command window.
See Also
Categories
Find more on Startup and Shutdown 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!