我刚刚开始使用MATLAB,我编写了一个函数来生成(x-a)^n在给定x、a和n时的二项式扩展。据我所知,我的代码应该工作,但我似乎没有正确地使用函数变量。
function expand(a,n,x)
f = 0;
for k = 0:1:n
f = f + nchoosek(n,k).*x.^(n-k).*(-a).^k;
end
end我需要能够调用函数并将其输出为x中的扩展多项式,例如,调用expand(1,3,x)应该返回x^3-3*x^2+3*x-1,但是调用它会导致以下错误:
未识别的函数或变量'x‘。它似乎要我调用函数,x是另一个数字,但实际上,我需要它能够成为任何字母,作为变量在多项式中使用。
我知道在Maple中,我会将函数中的变量类型指定为x::name,所以我假设在MATLAB中有类似的东西,我还不知道。
谢谢你的帮助。
发布于 2020-01-20 09:45:47
要做到这一点有两种方法:
x创建为一个符号变量。例如,syms x; expand(a,n,x)。这使您可以使用像simplify()这样的符号工具箱特性,但会带来一些性能损失。您应该避免在密集calculations.f=@(X)sum(arrayfun(@(k)nchoosek....,1:n)。当您想要一个实际的数值时,这具有更好的性能,并且不需要double(subs(...)),但是对于初学者来说实现起来可能太困难了。。
https://stackoverflow.com/questions/59816294
复制相似问题