【问题标题】:How to sum an arbitrary polynomial series in MATLAB?如何在 MATLAB 中对任意多项式级数求和?
【发布时间】:2018-05-26 10:03:15
【问题描述】:

给定:

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 中的多项式,使用pthx 值作为pth@987654333 @值。

总和表示法:

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)  

但是,这会返回错误Invalid indexing or function definition

【问题讨论】:

  • 你在总结这个系列时到底有什么困难?您是否尝试过编写代码?如果是这样,它在哪里失败?你能给我们一个minimal reproducible example吗?
  • 我已经编辑了帖子

标签: matlab sum series polynomials


【解决方案1】:

代码完全是描述性的,在这段代码中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)

同样,问题中提到的错误有一个原因,在 [https://stackoverflow.com/a/47782904/6478645]

中进行了描述

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-10-10
      • 1970-01-01
      • 2020-04-07
      • 2015-03-28
      • 2018-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多