What's the problem with this simple anonymous function?

1 view (last 30 days)
Here's an simple code:
clear all; clc; close all;
n = 1:3;
for i = 1:numel(n) %numel is used if someother time I'll use negative values for n
f = @(x) x.^n;
fplot(f);
hold on;
f1 = @(x) x.^(1/n);
fplot(f1);
hold on;
end
The function "f" is running OK but "f1" is generating graphics error. For one value of n like:
f1 = @(x) x.^(1/2);
It generates the plot, but not in the loop.
Please let me know what's wrong?

Accepted Answer

Steven Lord
Steven Lord on 10 Nov 2021
You likely meant to use n(i) in your functions, not n. Another option would be to use 1./n instead of 1/n.
n = 1:3
n = 1×3
1 2 3
y = 1./n
y = 1×3
1.0000 0.5000 0.3333
z = 1/n(2)
z = 0.5000
w = 1/n
Error using /
Matrix dimensions must agree.
  2 Comments
Muhammad Usman
Muhammad Usman on 7 Dec 2021
Thanks, sometimes a simpler logic never clicks into the mind
Muhammad Usman
Muhammad Usman on 7 Dec 2021
One thing more to ask how to adjust legend for array n
n = 1:10;
figure(1);
f = @(x) x.^n;
fplot(f);
hold on;
legend(sprintf('$x^{%d}$\n',n),'Interpreter','latex');
xlim([0 10])
The output I got:
How to correct it?
Thanks in advance

Sign in to comment.

More Answers (0)

Categories

Find more on Function Creation 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!