Polynomial Anonymous function degree

12 visualizaciones (últimos 30 días)
Ashish Sahu
Ashish Sahu el 27 de Abr. de 2019
Comentada: Walter Roberson el 28 de Abr. de 2019
How can I find the degree of a given "anonymous function" like f=@(x) x^2+2x; given the functions are only polynomials?
  1 comentario
dpb
dpb el 27 de Abr. de 2019
Editada: dpb el 27 de Abr. de 2019
Convert to string via func2str and regexp() to return powers of exponentials--find max thereof. Of course, that presumes someone doesn't write a function like using the explicit form of Horner's rule--
f=@(x) (x+2).*x;
in which case you've got more work to do... :)

Iniciar sesión para comentar.

Respuesta aceptada

Walter Roberson
Walter Roberson el 27 de Abr. de 2019
Build a vector
X = realmax.^(1./(1:50));
Evaluate the function at X. The first result that is finite is probably the degree. However, it is possible for a polynomial with sufficiently large coefficients to generate an infinity "early", or for with sufficiently small leading coefficient to be "late" relative to this, so you should use that as a starting point to do more cross-checking.
  3 comentarios
Ashish Sahu
Ashish Sahu el 28 de Abr. de 2019
This method doesn't seem to work for degree 4 & degree 5 polynomials.
f=@(x) x^4;
X = realmax.^(1./(1:50));
for i=1:50
Y = f(X(i));
if Y<Inf
break
end
end
degree = i % degree of polynomial is degree
I am getting degree = 5.
Walter Roberson
Walter Roberson el 28 de Abr. de 2019
x^4 is a leading coefficient of 1 which is "suffiently small" in terms of what I wrote above.
Perhaps a slightly different X would help? You should analyze why this case fails to figure out what changes to make.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Polynomials en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by