Проблема в том, что, хотя вы сначала определяете v
как символический объект, используя SYMS , вы переопределяете , чтобы он был массивом двойных значений для следующего линия. Затем на первой итерации цикла вы индексируете первый элемент 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