如何在 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
的每个元素都是 m
、y=a0+a1x+a2x^2+...+amx^m
中的多项式,使用 p
th x
的值作为p
thy
值。
求和符号:
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
翻转。
给定:
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
的每个元素都是 m
、y=a0+a1x+a2x^2+...+amx^m
中的多项式,使用 p
th x
的值作为p
thy
值。
求和符号:
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
翻转。