为什么 Matlab 阶乘函数将整数视为非整数?
Why does Matlab factorial function perceives an integer as a non-integer?
我正在尝试在 Matlab 中构建一个函数,该函数为正弦生成 0 左右的泰勒级数,用户可以插入 x(正弦的近似值)和最大误差。因此,我希望该函数检查最大误差,并根据该最大值生成泰勒级数中的元素数量。
我收到以下错误:
Error using factorial (line 20)
N must be an array of real non-negative integers.
Error in maxError (line 19)
y(x) = y(x) + (-1)^(j) * x^(2j+1)/factorial(2j+1)
下面是我的代码。
function [n] = maxError(x,e);
%Computes number of iterations needed for a given absolute error.
n=1;
while abs(x)^(n+1)/factorial(n+1) >= e
n = n+1;
end
if mod(n,2) == 0
n=n+1;
end
y=@(x) x;
j=1;
while j<n
y(x) = y(x) + (-1)^(j) * x^(2j+1)/factorial(2j+1)
j=j+1;
end
return
我想我得到这个错误是因为 factorial
函数只能接受整数,但在我看来,我正在给它输入一个整数。由于 j=1;
然后每次迭代变大 1,我看不出 Matlab 如何将其视为整数以外的其他东西。
感谢任何帮助。
您正在使用 j
作为索引变量,这也是 Matlab 中的复数,而您忘记了 *
乘法。
您可以将 j
用作变量(不推荐!)但是当您将数字放在它前面时,Matlab 仍然会将 is 解释为复数,而不是变量。
添加乘号将解决问题,但使用 i
和 j
作为变量会给您带来这些难以调试的错误。如果您使用 a
,错误会更容易理解:
>> a=10;
>> 2a+1
2a+1
↑
Error: Invalid expression. Check for missing multiplication operator, missing or
unbalanced delimiters, or other syntax error. To construct matrices, use brackets
instead of parentheses.
我正在尝试在 Matlab 中构建一个函数,该函数为正弦生成 0 左右的泰勒级数,用户可以插入 x(正弦的近似值)和最大误差。因此,我希望该函数检查最大误差,并根据该最大值生成泰勒级数中的元素数量。
我收到以下错误:
Error using factorial (line 20)
N must be an array of real non-negative integers.
Error in maxError (line 19)
y(x) = y(x) + (-1)^(j) * x^(2j+1)/factorial(2j+1)
下面是我的代码。
function [n] = maxError(x,e);
%Computes number of iterations needed for a given absolute error.
n=1;
while abs(x)^(n+1)/factorial(n+1) >= e
n = n+1;
end
if mod(n,2) == 0
n=n+1;
end
y=@(x) x;
j=1;
while j<n
y(x) = y(x) + (-1)^(j) * x^(2j+1)/factorial(2j+1)
j=j+1;
end
return
我想我得到这个错误是因为 factorial
函数只能接受整数,但在我看来,我正在给它输入一个整数。由于 j=1;
然后每次迭代变大 1,我看不出 Matlab 如何将其视为整数以外的其他东西。
感谢任何帮助。
您正在使用 j
作为索引变量,这也是 Matlab 中的复数,而您忘记了 *
乘法。
您可以将 j
用作变量(不推荐!)但是当您将数字放在它前面时,Matlab 仍然会将 is 解释为复数,而不是变量。
添加乘号将解决问题,但使用 i
和 j
作为变量会给您带来这些难以调试的错误。如果您使用 a
,错误会更容易理解:
>> a=10;
>> 2a+1
2a+1
↑
Error: Invalid expression. Check for missing multiplication operator, missing or
unbalanced delimiters, or other syntax error. To construct matrices, use brackets
instead of parentheses.