7 de dez. de 2012

Multiplicação de polinômios no Matlab sem o conv

Implementando, com auxílio dos conhecimentos do post anterior, a multiplicação de dois polinômios (que, normalmente, é feita pela função conv):


  1. function D=multiplicarPolinomios(A,C)
  2. % Entre com A e C na forma de vetor coluna e obtenha D, onde:
  3. % A representa a0^N+...+aN
  4. % B representa b0^M+...+bM
  5. %e a saida eh a0*b0^(M+N)+...+aNbM
  6.  
  7. N=length(C);
  8. B=zeros(0);
  9. for i=1:N,
  10.     Aux=[zeros(i-1,1);A;zeros(N-i,1)];
  11.     B=[B,Aux];
  12.     i=i+1;
  13. end
  14. D=B*C;


Precisei implementar essa função por extenso para calcular um sistema de equações, que não estava na forma explícita.

2 comentários:

  1. cara esse código nao funcionou versão do matlab R2013a

    declarei os vetores A e C com letras maiusculas e obtive o seguinte erro ao executar a funçao:


    Error using vertcat
    Dimensions of matrices being concatenated are not consistent.

    Error in convolucao (line 10)
    Aux=[zeros(i-1,1);A;zeros(N-i,1)];

    q versão do matlab vc usa?

    ResponderExcluir
  2. Fiz esse programa no 2008b, creio que não seja questão de compatibilidade, mas algum bug. Poderia passar os vetores A e C que você usou como entrada? Vou tentar reproduzir seu erro aqui e descobrir o bug. Caso descubra o bug, por favor comente aqui para contribuir para a comunidade.

    ResponderExcluir