Problem 42775. Raise a polynomial to a power
Solution Stats
Problem Comments
-
2 Comments
Thought of another way to do this...
q=poly(kron(roots(p),ones(N,1)));
One-liner with size 21, but fails because of trivial roundoff error :(
This isnt a particularly difficult problem
you can call this function powerpoly
function ppower = powerpoly(p,n)
ppower = p;
i = 1
while i < n
ppower = conv(ppower,p);
i = i + 1;
end
Solution Comments
-
4 Comments
This is a numerical algorithm and is not exact, but very accurate. I'm failing the test because the output for p=1:5; N=3 is off by this amount...
-3.4972e-14 8.8818e-15 3.5527e-14 0.0000e+00 0.0000e+00 -2.8422e-14
Columns 7 through 12:
0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 -5.6843e-14
Column 13:
0.0000e+00
COMPLETELY RIDICULOUS!!!!. Using isequal() is a poor choice for evaluating numerical algorithms.
Here is my algorithm that "failed" the isequal test by -5e-14 on a few values. I thought I would actually try to write a somewhat fast algorithm instead of just a for loop calling conv() repeatedly and reallocating memory each time.
function q = polypow(p,N)
q=ifft((fft([p zeros(1,(N-1)*(length(p)-1))])).^N);
end
Given you comments above, you might be interested in solving my convolution series at http://www.mathworks.com/matlabcentral/cody/?term=Fast+1-D+Convolution
perfect
Problem Recent Solvers61
Suggested Problems
-
623 Solvers
-
Calculate the Number of Sign Changes in a Row Vector (No Element Is Zero)
372 Solvers
-
517 Solvers
-
222 Solvers
-
Test Problem; Create a 5x5 array containing all ones
328 Solvers
More from this Author2
Problem Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!