How to compose a function n-times and want value for a particular value of n?
19 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Sayantan Panja
el 30 de Sept. de 2020
Comentada: Ameer Hamza
el 1 de Oct. de 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 comentarios
Respuesta aceptada
Bruno Luong
el 30 de Sept. de 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 comentarios
Más respuestas (1)
Ameer Hamza
el 30 de Sept. de 2020
Editada: Ameer Hamza
el 30 de Sept. de 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 comentarios
Ameer Hamza
el 1 de Oct. de 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.
Ver también
Categorías
Más información sobre Startup and Shutdown en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!