Polynomial with function handle.
    16 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Ahsan Ali
 el 31 de Oct. de 2020
  
    
    
    
    
    Comentada: Walter Roberson
      
      
 el 23 de Dic. de 2020
            Remember the example from the video that showed how to return a function handle to a nested function that computed the value of a polynomial? Here it is:
function fh = get_polynomial_handle(p)
    function polynomial = poly(x)
        polynomial = 0;
        for ii = 1:length(p)
            polynomial = polynomial + p(ii) .* x.^(ii-1);
        end
    end    
    fh = @poly;
end
It takes a vector of coefficients p, defines a function that returns the value of the polynomial given the scalar input x, and returns a function handle to it. Here is an example run:
>> p = get_polynomial_handle(1:5)
p =
  function_handle with value:
    @get_polynomial_handle/poly
>> p(1)
ans =
    15
Your task is simple: modify the code above so that it does not use any loops.
Here is the code, i tried;
    function fh = get_polynomial_handle(p)
    function fn = poly1(x)
        ii = 1:length(p);
         fn=poly(ii);
        function polynomial = poly(ii)
         if ii==1
          polynomial= p(1);
         else
            polynomial = p(ii).*x.^(ii-1)+ poly(x,ii-1);
         end
        end
    end
    fh = @poly1;
end
Commond window error.
>> p = get_polynomial_handle([1:5])
p =
  function_handle with value:
    @get_polynomial_handle/poly1
>> p(1)
Error using get_polynomial_handle/poly1/poly
Too many input arguments.
Error in get_polynomial_handle/poly1/poly (line 9)
            polynomial = p(ii).*x.^(ii-1)+ poly(x,ii-1);
Error in get_polynomial_handle/poly1 (line 4)
         fn=poly(ii);
I can not able to figure out, what is wrong in this code. Please help!
0 comentarios
Respuesta aceptada
  Ameer Hamza
      
      
 el 31 de Oct. de 2020
        You defined the nested poly() function with this signature
function polynomial = poly(ii); % single input
But then you are calling it like this
poly(x,ii-1); % two inputs
Also, the task only requires you not to use for-loop. It does not say to do it with recursion. Following is a more intuitive loop-free approach.
function fh = get_polynomial_handle(p)
    function polynomial = poly(x)
        polynomial = sum(p.*x.^(0:numel(p)-1));
    end    
    fh = @poly;
end
0 comentarios
Más respuestas (2)
  ABHIJIT BISWAS
 el 23 de Dic. de 2020
        function fh = poly_fun(p)
    function polynomial = poly(x)
        polynomial = sum(p.*x.^(0:numel(p)-1));
    end    
    fh = @poly;
end
1 comentario
  Walter Roberson
      
      
 el 23 de Dic. de 2020
				what difference is there between this and the existing https://www.mathworks.com/matlabcentral/answers/632149-polynomial-with-function-handle#answer_529929
  Bruno Luong
      
      
 el 31 de Oct. de 2020
        function fh = get_polynomial_handle(p)
    function fn = poly1(x)
        fn=poly(p);
        function polynomial = poly(p)
            n = length(p);
            if n==0
                polynomial=0;
            else
                polynomial = p(1).*x.^(n-1) + poly(p(2:end));
            end
        end
    end
fh = @poly1;
end
0 comentarios
Ver también
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!