2017-12-12 16 views
0

は考える:MATLABで任意の多項式をどのように合計するか?

nは、ユーザによって入力され、
y=[y(1),y(2),...,y(n)] 

mは、ユーザーが入力した

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

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

、その後、私は計算する必要があります。

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の各要素は、0123を使用するm,y=a0+a1x+a2x^2+...+amx^mの多項式です。thxpthyの値。加算表記で

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

私はMATLABでこのシリーズを合計するかどうかはわかりません。どんな助けでも大歓迎です!

EDITは:

Iは、例えば、次のようでy(2)y(p)の各値を評価することを試みてきました:

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

ただし、これはエラーInvalid indexing or function definitionを返します。

+0

正確にこのシリーズの合計に問題がありますか?これをコード化しようとしましたか?もしそうなら、どこで失敗するのですか?あなたは私たちに[mcve]を与えることができますか? – beaker

+0

投稿を編集しました – John

答えて

0

に記載されている理由があります

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

:多項式係数のM -element行ベクトルとして定義された値のTOR、およびaは、あなたはm+1多項式とxn値のサブセットのためにあなたのy値を計算する機能polyvalを使用することができますpolyvalは、多項式係数が最高出力から最低出力に順序付けされることを予期しているので、ベクトルa(1:(m+1))の次数はflipを使用して反転する必要があります。

0

コードは、このコードではmeshgrid機能が中核的な役割を果たしている、完全に記述されたコードはとても説明的でない場合は、その後、私はMathWorks社のMATLABで基本を学ぶことをお勧めします(行列とは何であり、どのようにMathWorks社の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、エラーは、N -element行VECとしてxを定義した場合[https://stackoverflow.com/a/47782904/6478645]

関連する問題