2017-12-12 6 views
0

Gegeben:Wie summiere ich eine beliebige Polynomreihe in MATLAB?

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

Wo n Eingabe durch den Benutzer ist, und:

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

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

Wo m ist auch durch den Benutzer eingegeben, dann muss ich berechnen:

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. 

dh Jedes Element von y ist ein Polynom in m, y=a0+a1x+a2x^2+...+amx^m, mit der thx Wert für die thy Wert.

In Summe Notation:

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

Ich bin mir nicht sicher, wie diese Serie in MATLAB zu summieren. Jede Hilfe würde sehr geschätzt werden!

EDIT:

ich versucht habe, jeden Wert von y(p) durch folgende zu bewerten, zum Beispiel y(2):

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

Doch diese gibt den Fehler Invalid indexing or function definition.

+0

Wo genau haben Sie Schwierigkeiten, diese Serie zu summieren? Haben Sie versucht, dies zu programmieren? Wenn ja, wo versagt es? Kannst du uns einen [mcve] geben? – beaker

+0

Ich habe den Beitrag bearbeitet – John

Antwort

0

beschrieben Wenn Sie x als N -elementigen Reihe vec definiert haben tor von Werten und a als M -elementigen Zeilenvektor von Polynomkoeffizienten definiert sind, dann können Sie die Funktion verwenden polyval Ihre y Werte für eine Teilmenge von m+1 Polynomtermen und n Werte von x zu berechnen:

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

Beachten Sie, dass polyval die Polynomkoeffizienten von der höchsten Potenz zur niedrigsten Potenz erwartet, sodass die Reihenfolge des Vektors a(1:(m+1)) mit flip umgedreht werden muss.

0

-Code ist vollständig beschreibend, in diesem Code meshgrid Funktion eine zentrale Rolle spielt, wenn der Code nicht so beschreibend ist, dann empfehle ich Grundlagen in Matlab zu lernen (Was sind Matrizen und wie man mit ihnen in Matlab beschäftigen)

% 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, Fehler in Frage erwähnt hat einen Grund, der in [https://stackoverflow.com/a/47782904/6478645]

Verwandte Themen