如何在 MATLAB 中对任意多项式级数求和?

How to sum an arbitrary polynomial series in MATLAB?

给定:

y=[y(1),y(2),...,y(n)]

其中n为用户输入,且:

x=[x(1),x(2),...,x(n)]

a=[a0,a1,...,am]=[a(1),a(2),...,a(m+1)] 

其中m也是用户输入的,那么我需要计算:

y(p) = a0*x(p)^0 + a1*x(p)^1 + a2*x(p)^2 + ... + am*x(p)^m

y(p) = a(1)*x(p)^0 + a(2)*x(p)^1 + a(3)*x(p)^2 + ... + a(m+1)*x(p)^m.

y 的每个元素都是 my=a0+a1x+a2x^2+...+amx^m 中的多项式,使用 pth x 的值作为pthy值。

求和符号:

y(p) = **sum** (from q=0 to m) **[a(q+1)*x(p)^q]**

我不确定如何在 MATLAB 中对这个系列求和。任何帮助将不胜感激!

编辑:

我试图通过以下方式评估 y(p) 的每个值,例如 y(2):

syms q a x  
f=a(q+1)*x(2)^q
y(2) = symsum(f, q, 0, m)  

但是,这个returns错误Invalid indexing or function definition

Code is completely descriptive, in this code meshgrid function plays a core role, if code is not so descriptive , then I recommend to learn basics in matlab(What are matrices and how to deal with them in matlab)

% Inputs , for example x=[1,2,3,..,10] and a=[5,6,7,8]

x=1:10
a=[5,6,7,8]

% m <= length(a)

m=3

% temporary matrices

[tx,ta] = meshgrid(x,a)
[~,tm]=meshgrid(x,0:m)
t=ta(1:m+1,:).*tx(1:m+1,:).^tm(1:m+1,:)

% y is your result and has equal elemnts to x matrix

y=sum(t,1)

% some outputs

y(2)
y(3)

aslo,问题中提到的错误有一个在 [

中描述的原因

如果您将 x 定义为值的 N 元素行向量,并将 a 定义为多项式系数的 M 元素行向量,然后您可以使用函数 polyval 计算 m+1 多项式项子集的 y 值和 x:

n
y = polyval(flip(a(1:(m+1)), 2), x(1:n));

请注意,polyval 期望多项式系数从最高幂到最低幂排序,因此向量 a(1:(m+1)) 的顺序必须使用 flip 翻转。