How can i plot this function with factorial?

2 次查看(过去 30 天)
I would like to have the following function plotting:
lap = (3*factorial(x)-1)./(120*10^(12));
xValues = linspace(0,1,20);
plot(xValues, semilap(xValues));
I get the following error message:
"Array indices must be positive integers or logical values."
I would also be very grateful if someone could tell me how to plot the Y-axis logarithmically in this case.
  1 个评论
VBBV
VBBV 2021-2-2
编辑:VBBV 2021-2-2
x = 4; % input vector same size as xValues
lap = (3*factorial(x)-1)./(120*10^(12));
xValues = linspace(0,1,20);
semilogy(xValues, (lap)); % semilogy
Value of x here is shown as e,g,

请先登录,再进行评论。

回答(2 个)

Rik
Rik 2021-2-2
If you want to plot a function, you should do so explicitly:
lap = @(x)(3*factorial(x)-1)./(120*10^(12));
xValues = round(logspace(0,1,20));%round to make sure the input to factorial is interger-only
semilogy(xValues, lap(xValues))

Steven Lord
Steven Lord 2021-2-2
You haven't shown us what semilap is. If you intended for that to be the expression in lap evaluated at the points in xValues, you need to make lap a function or a function handle (which could be anonymous.) However:
lap = @(x) (3*factorial(x)-1)./(120*10^(12));
xValues = linspace(0,1,20);
plot(xValues, lap(xValues));
Error using factorial (line 20)
N must be an array of real non-negative integers.

Error in solution (line 1)
lap = @(x) (3*factorial(x)-1)./(120*10^(12));
the factorial function is only defined for real non-negative integer values and xValues contains non-integer values. You could use the gamma function instead.
As for plotting logarithmically, see the semilogy function (or semilogx if you want just the X axis to be in logarithmic scale or loglog if you want both logarithmic.)

类别

Help CenterFile Exchange 中查找有关 Contour Plots 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by