Как передать полиномиальную переменную в функцию Matlab? - PullRequest
0 голосов
/ 20 января 2020

Я только начинаю работать с 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, но вместо этого вызов его дает такую ​​ошибку:

Unrecognized function or variable 'x'. It seems like it wants me to call the function with x being another number but I in fact need it to be able to be any letter to be used as the variable in the polynomial.

Я знаю, в Maple я бы указал тип переменной в функции должен быть x::name, поэтому я предполагаю, что в MATLAB есть нечто похожее, чего я еще не знаю.

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 20 января 2020

Есть два способа go об этом:

  • Создать x как символическую c переменную. Например, syms x; expand(a,n,x). Это дает вам возможность использовать такие наборы инструментов Symboli c, как simplify(), но с небольшим снижением производительности. В интенсивных вычислениях следует избегать использования панели инструментов symboli c.
  • Возвращать анонимную функцию f=@(X)sum(arrayfun(@(k)nchoosek....,1:n). Это имеет лучшую производительность и не требует double(subs(...)), когда вы хотите фактическое значение цифры c, но может быть слишком сложно для начинающего.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...