c0 and x are scalars, c - vector, and p - scalar. If c is [ ], then p = c0. If c is a scalar, then p = c0 + c*x . Else, p =
3 views (last 30 days)
Show older comments
Subramanian Mahadevan
on 9 Nov 2016
Answered: Govind Mishra
on 14 Mar 2018
function [p] = poly_val(c0,c,x)
N = length(c);
n=1:1:N;
if (N<=1)
if(isempty(c))
p=c0;
else
p= c0+(c*x);
end
end
if(N>1)
p = c0+(sum(c(n).*(power(x,n))));
end
end
2 Comments
Accepted Answer
Thorsten
on 14 Nov 2016
function y = mypolyval(c0,c,x)
if isempty(c)
y = c0;
else
y = c0 + power(x, 1:numel(c))*c(:);
end
The case y = c0 + c*x is already covered by the else. And you can use matrix multiplication of a row and a column vector r*c instead of sum(r.*c').
2 Comments
Raunil Raj
on 6 Mar 2018
really! I went through the same problem. I however don't understand as to how c(:) can convert any row vector or column vector into a column vector. Can someone please explain?
More Answers (6)
Jorge Briceño
on 29 Jan 2018
Here is my solution:
function p = poly_val(c0,c,x)
format long
n=(1:1:length(c));
c=c(:)' & This part converts any array/matrix into a colunm vector and transpose...
% it afterwards, since you are working with row vector properties.
if isempty(c)
p=c0;
elseif isscalar(c)
p=c0+sum(c.*x);
else
p=c0+sum((c.*(x.^n)));
end
end
0 Comments
Gabir Yusuf
on 8 Aug 2017
if true
function p = poly_val(c0,c,x)
n=length(c);
if sum(size(c))==0
p = c0;
elseif isscalar(c)
p = c0 + c*x;
else
y=1:n;
z=x.^y;
if size(c)==[1 n]
p=sum(c.*z)+c0;
else
c=c';
p=sum(c.*z)+c0;
end
end
end
1 Comment
Anshuman Panda
on 19 Aug 2017
function p=poly_val(c0,c,x) a=length(c); if a==0 p=c0; else if a==1 p=c0+c*x; else p=c0 + power(x , 1:a)*c(:); end end end
0 Comments
Darío Pascual
on 12 Mar 2018
function p=poly_val(c0,c,x)
N = length(c);
n=1:1:N;
d=size(c);
if(isempty(c))
p=c0;
end
if N==1
p= c0+(c*x);
end
if N>1
if d(1)==1
p = c0+(sum(c(n).*(power(x,n))));
else
c=c'
p = c0+(sum(c(n).*(power(x,n))));
end
end
0 Comments
Govind Mishra
on 14 Mar 2018
function [p] = poly_val(c0,c,x)
if(iscolumn(c)) c=transpose(c); end
N = length(c); n=1:1:N; if (N<=1) if(isempty(c)) p=c0; else p= c0+(c*x); end end if(N>1) p = c0+(sum(c(n).*(power(x,n)))); end end
0 Comments
See Also
Categories
Find more on Polynomials 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!