Trying to find the roots of polynomial with a script file
Show older comments
function [y] = Func_6_23(x)
y = ((x^5) - (12*(x^4)) - (9*(x^3)) + (392(x^2)) - (372*x) - 2160);
end
I'm trying to execute this script file to find roots and I keep getting this error,
Error in roots (line 26) when I don't even have a line 26.
if ~all(isfinite(c))
5 Comments
Walter Roberson
on 4 Oct 2018
Did you happen to name your script roots ? If you did then you might have accidentally activated MATLAB's roots() function instead.
Go Detroit Lions
on 4 Oct 2018
Edited: Go Detroit Lions
on 4 Oct 2018
Walter Roberson
on 4 Oct 2018
Any .m whose first executable word is "function" or "classdef" is not a script. You defined a function, not a script .
The MATLAB function roots() is not defined for function handles.
Perhaps it is intended that you define the function roots() that has to find roots of a polynomial ?
Go Detroit Lions
on 4 Oct 2018
Edited: Walter Roberson
on 4 Oct 2018
Walter Roberson
on 4 Oct 2018
hint: the roots of 10*x^3 - 7*x^2 - 11*x + 4 can be found by roots([10, 7, 11, 4])
Answers (2)
madhan ravi
on 4 Oct 2018
y=[1 -12 -9 392 -372 -2160]
roots(y)
Note: Always use coefficients to find roots in Matlab.
1 Comment
madhan ravi
on 11 Oct 2018
If it worked , accept the answer
Image Analyst
on 11 Oct 2018
"My professor called it from the command line with the following text: roots(@Func_6_23)"
It seems like your professor wants a function from you that determines (returns) a vector with the polynomial coefficients, which you can then pass in to the built-in roots() function. It might go something like:
function [y] = Func_6_23(inputPolynomial)
% For example inputPolynomial is a string "((x^5) - (12*(x^4)) - (9*(x^3)) + (392(x^2)) - (372*x) - 2160);"
% and we're supposed to return y as [1, 12, 9, 392, 372, -2160]
inputPolynomial(inputPolynomial== ' ') = []; % Remove any spaces.
% Now loop over orders, say the first 20 or whatever and find 'x^n'
for k = 1 : 20
thisString = sprintf('x^%d', k); % E.g. 'x^5'
index = strfind(inputPolynomial, thisString); % Find x^5 in the whole polynomial string.
% etc. to find coefficients of thisString.
y(k) = .....
end
% Here, you should have y which is a vector containing all the coefficients,
% which you can then pass in to roots().
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!