如何在MATLAB中求和任意多项式系列?

时间:2017-12-12 16:33:04

标签: matlab sum series polynomials

假设:

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中的多项式,使用p th x值{{1} } th p值。

总结符号:

y

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

编辑:

我尝试通过以下方式评估y(p) = **sum** (from q=0 to m) **[a(q+1)*x(p)^q]** 的每个值,例如y(p)

y(2)

但是,这会返回错误syms q a x f=a(q+1)*x(2)^q y(2) = symsum(f, q, 0, m)

2 个答案:

答案 0 :(得分:0)

  

代码是完全描述性的,在此代码中meshgrid函数起着核心作用,如果代码不那么描述,那么我建议学习matlab中的基础知识(什么是矩阵以及如何在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,问题中提到的错误有一个原因,在[https://stackoverflow.com/a/47782904/6478645]

中有描述

答案 1 :(得分:0)

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

x

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