Clase 5-Optimizacion Polinomios y Numeros Complejos

Preview:

Citation preview

Grupo de Modelamiento de Sistemas Programa de Ingeniería Civil U de A

Matlab cuenta con algunas herramientas que permiten optimizar funciones.

Básicamente, permite calcular el mínimo absoluto de funciones de una o varias variables en un intervalo y establecer parámetros de cálculo para el proceso.

Una función importante que ayuda a lo anterior es optimset.

optimset Esta herramienta crea una estructura de

opciones, los cuales pueden usarse con entradas para las siguientes funciones:

fminbnd, fminsearch, fzero, lsqnonneg. La sintaxis es:

options = optimset('param1',value1,'param2',value

2,...)

Si el valor es carácter, va entre apóstrofe

La siguiente tabla muestra las opciones que pueden ser modificadas para las funciones de

optimización.

A continuación se explicará cada una de las herramientas que permiten optimizar:

1.“fminbnd”: Dada una función de una variable, y un intervalo, calcula el valor de la variable independiente tal minimiza la función (en caso de existir). La sintaxis es:

x=fminbnd(‘nombrefunción’,a ,b): Regresa el valor de x que es un mínimo local de la función en el intervalo [a,b]

x=fminbnd(@nombrefunción,a ,b): Forma análoga a la anterior.

z=fminbnd(@(x)f(x),a ,b): Se crea una función anónima a partir de f(x). Se digita en el ( ).

z=fminbnd(f,a ,b): Se llama la función f, ya creada como anónima antes.

[x,fval]=fminbnd(‘nombrefunción’,a ,b): Hace lo mismo que las demás, con la adición de que regresa el valor de la función evaluada en el mínimo.

[x,fval,exitflag] = fminbnd(...): Devuelve lo mismo que antes, sólo que indica ahora si la función tuvo éxito o no. Si exitflag>0, indica que halló el resultado, si exitflag=0, indica que excedió la cantidad de búsquedas y si exitflag<0, indica que no halló nada.

Para hallar un máximo basta con cambiar la función f(x) por –f(x), y aplicar lo mismo que se vio antes.

2. “fminsearch”: Dada una función de varias variables, y un intervalo, determina el valor mínimo de una función. La sintaxis es la misma de la anterior función, sólo cambia el hecho de ingresar el intervalo entre corchetes.

Determinar los valores máximos y mínimos de las siguientes funciones en los intervalos indicados.

1)

2)

3)

4)

Matlab cuenta con una serie de funciones que permiten manipular polinomios, y resolver de forma rápida algunos problemas.

1.“roots”: Como ya se vio, obtiene las raíces de un polinomio de grado n.

2.“poly”: Si se aplica a una matriz cuadrada A, retorna el polinomio característico de la matriz, cuyas raíces son los valores propios de A.

Si por el contrario se aplica a un vector, retorna un polinomio cuyas raíces son el vector ingresado.

La sintaxis que se maneja es: sea A una matriz cuadrada, y V un vector.

D=poly(A): Devuelve el polinomio característicoP=poly(V): Entrega un P(x) cuyas raíces están en V.

3.“polyval”: Evalúa un polinomio en uno o varios valores de la variable independiente. La sintaxis usada es: A=polyval(p,[a,b,c,...,n]) la cual regresa un vector fila A con los valores de p evaluado en a, b, c,...,n o A=polyval(p,V) donde V es un vector fila

4. “polyfit”: Halla los coeficientes de una curva polinómica que se ajuste a unos datos dados, escogiendo el grado. La sintaxis usada es: p=polyfit(x,y,n) donde x es el dominio, y el rango y n el grado.

5. “polyvalm”: Evalúa un polinomio tomando como variable una matriz cuadrada. La sintaxis, dado un polinomio p y una matriz A, se tiene: B=polyvalm(p,A)

6. “polyeig”: Dadas n matrices cuadradas de orden m todas, retorna una matriz X de orden cuyas columnas son los vectores propios de cada matriz, y un vector columna e cuyos elementos son los valores propios de cada matriz. La sintaxis es

[M,e]=polyeig(A0,A1,... ,An)

7. “polyder”: Calcula la derivada simbólica de un polinomio, o un producto o cociente de estos.

La sintaxis puede ser: k=polyder(p): Calcula la derivada de p;k=polyder(a,b) calcula la derivada del producto de los polinomios a y b; y [q,d]=polyder(b,a) calcula la derivada del cociente polinomial b/a, donde q es el numerador y d el denominador.

8. “polyint”: Integra un polinomio en forma analítica, dando la integral indefinida del mismo, especificando la constante de integración.

La sintaxis es: Dado un vector fila P que contenga los coeficientes de un polinomio, A=polyint(P,K) da un vector fila que contiene los coeficientes de la integral de este y el valor de la constante de integración K, y A=polyint(P) hace lo mismo que la anterior, sólo que toma K=0.

9. “conv” y “deconv”: Si bien estos operadores vienen de la convolución, si se trata de vectores los toma como coeficientes de polinomios y los multiplica o divide, respectivamente. La sintaxis es: Multiplicación: r=conv(p,q)=conv(q,p) y División: s=deconv(p,q)

10.Suma y resta: Se siguen las mismas reglas que para operar matrices, es decir, que los vectores que representan los coeficientes de los polinomios tengan el mismo orden. Así, es caso de faltar algún exponente se reemplaza con un cero.

11.Fracciones parciales: Para la expansión de una función racional en fracciones parciales, es importante tener presente tres posibles casos:

Raíces reales no repetidas Raíces complejas Raíces repetidas

Para el trabajo con fracciones parciales, se emplea la función “residue” con la

siguiente sintaxis: [c,r]=residue(b,a) donde b y a son los vectores filas que contiene los coeficientes de la función racional: b son del numerador y a del

denominador. Las salidas, c y r contienen los coeficientes del numerador y los

términos independientes del denominador, siendo el primero el de la primera fracción y

el de menor grado.

Dados los polinomios p(x) y q(x), hallar lo siguiente:

1. p + q , p-q, q-p

2. p*q

3. p/q, y q/p

4. Los valores para p y q desde -2 hasta 2.

5. La derivada de p, q, p*q, p/q y q/p.

6. La integral de p, q y p*q, para valores de K desde -5 hasta 5.

Nota: Sólo se presenta una parte de la solución, ya que es bastante extensa. Para esto, se

recomienda ejecutar el algoritmo en Matlab y verla completa.

Determine los polinomios cuyas raíces son las siguientes:

1. -1,-5,-92. 1,2,3,4,5

3. i,-i,-0.5*i,+0,5*i,54. 2-3i, 2+3i

Descomponer en fracciones parciales, las siguientes expresiones:

Los números complejos, como es bien sabido, tiene una parte real y una imaginaria. Estos, se piensa a veces, no tienen aplicación

alguna. Sin embargo, esto no es cierto, ya que situaciones como resolver ciertos tipos de ecuaciones diferenciales implica cierto

manejo de los mismos.

En el campo de la Ingeniería Civil, más específicamente en estudios dinámicos en

estructuras y geotecnia pueden aparecer, por lo cual es importante conocer su manejo

básico

Matlab cuenta con algunas funciones que permiten trabajar con elementos de este

conjunto numérico.

1. Definición: En matlab, la unidad imaginaria se representa por las letras “i” o “j”, por lo que se recomienda no emplearlos para otras

situaciones distintas a ésta.

2. Ingreso: Es posible ingresarlos en tres formas distintas al programa:

Forma 1: z=a+b*j=a+j*b Forma 2: z=a+bj (NO z=a+jb)

Forma 3: z=complex(a,b) donde a es Re(z), y b es Im(z)

3. Parte real-parte imaginaria: Dado un número complejo Z, es posible obtener su parte real y compleja, así: a=real(Z) y b=imag(Z), donde las variables a y b

representan las partes real e imaginaria de Z

4. Representación polar: La forma polar de un complejo requiere conocer su magnitud y

su argumento principal o ángulo formado con el eje real. Dado un complejo Z,

definido en Matlab como tal, M=abs(Z) da su magnitud, y B=angle(Z) da su

argumento principal en rad. El valor de B está entre - y +. Se recuerda que la forma

polar es Z=R(cos*i+sen*j)

5. Operaciones: Suma, resta y producto se hacen en Matlab con las operaciones ya

conocidas. Basta con tener claro los conceptos respecto al álgebra de éstos.

6. Conjugado: La división entre complejos es necesario trabajarlos con la conjugada. En

Matlab se emplea la función “conj”. Dado un complejo Z, Z’=conj(Z) da su conjugado.

Cuando se estudie la generación de gráficos 2-D, se verá cómo trabajar estos con números

complejos.

Para cada una de los siguientes pares ordenados (a,b), determine:

1. Un complejo z=a+bi, y z*2. La magnitud y argumento de z y z*3. La parte real e imaginaria de z y z*

(-1,-1), (-5,6), (5,0), (6,-2), (1,3)

Exprese los resultados en una matriz.