How to compose a function n-times and want value for a particular value of n?

19 Ansichten (letzte 30 Tage)
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) ?

Akzeptierte Antwort

Bruno Luong
Bruno Luong am 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)

Weitere Antworten (1)

Ameer Hamza
Ameer Hamza am 30 Sep. 2020
Bearbeitet: Ameer Hamza am 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 Kommentare
Sayantan Panja
Sayantan Panja am 1 Okt. 2020
It shows :Undefined function or variable 'nRecursion'."
Ameer Hamza
Ameer Hamza am 1 Okt. 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.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Startup and Shutdown 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