Anuncio

Colapsar
No hay ningún anuncio todavía.

Programar función que devuelva el polinomio mínimo

Colapsar
X
 
  • Filtro
  • Hora
  • Mostrar
Borrar todo
nuevos mensajes

  • Octave Programar función que devuelva el polinomio mínimo

    Hola, tengo que hacer una función que devuelva el polinomio mínimo de una matriz y no tengo ni idea de cómo, quiero decir, no me sale, porque tengo los autovalores y la multiplicidad de cada uno, pero no sé cómo hacer para ir permutando todos y con diferentes exponentes, ya que no me dan el tamaño de la matriz.

    Yo había pensado en poner algo como bucles anidados, con tantos bucles como autovalores, pero claro, si no sé el tamaño no sé la cantidad de autovalores (que además variará para tamaños iguales).

    Sé que Matlab tiene una función que lo devuelve, pero no he encontrado ninguna en Octave.

    ¿Qué se puede hacer?

    Un saludo!

  • #2
    Re: Programar función que devuelva el polinomio mínimo

    Probaste con el comando size?

    Código:
    n=size(A);
    donde n(1)=filas, n(2)=columnas.

    Comentario


    • #3
      Re: Programar función que devuelva el polinomio mínimo

      La cosa es que no me dan la matriz, es programar la función sin más.

      Comentario


      • #4
        Re: Programar función que devuelva el polinomio mínimo

        Pero no entiendo Javi. Tu prototipo de función será:

        Código:
        function[polinomio a devolver]=elnombredetufuncion(argumentos)
        Y al aplicarla uno (o el único) argumento de la función va a ser justamente una matriz de la cuál no tenés porque conocer sus dimensiones.

        Qué me estoy perdiendo?.

        Un abrazo.-

        - - - Actualizado - - -

        Mirándo los teoremas implicados, la entrada de las matrices está restringida solo a matrices cuadradas.

        Te paso lo que implementé. No está optimizado a nivel de complejidad computacional, ni efectúa un chequeo de errores en caso de que el usuario ingrese una matriz no cuadrada (no sé si tu profesor quiere ese nivel de detalle). Te lo comenté para que puedas entenderlo mejor.

        Código:
        function [p] = minpol(A)
            
            a=eig(A); %el vector "a" contiene a los autovalores de la matriz A.
            n(1)=a(1); %el vector n será el que contendrá los autovalores sin multiplicidad. Agrego el primero.
            for k = 2 : length(eig(A))-1
               if (a(k)~= n(k-1)) %Si el autovalor que viene es distinto del que tengo cargado.
                    n(k)=a(k); %Lo agrego.
                end
            end
            p=poly(n); %devuelvo polinomio mónimo.
              
        end
        Lo probé y es una belleza

        Código:
        A=[3,-3,2;-1,5,-2;-1,3,0]
        
        
        A =
        
        
             3    -3     2
            -1     5    -2
            -1     3     0
        
        
        >> minpol(A)
        
        
        ans =
        
        
            1.0000   -6.0000    8.0000
        Espero que te sea útil.

        Un abrazo.-
        Última edición por Marce_; 25/04/2014, 17:29:57. Motivo: índice

        Comentario

        Contenido relacionado

        Colapsar

        Trabajando...
        X