Creating a polyval function

35 views (last 30 days)
Patrick Allaglo
Patrick Allaglo on 13 Dec 2013
Edited: ledinh lam on 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 :)

Accepted Answer

Simon
Simon on 13 Dec 2013
Hi!
But you can use polyval with just p and x!
  3 Comments
Simon
Simon on 13 Dec 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 on 13 Dec 2013
Well i just tried something and it works (with your loop suggestion :)) Thx

Sign in to comment.

More Answers (4)

Azzi Abdelmalek
Azzi Abdelmalek on 13 Dec 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 Comment
Patrick Allaglo
Patrick Allaglo on 13 Dec 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. :)

Sign in to comment.


ledinh lam
ledinh lam on 27 Nov 2016
Edited: ledinh lam on 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) on 13 Dec 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 on 13 Dec 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 Comment
Simon
Simon on 13 Dec 2013
Make a table like
tt = -5:5;
Access your variable with index -3 like
V(tt==-3)

Sign in to comment.

Categories

Find more on Mathematics in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!