数组中的2个变量

时间:2010-12-11 23:45:17

标签: arrays function variables matlab binomial-coefficients

我正在尝试在MATLAB中创建一个函数,它将括号扩展为n的幂,其中n是一个自然数。这就是我到目前为止所做的:

function expandb = expandb(x,y,n)
z = my_bincoeff1(n);;
syms v x y
v=1:n+1
for i=1:n+1
    v(i)=z(i)*x.^(n-i+1)*y.^(i-1);
end
a=0
for i=1+n+1
    a=a+v(i)
end

expandb = a;

运行时出现此错误:

??? The following error occurred converting from sym to double:
Error using ==> mupadmex
Error in MuPAD command: DOUBLE cannot convert the input expression into a double
array.
If the input expression contains a symbolic variable, use the VPA function instead.

Error in ==> expandb at 6
    v(i)=z(i)*x.^(n-i+1)*y.^(i-1);

那么如何在数组中存储2个变量?

1 个答案:

答案 0 :(得分:1)

问题在于,即使您首先使用SYMSv定义为符号对象,您重新定义它是一个双值的数组下一行。然后,在循环的第一次迭代中,索引v的第一个元素,并尝试在该元素中放置一个符号表达式。当MATLAB尝试将符号表达式转换为double类型以匹配数组v的其他元素的类型时,会出现错误(由于存在未指定的符号对象,如x,因此无法执行此操作表达式中的y

下面的解决方案应该达到你想要的效果:

function v = expandb(x,y,n)
  z = my_bincoeff1(n);
  syms v x y
  v = z(1)*x.^n;  %# Initialize v
  for i = 2:n+1
    v = v+z(i)*x.^(n-i+1)*y.^(i-1);  %# Add terms to v
  end
end