Polinomios

De Ejercicios

Contenido

Enunciado

Una posible representación para un polinomio P es un vector en el que en cada celda se encuentra almacenado el coeficiente con grado igual a la posición-1 que ocupa en dicho vector. Un ejemplo sería el polinomio de grado 6, P(x)=9x6-5x5+4x3-18x+1 que vendría representado mediante un vector de la forma:

1 -18 0 4 0 -5 9

Utilizando dicha representación, realizar en Matlab los siguientes apartados:

Apartado 1. Implementar una función que dados un polinomio P y un valor de x, devuelva P(x), es decir, el resultado de evaluar el polinomio para el valor x.
Apartado 2. Implementar una función que dado un polinomio cualquiera devuelva la derivada de dicho polinomio. Para el ejemplo anterior:
-18 0 12 0 -25 54
Apartado 3. Implementar un programa que pida al usuario que introduzca un polinomio y un valor y, utilizando las funciones anteriores, muestre por pantalla el resultado de evaluar el polinomio para ese valor así como su derivada, siguiendo el formato (para el ejemplo):
P’(x)= 54.0x^5 - 25.0x^4 + 12.0x^2 - 18.0


Soluciones

Programa en Matlab

Apartado 1

function valor=Evalua(p,x)
%Parámetros de entrada:
%   p: un vector que representa un polinomio. El primer elemento
%     del vector es el coeficiente independiente
%   x: valor para evaluar p
%Parámetros de salida:
%   el resultado de evaluar p en x
 
t=length(p);
valor=0;
for g=1:t
    valor=valor+p(g)*(x^(g-1));
end

Apartado 2

function pd=Derivada(p)
%Parámetros de entrada:
%   p: un vector que representa un polinomio. El primer elemento
%     del vector es el coeficiente independiente
%Parámetros de salida:
%   pd: polinomio derivada de p
 
pd=[];
t=length(p);
for g=2:t
    pd=[pd (p(g)*(g-1))];
end

Apartado 3

%Programa Polinomio
%Entradas:
%   un polinomio (representado como vector, empieza con el término 
%        independiente en la primera posición)
%   un valor 
%Salidas:
%   el resultado de evaluar el polinomio con el valor dado
%   el polinomio derivado del dado
 
poli=input('Introduce entre corchetes los coeficientes del polinomio, empieza por el menor grado: ');
x=input('Introduce el punto donde evaluarlo: ');
y=Evalua(poli,x);
polider=Derivada(poli);
disp(['Resultado evaluación: ',num2str(y)]);
disp('Polinonimo derivada: ');
t=length(polider);
if (t==0)
    disp('No hay polinomio: ');
else
    for g=t:-1:1
        if(polider(g)~=0)  % lo mostramos si es distinto de cero
            if(g==1)  % término independiente no va multiplicado
                fprintf('%0.1f',polider(g))
            else
                if (polider(g)>=0 && g~=t) % coef. positivo y no es el primer escrito
                    fprintf('+%0.1f*x^%d',polider(g),g-1);
                else % coeficiente negativo, ya tiene el signo o el primero que no lleva
                    fprintf('%0.1f*x^%d',polider(g),g-1);
                end
            end
        end
    end
    fprintf('\n');
end
Tipos de soluciones