Azzera filtri
Azzera filtri

Creating a polyval function

11 visualizzazioni (ultimi 30 giorni)
Patrick Allaglo
Patrick Allaglo il 13 Dic 2013
Modificato: ledinh lam il 27 Nov 2016
Hi everybody, I'm actually trying to create a function wich would work like a polyval function but without any S and MU. Just with p and x : polyval(p,x). http://www.mathworks.com/help/matlab/ref/polyval.html But I have absolutely no idea how to do it... I know what i would have to do on a paper but no idea in MATLAB. For example, i don't know how to write this in MATLAB : y = p1*x^n + p2*x^n–1 + … + p*n^x + p*n+1 So if someone could just show me a tip or a way to find it... Thx :)

Risposta accettata

Simon
Simon il 13 Dic 2013
Hi!
But you can use polyval with just p and x!
  3 Commenti
Simon
Simon il 13 Dic 2013
Maybe the best point to start is to enter
edit polyval
in your command window and take a look at the code.
Or you start from scratch, write a function that accepts a scalar/vector X and some polynomial coefficients P. Then of course you can directly calculate with
Y = P(1)*X^N + P(2)*X^(N-1) + ... + P(N)*X + P(N+1)
Maybe use a loop (for scalar X) like
Y = 0;
N = length(P) - 1;
e = N:-1:0;
for n = 1:N+1
Y = Y + P(n) * X^e(n);
end
I didn't try it, but it should get you started.
Patrick Allaglo
Patrick Allaglo il 13 Dic 2013
Well i just tried something and it works (with your loop suggestion :)) Thx

Accedi per commentare.

Più risposte (4)

Azzi Abdelmalek
Azzi Abdelmalek il 13 Dic 2013
Example
x=0:10
If you want to calculate a polynomial p=4x^2+2*x+5
p=[4 2 5]
out=polyval(p,x)
  1 Commento
Patrick Allaglo
Patrick Allaglo il 13 Dic 2013
No you don't understand, I'm trying to create a function which would work like polyval. I'm not trying to calculate a polynomial. :)

Accedi per commentare.


ledinh lam
ledinh lam il 27 Nov 2016
Modificato: ledinh lam il 27 Nov 2016
function p = poly_val(c0,c,x)
if isempty(c)==true
p =c0;
elseif isscalar(c)==true
p = c0+c*x;
else
w=c(:);
n=length(c);
a=x.^[1:n];
p=c0+a*w;
end
end
if true
% code
end

Jos (10584)
Jos (10584) il 13 Dic 2013
I do not really get your problem, but are you after something like this?
x = -5:5
p = [3 2 4]
y = p(1)
for k=2:numel(p),
y = y + p(k) * x.^(k-1) % you can change this to another formula f(k,p(k),x)
end

Patrick Allaglo
Patrick Allaglo il 13 Dic 2013
Hey again :D I have a little question, how can i save data from a loop with a variable evolving between -5 to 5 for example, because when I try to save data by using variable_stored, it says that i have to use positive integer or logical...
  1 Commento
Simon
Simon il 13 Dic 2013
Make a table like
tt = -5:5;
Access your variable with index -3 like
V(tt==-3)

Accedi per commentare.

Categorie

Scopri di più su Mathematics in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by