Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Laboratorio de sistemas de control tutoriales, Guías, Proyectos, Investigaciones de Sistemas de Control

sistemas de control matlab, sciilab , tutoriales

Tipo: Guías, Proyectos, Investigaciones

2017/2018

Subido el 07/09/2022

gog-maggot
gog-maggot 🇧🇴

3 documentos

1 / 32

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
0.1 Ejercicios de Scilab
1. Escriba una funci´on [A, info] = Heron(a, b, c) que calcula, usando la ormula de Her´on de Ale-
jandr´ıa, el ´area de un tri´angulo cuyos lados miden a,b,c. El par´ametro de salida info valdr´a 1 si los
datos est´an bien.
En esta y en todas las funciones que usted escriba:
Si los datos pueden ser inadecuados o si el proceso puede no acabar satisfactoriamente debe haber
un par´ametro de salida que lo indique, por ejemplo info.
En los comentarios iniciales debe quedar claro lo que hace la funci´on, el etodo utilizado, el
significado de los par´ametros de entrada (datos) y de salida (resultados).
Cuando se presente alg´un error no previsto, adem´as de influir en el par´ametro info, la funci´on
debe escribir un aviso indicando el tipo de error, printf(... ).
2. Escriba una funci´on d = dist(x, y) que calcula la distancia entre dos puntos.
3. Escriba una funci´on a = area(x, y, z) que calcula el ´area de un tri´angulo cuyos ertices son x,y,
yz.
4. ¿Cual es el ´area del tri´angulo cuyos ertices est´an dados por los 6 ´ultimos d´ıgitos de su documento de
identidad?
5. Escriba una funci´on [xmin, fmin] = minimo(f, a, b, h) que halla el minimizador de una funci´on
en un intervalo, simplemente comparando todos los valores f(a), f(a+h), f(a+ 2h), ... Muestre el
resultado de su utilizaci´on en un ejemplo espec´ıfico.
6. Escriba una funci´on [r, info] = raiz(f, a, b, h, eps) que halla una ra´ız de la funci´on en el
intervalo, simplemente averiguando si entre los los valores f(a), f(a+h), f(a+ 2h), ... hay alguno tal
que |f(x)| ε. Muestre el resultado de su utilizaci´on en un ejemplo espec´ıfico.
7. Escriba una funci´on [a, info] = ordenaSegun(a, j) que ordena de manera ascendente las filas de
una matriz seg´un los elementos de la columna j. Muestre el resultado de su utilizaci´on en un ejemplo
espec´ıfico.
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20

Vista previa parcial del texto

¡Descarga Laboratorio de sistemas de control tutoriales y más Guías, Proyectos, Investigaciones en PDF de Sistemas de Control solo en Docsity!

0.1 Ejercicios de Scilab

  1. Escriba una funci´on [A, info] = Heron(a, b, c) que calcula, usando la f´ormula de Her´on de Ale- jandr´ıa, el ´area de un tri´angulo cuyos lados miden a, b, c. El par´ametro de salida info valdr´a 1 si los datos est´an bien. En esta y en todas las funciones que usted escriba: - Si los datos pueden ser inadecuados o si el proceso puede no acabar satisfactoriamente debe haber un par´ametro de salida que lo indique, por ejemplo info. - En los comentarios iniciales debe quedar claro lo que hace la funci´on, el m´etodo utilizado, el significado de los par´ametros de entrada (datos) y de salida (resultados). - Cuando se presente alg´un error no previsto, adem´as de influir en el par´ametro info, la funci´on debe escribir un aviso indicando el tipo de error, printf(... ).
  2. Escriba una funci´on d = dist(x, y) que calcula la distancia entre dos puntos.
  3. Escriba una funci´on a = area(x, y, z) que calcula el ´area de un tri´angulo cuyos v´ertices son x, y, y z.
  4. ¿Cual es el ´area del tri´angulo cuyos v´ertices est´an dados por los 6 ´ultimos d´ıgitos de su documento de identidad?
  5. Escriba una funci´on [xmin, fmin] = minimo(f, a, b, h) que halla el minimizador de una funci´on en un intervalo, simplemente comparando todos los valores f (a), f (a + h), f (a + 2h), ... Muestre el resultado de su utilizaci´on en un ejemplo espec´ıfico.
  6. Escriba una funci´on [r, info] = raiz(f, a, b, h, eps) que halla una ra´ız de la funci´on en el intervalo, simplemente averiguando si entre los los valores f (a), f (a + h), f (a + 2h), ... hay alguno tal que |f (x)| ≤ ε. Muestre el resultado de su utilizaci´on en un ejemplo espec´ıfico.
  7. Escriba una funci´on [a, info] = ordenaSegun(a, j) que ordena de manera ascendente las filas de una matriz seg´un los elementos de la columna j. Muestre el resultado de su utilizaci´on en un ejemplo espec´ıfico.

0.2 Procesos inestables

  1. En un archivo .sci escriba una funci´on function y = redDec(x, n) que redondea a x con n cifras decimales.
  2. Verifique si la siguiente funci´on redondea un n´umero con n cifras significativas.

function y = fun_xyz(x, n) y = 0. if x == 0, return, end

if x >= 0 signo = 1 else signo = - x = -x end

m = ceil( log10(x) ) k = 10^m t = x/k c = 10^n y = round(tc)/c y = yk*signo endfunction

Pru´ebela varias veces, con n´umero positivos, negativos, con cero, con n´umeros cercanos a cero, con n´umero grandes, con n´umeros negativos de valor absoluto grande, ...

  1. Escriba una funci´on function z = sumaRed(x, y, n) que redondea a x y a y, efect´ua la suma x + y y redondea el resultado con n cifras significativas.
  2. Escriba funciones function z = prodRed(x, y, n) function z = restaRed(x, y, n) function z = divRed(x, y, n) function z = raiz2Red(x n) que efect´uan el producto, la resta, la divisi´on y la raiz cuadrada con n cifras significativas.
  3. Considere la sucesi´on definida por

x 0 = 1 x 1 = 1/ 3

xn =

xn− 1 −

xn− 2 , n ≥ 2. (1)

Demuestre por inducci´on que

xn =

3 n^ , n = 0, 1 , 2 , ... (2)

  1. Haga un progama, archivo .sce, que produzca una tabla con cinco columnas:

0.3 M´etodo de Gauss sin y con pivoteo

El objetivo es escribir una funci´on que implemente el m´etodo de Gauss sin pivoteo, una funci´on que im- plemente el m´etodo de Gauss con pivoteo parcial y comparar los resultados. En ambos casos, en todas las operaciones se redondea con un n´umero fijo de cifras. Puede ser con un n´umero fijo de cifras significativas o con un n´umero fijo de cifras decimales.

  1. Escriba funciones, redond(x, n), sumaRed(x, y, n), multRed(x, y, n), divRed(x, y, n), restaRed(x, y, n), redMatr(a, n), para redondear un n´umero con n cifras, sumar (redondea los n´umeros, suma y redondea el resultado), multiplicar, dividir, restar y redondear una matriz.
  2. Escriba funciones [x, info] = solTriSupR(a, b, nc) [a, b, info] = triangR(a0, b0, nc) [x, info] = GaussR(a, b, nc) que, respectivamente, resuelve un sistema triangular superior, triangulariza un sistema de ecuaciones y resuelve un sistema de ecuaciones por el m´etodo de Gauss. En las tres funciones las operaciones se hacen utilizando redondeo con nc cifras. Siempre, por convenci´on, el par´ametro de salida o resultado info valdr´a 1 si y solamente si el proceso se desarroll´o satisfactoriamente. No olvide incluir en la primera funci´on (en el sentido de su utilizaci´on en el tiempo) el redondeo de los datos. Puede ensayar la funci´on con solTriSupR con ejemplos construidos “a mano” o con datos aleatorios. Por ejemplo, puede usar ´ordenes semejantes a

n = 4; a = (rand(n,n) - 0.5)20; a = triu(a); x0 = (rand(n,1) - 0.5)20; b = a*x0; xTS = solTriSup0(a, b); errTS = norm(xTS-x0)

El valor de errTS debe ser cero o casi cero. Para GaussR puede utilizar ´ordenes semejantes a las anteriores, excluyendo a = triu(a). Para escribir las 3 funciones, pueden ser ´utiles pero no indispensables, los siguientes pasos:

  • escribir funciones x = solTriSup0(a, b), [a, b] = triang0(a0, b0), x = Gauss0(a, b) que no controlan la existencia de pivotes nulos ni la posiblidad de que la matriz no sea invertible.
  • escribir funciones [x, info] = solTriSup(a, b), [a, b, info] = triang(a0, b0), [x, info] = Gauss(a, b) que controlan la existencia de pivotes nulos, que hacen intercambio de filas cuando es necesario y que consideran la posibilidad de que la matriz sea no invertible. En estas funciones se pueden utilizar las operaciones matriciales de Scilab.
  • escribir funciones [x, info] = solTriSup1(a, b), [a, b, info] = triang1(a0, b0), [x, info] = Gauss1(a, b), semejantes a las 3 anteriores pero que no utilizan las operaciones matriciales de Scilab. Por ejemplo, la orden a(i,i+1:n)x(i+1:n) se puede remplazar por t = 0 for j = i+1:n t = t + a(i,j)x(j) end
  1. Escriba funciones [a, b, info] = triangPP_R(a0, b0, nc) [x, info] = GaussPP_R(a, b, nc) que, respectivamente, triangulariza un sistema de ecuaciones con pivoteo parcial y resuelve un sistema

de ecuaciones por el m´etodo de Gauss con pivoteo parcial. En estas funciones las operaciones se hacen utilizando redondeo con nc cifras. Puede ser ´util escribir funciones previas an´alogas a las indicadas para las funciones triangR, etc.

  1. Construya un ejemplo 2 × 2 o 3 × 3 o 4 × 4, donde:
    • no haya diferencia (o muy peque˜na) al utilizar GaussR y GaussPP_R con 15 cifras significativas.
    • haya diferencia clara al utilizar GaussR y GaussPP_R con un n´umero de cifras entre 4 y 12.
  1. Para resolver una sistema de ecuaciones Ax = b, con matriz definida positiva, es preferible, en lugar del m´etodo de Gauss, utilizar el m´etodo de Cholesky, es decir - Obtener U tal que U TU = A. - Resolver U Ty = b. - Resolver U x = y.

¿Cual es, aproximadamente, el n´umero de operaciones de punto flotante requeridas para el proceso anterior?

  1. Obtenga una estimaci´on del tiempo requerido para la soluci´on de un sistema con matriz definida positiva mediante las tres ´ordenes

u = chol(a) y = (u’)\b x = u\y

  1. Compare el tiempo anterior con el tiempo de x = a\b. Concluya.
  2. Escriba una funci´on x = solTriSup(a, b) que resuelve un sistema de ecuaciones con matriz triangular superior. Suponga provisionalmente que los tama˜nos son compatibles, que la matriz s´ı es triangular superior y que no hay elementos diagonales nulos.
  3. Escriba una funci´on x = solTriInf(A, b) que resuelve un sistema de ecuaciones con matriz triangular inferior.
  4. Escriba una funci´on x = sol_Ut_b(U, b) que resuelve el sistema triangular inferior U Tx = b donde U T^ es triangular inferior, es decir, U es triangular superior. Esta funci´on es muy parecida a la anterior, pero la informaci´on sobre la matriz est´a en diferente sitio.
  5. Escriba la funci´on x = solDP(a, b) que resuelve un sistema de ecuaciones con matriz definida positiva mediante las ´ordenes

u = chol(a) y = sol_Ut_b(U, b) x = solTris(u, y)

  1. Obtenga una estimaci´on del tiempo de la funci´on anterior. Compare con el tiempo de x = a\b. Concluya.

0.5 M´etodo de Gauss-Seidel

Se desea resolver un sistema de ecuaciones lineales Ax = b. El algortimo para el m´etodo de GS se puede escribir as´ı:

datos: A, b, x^0 , ε, maxit x = x^0 para k = 1, ...,maxit nrmD← 0 para i = 1, ..., n δi = (bi − Ai· x)/aii xi ← xi + δi nrmd←nrmD+|δi| fin-para i si nrmD ≤ ε ent x∗^ ≈ x, salir fin-para k

  1. Escriba una funci´on [x, k, info] = GS(a, b, x0, eps, maxit) que implementa el m´etodo de GS. Los resultados ser´an: x aproximaci´on de la soluci´on (posiblemente), k el n´umero de iteraciones com- pletas realizadas e info que valdr´a 1 si se obtuvo una buena aproximaci´on de la soluci´on.
  2. Considere una matriz A de la forma

A =

d 1 0 v 1 0 0 0 · · · 0 d 2 0 v 2 0 0 u 1 0 d 3 0 v 3 0 0 u 2 0 d 4 0 v 4

dn− 2 0 vn− 2 0 dn− 1 0 un− 2 0 dn

En palabras, los elementos diagonales de A son d 1 , d 2 , ..., dn; en la segunda superdiagonal est´an los valores v 1 , v 2 , ..., vn− 2. en la segunda subdiagonal est´an los valores u 1 , u 2 , ..., un− 2. Los otros elementos (entradas) de A son nulos. Escriba una funcion A = matriz3(d, u, v) que, dados los tres arreglos d, u y v, construye expl´ıcitamente la matriz A.

  1. Escriba una funci´on [x, k, info] = GS3(d, u, v, b, x0, eps, maxit) que implementa el m´etodo de GS para resolver Ax = b, donde A es una matriz con la forma descrita anteriormente. Esta funci´on no construye expl´ıcitamente la matriz A. Los resultados parciales (puede agregar temporalmente disp o printf ) y finales deben ser los mismos por cualquiera de los dos formas siguientes: - utilizar GS. - con matriz3 construir expl´ıcitamente A y utilizar GS.

Es necesario adaptar el algortimo para tener en cuenta las especificidades de cada fila de A:

0.6 M´etodo de Muller

Este m´etodo sirve para hallar ra´ıces reales o complejas de polinomios reales p(x) = a 0 +a 1 x+a 2 x^2 +...+anxn. El polinomio p se puede expresar en funci´on de sus ra´ıces:

p(x) = an(x − r 1 )(x − r 2 ) · · · (x − rn).

Las ra´ıces complejas, no reales, siempre vienen por parejas, es decir si r = a + ib, b 6 = 0, es una ra´ız, entonces ¯r = a − ib, el conjugado de r, tambi´en es ra´ız. Para las ra´ıces complejas q(x) = (x − r)(x − ¯r) divide a p(x).

q(x) = (x − r)(x − ¯r) = (x − a − ib)(x − a + ib) = (x − a)^2 + b^2 = x^2 − 2 ax + (a^2 + b^2 ).

Si se halla una ra´ız real r entonces q(x) = (x − r) divide a p(x).

En general, si q(x) divide a p(x), entonces existe un polinomio s(x) tal que

p(x) = q(x)s(x), grado(p) = grado(q) + grado(s).

Entonces para sequir obteniendo las ra´ıces de p(x) basta con obtener las ra´ıces de s(x), polinomio m´as sencillo.

En el m´etodo de la secante, dados dos valores x 0 y x 1 se busca la recta que pasa por los puntos (x 0 , f (x 0 )), (x 1 , f (x 1 )); el siguiente valor x 2 est´a dado por el punto donde la recta corta el eje x. En el m´etodo de Muller, en lugar de una recta, se utiliza una par´abola. Dados tres valores x 0 , x 1 y x 2 , se construye la par´abola P (x) que pasa por los puntos (x 0 , f (x 0 )), (x 1 , f (x 1 )) y (x 2 , f (x 2 )); el siguiente valor x 3 est´a dado por el (un) punto tal que P (x 3 ) = 0.

La par´abola se puede escribir de la forma P (x) = a(x − x 2 )^2 + b(x − x 2 ) + c. Las f´ormulas que permiten calcular a, b y c son:

d = (x 0 − x 1 )(x 0 − x 2 )(x 1 − x 2 ),

a =

−(x 0 − x 2 )(f (x 1 ) − f (x 2 )) + (x 1 − x 2 )(f (x 0 ) − f (x 2 ) d

b =

(x 0 − x 2 )^2 (f (x 1 ) − f (x 2 )) − (x 1 − x 2 )^2 (f (x 0 ) − f (x 2 ) d

c = f (x 2 ).

Entonces

x 3 − x 2 = −b ±

b^2 − 4 ac 2 a Para reducir los errores de redondeo se “racionaliza” el numerador y buscando que el denominador resultante sea grande (en valor absoluto)

D = b^2 − 4 ac R =

D

δ =

b + R si |b + R| ≥ |b − R| b − R si |b + R| < |b − R|

x 3 = x 2 −

2 c δ

Si en una iteraci´on D = b^2 − 4 ac < 0 es necesario utilizar, a partir de ah´ı, aritm´etica compleja (Scilab lo hace autom´aticamente). Eso hace que los siguientes valores a, b y c no sean necesariamente reales. Muy posiblemente b^2 − 4 ac tampoco es real.

METODO DE MULLER PARA UNA RA´ ´IZ

datos: p, x 0 , x 1 , x 2 , εf , ε 0 , maxit f 0 = p(x 0 ), f 1 = p(x 1 ), f 2 = p(x 2 ) info= 0 para k = 1, ..., maxit si |f 2 | ≤ εf ent r = x 2 , info= 1, parar d = (x 0 − x 1 )(x 0 − x 2 )(x 1 − x 2 ) si |d| ≤ ε 0 ent parar calcular a, b y c seg´un (3) D = b^2 − 4 ac R =

D

δ 1 = b + R, δ 2 = b − R si |δ 1 | ≥ |δ 2 | ent δ = δ 1 , sino δ = δ 2 si |δ| ≤ ε 0 ent parar x 3 = x 2 − 2 c/δ x 0 = x 1 , x 1 = x 2 , x 2 = x 3 , f 0 = f 1 , f 1 = f 2 f 2 = p(x 2 ) fin-para k

Si el algoritmo anterior acaba normalmente, info valdr´a 1 y r ser´a una ra´ız, real o compleja. En la anterior descripci´on del algoritmo, |t| indica valor absoluto si t es real, e indica m´odulo si t es complejo.

  1. Averig¨ue c´omo efectuar divisi´on de polinomios en Scilab.
  2. Escriba una funci´on [r, info] = Muller1(coef, x0, x1, x2, epsf, eps0, maxit) que obtiene (si al final info vale 1) una ra´ız de un polinomio cuyos coeficientes reales est´an, en orden creciente de la potencia, en el vector coef. En el algoritmo presentado, esta funci´on va desde tomar o redefinir x 0 , x 1 , x 2 hasta sino q(x) = (x − r)(x − r¯).
  3. Escriba una funci´on [rr, info] = Muller(coef, x0, epsf, eps0, maxit) que obtiene (si al final info vale 1) todas las ra´ıces de un polinomio cuyos coeficientes reales est´an, en orden creciente de la potencia, en el vector coef. Las ra´ıces quedar´an en el vector rr. Esta funci´on utiliza varias veces Muller.

METODO DE MULLER´ datos: p, x 0 , εf , ε 0 , maxit r = x 0 , h = 0. 5 mientras grado(p) ≥ 3 x 0 = r, x 1 = x 0 + h, x 2 = x 1 + h (r, inf o) = M uller1(p, xo, x 1 , x 2 , εf , ε 0 , maxit) si inf o = 0, ent parar si |imag(r)| ≤ ε 0 ent q(x) = (x − r) sino q(x) = (x − r)(x − ¯r) p(x) = p(x)/q(x) fin-mientras calcular ra´ıces de p (de grado no superior a 2)

  1. Sean k 1 , k 2 , ..., k 7 los primeros siete d´ıgitos del n´umero de su documento de identidad. Halle las seis ra´ıces del polinomio cuyos coeficientes, en orden creciente de la potencia, son k 7 , k 6 , ..., k 1. Muestre los resultados intermedios para la primera utilizaci´on de Muller.
  1. La f´ormula para obtener p utilizando polinomios de Lagrange es

p(x) =

∑^ n

k=

ykLk(x).

En seudolenguaje,

p(x) ← 0 para k = 1, ..., n construir Lk(x) p(x) ← p(x) + yk Lk(x) fin-para

Escriba una funci´on p = polInterpPL(x, y) que obtiene el polinomio de interpolaci´on utilizando polinomios de Lagrange. Las coordenadas de los puntos est´an en los vectores columna x y y.

  1. Escriba una funci´on que calcula el factorial de un entero no negativo.
  2. Sean x , y dos vectores columna con las coordenadas de n puntos: ( 0, (−1)n−^1 (n − 1)! ), (1, 0), (2, 0), (3, 0), ..., (n − 1 , 0). Considere n = 5 y construya expl´ıcitamente los vectores columna x, y. Obtenga p, el polinomio de interpolaci´on, usando polInterpSE. Construya un vector columna yse con los valores del polinomio p evaluado en los valores del vector columna x. Te´oricamente los dos vectores, y y yse son iguales. Obtenga la norma de y-yse.
  3. Obtenga p, el polinomio de interpolaci´on, usando polInterpPL. Construya un vector columna ypl con los valores del polinomio evaluado en los valores del vector columna x. Obtenga la norma de y-ypl.
  4. Repita los dos pasos anteriores para n = 3, 4 , ..., 20. Construya una tabla de tres columnas, en la primera los valores de n, en la segunda columna los valores norm(y-yse) y en la tercera columna los valores norm(y-ypl). Concluya.

0.8 Error local y global del m´etodo del

trapecio y de Simpson

  1. Escriba una funci´on [a, b] = rectaMinC(X, Y) que obtiene los dos coeficientes de la recta de aproxi- maci´on por m´ınimos cuadrados y = ax + b para los puntos cuyas coordenadas est´an en los dos vectores columna X y Y.

m = size(X,1) A = [ones(m,1) X] aa = (A’A)(A’Y) b = aa(1) a = aa(2)

  1. Escriba una funci´on s = trapecio(f, a, b, n) que obtiene una aproximaci´on de la integral definida por medio de la f´ormula del trapecio

∫ (^) b

a

f (x) dx ≈ h

f (a) + f (b) 2

n∑− 1

i=

f (xi)

h = b − a n xi = a + ih

Las ´ordenes importantes son semejantes a:

h = (b-a)/n s = ( f(a) + f(b) )/ for i=1:n- s = s + f( a+ih) end s = sh

  1. Escriba una funci´on s = Simpson(f, a, b, n) que obtiene una aproximaci´on de la integral definida por medio de la f´ormula de Simpson (con n par)

∫ (^) b

a

f (x) dx ≈ h 3

f (a) + f (b) + 4

n∑− 1

i=1, 3 ,...

f (xi) + 2

n∑− 2

i=2, 4 ,...

f (xi)

h =

b − a n xi = a + ih

  1. Escoja una funci´on (diferente de un polinomio de grado inferior a 7) de la cual conoce la (una) antiderivada, es decir, para la cual se puede obtener f´acilmente el valor exacto de una integral definida. Por ejemplo f (x) = ex. Con a = 0, h = 0.2, b = a + h, n = 1, obtenga el valor aproximado por la f´ormula del trapecio, el valor exacto de

∫ (^) b a f^ (x)^ dx^ y^ e^ el valor absoluto del error cometido.^ Estos valores de h y e deben ser almacenados en arreglos H y E.

  1. Repita el paso anterior para h = 0. 21 , 0. 22 , ..., 0 .25 (de nuevo b = a + h, n = 1).

0.9 Comparaci´on de m´etodos de Simpson y Gauss-Legendre

Se desea comparar para una funci´on diferente de un polinomio, con antiderivada conocida (se puede obtener el valor exacto de una integral definida), el m´etodo de Simpson y el m´etodo de cuadratura de Gauss-Legendre, utilizando el mismo n´umero de evaluaciones de la funci´on.

  1. Escoja una funci´on, diferente de un polinomio, de la cual conoce la (una) antiderivada. Por ejem- plo f (x) = ex. Escoja un intervalo “razonable”, por ejemplo, a = 1, b = 2. Escriba una funci´on y = f08(x) donde se calcula la funci´on f.
  2. Escoja dos valores a < b y obtenga el valor exacto de

∫ (^) b

a

f (x) dx

  1. Obtenga una aproximaci´on de

∫ (^) b

a

f (x) dx utilizando intg.

  1. Obtenga una aproximaci´on de

∫ (^) b

a

f (x) dx utilizando la f´ormula de Simpson con 6 subintervalos (hay 7 evaluaciones de f ).

  1. Escriba una funci´on s = Simpson38(f, a, b, n) que obtiene una aproximaci´on de la integral definida por medio de la f´ormula de Simpson 3/8 con n m´ultiplo de 3. ∫ (^) x 3

x 0

f (x) dx ≈

h(y 0 + 3y 1 + 3y 2 + y 3 ).

Para el intervalo [a, b], con n (m´ultiplo de 3) subintervalos ∫ (^) b

a

f (x) dx ≈

h(y 0 + 3y 1 + 3y 2 + 2y 3 + 3y 4 + 3y 5 + 2y 6 + 3y 7 + · · · + 3yn− 2 + 3yn− 1 + yn).

Los pasos principales pueden ser:

h = (b − a)/n s ← f (a) + f (b)

s ← s + 3

n∑− 2

i=1, 4 ,...

f (xi)

s ← s + 3

n∑− 1

i=2, 5 ,...

f (xi)

s ← s + 2

n∑− 3

i=3, 6 ,...

f (xi)

s ← 3 hs/ 8

donde xi = a + ih. O tambi´en,

h = (b − a)/n s ← f (a) + f (b) para i = 1, ..., n − 1 y ← f (a + ih) si 3 |i ent s ← s + 2y sino s ← s + 3y fin-para s ← 3 hs/ 8

La notaci´on p|q significa “p divide a q”. En Scilab se puede escribir if modulo(q, p) == 0

  1. Obtenga una aproximaci´on de

∫ (^) b

a

f (x) dx mediante h = (b-a)/5, Simpson(f08, a, a+2h, 2) + Simpson38(f08, a+2h, b, 3) (se utilizan 6 evaluaciones de f ).

  1. En el m´etodo de cuadratura de Gauss-Legendre de orden m el c´alculo num´erico de la integral se hace mediante la siguiente aproximaci´on: ∫ (^1)

− 1

f (x) dx ≈ wm 1 f (xm 1 ) + wm 2 f (xm 2 ) + · · · wmmf (xmm).

Los valores wmj , los pesos o ponderaciones, y los valores xmj , las abcisas, son fijos y conocidos.

Cuadratura de Gauss-Legendre m ±xmj wmj 1 0.000000000000000 2. 2 0.577350269189626 1. 3 0.000000000000000 0. 0.774596669241483 0. 4 0.339981043584856 0. 0.861136311594053 0. 5 0.000000000000000 0. 0.538469310105683 0. 0.906179845938664 0. 6 0.238619186083197 0. 0.661209386466265 0. 0.932469514203152 0.

En Abramowitz y Stegun hay una tabla muy completa. Para integrar en otro intervalo es necesario hacer un cambio de variable, ∫ (^) b

a

f (x) dx ≈

b − a 2

∑^ m

j=

wmj f

b − a 2 xmj +

a + b 2

Escriba una funci´on s = GaussLeg1(f, a, b, m) que calcula de manera aproximada

∫ (^) b a f^ (x)^ dx^ por el m´etodo de cuadratura de Gauss-Legendre de orden m. En esta funci´on se definen y se utilizan dos matrices X y W. La matriz X es triangular inferior de tama˜no 6 × 6: en las primeras m posiciones de la fila m est´an las m abcisas y, de manera an´aloga, la matriz W tiene los pesos correspondientes. La parte principal de esta funci´on puede ser semejante a

X = [ 0 0 0 0 0 0; // -0.577350269189626 0.577350269189626 0 0 0 0 // 0 -0.774596669241483 0.774596669241483 0 0 0 // -0.339981043584856 0. .. -0.861136311594053 0.861136311594053 0 0 // 0 -0.538469310105683 0. ..

0.10 M´etodo de Newton en Rn

y c´alculo num´erico de la matriz jacobiana

  1. Considere una funci´on f : Rn^ → Rn, por ejemplo,

f (x 1 , x 2 ) = ( 2x^21 + 3x 1 x 2 + 4x 2 − 38 , − 5 x 1 x 2 + 6x 1 − 6 x 2 + 36 ) Escriba una funci´on fx = f09(x) que, para un vector columna x, construye el vector columna fx con las dos componentes de f (x).

  1. Encuentre, usando fsolve, un vector x tal que f (x) = 0 para la funci´on definida en f09.
  2. Dada una funci´on f : Rn^ → Rn, se denotar´a por f ′(x) la matriz jacobiana de f evaluada en x. En esta matriz n × n, la fila i est´a formada por las n derivadas parciales de fi (la i-´esima componente de f ). Escriba una funci´on J = jac09(x) que para un vector columna x, construye la matriz jacobiana J de la funci´on definida en f09.
  3. En el m´etodo de Newton en Rn^ (para hallar un x tal que f (x) = 0), en cada iteraci´on hay dos pasos fundamentales

resolver f ′(xk) dk^ = −f (xk) xk+1^ = xk^ + dk^.

Estos pasos presuponen que para caulquier xk^ se puede obtener f (xk) y f ′(xk). El m´etodo termina satisfactoriamente si

||f (xk)|| ≤ ε.

Las terminaciones no deseadas, pero posibles, son

  • demasiadas iteraciones sin encontrar un x adecuado.
  • f ′(xk) no es invertible (su determinante es nulo o casi nulo).

Escriba una funci´on [x, info, k] = Newton1(f, jac, x0, eps, maxit) que implementa el m´etodo de Newton. El resultado info valdr´a 1 si se obtuvo un x adecuado, 2 si en maxit iteraciones no se pudo obtener una soluci´on adecuada y valdr´a 0 si en alguna iteraci´on la matriz jacobiana es singular o casi singular. En la funci´on f se calcula f (x), en la funci´on jac se calcula f ′(x), el vector columna x0 es la aproximaci´on inicial. El n´umero de iteraciones realizadas estar´a en k.

  1. Verifique la funci´on anterior mediante [x, info, k] = Newton1(f09, jac09, [1; 1], 1.0e-4, 20) y con otros ejemplos.
  2. Averig¨ue mediante qu´e funci´on de Scilab puede obtener num´ericamente la matriz jacobiana de una funci´on. Escriba una funci´on [x, info, k] = Newton2(f, x0, eps, maxit) que implementa el m´etodo de Newton. Aqu´ı no es necesario tener una funci´on externa que eval´ua la matriz jacobiana, basta con tener f.
  3. Para una funci´on ϕ : R → R la derivada se puede aproximar por

ϕ′(x) ≈ ϕ(x + h) − ϕ(x) h y tambi´en ϕ′(x) ≈ ϕ(x + h) − ϕ(x − h) 2 h

La derivada parcial se puede aproximar por

∂fi ∂xj

(x) ≈ fi(x 1 , x 2 , ..., xj + h, ..., xn− 1 , xn) − fi(x 1 , ..., xn) h con h cercano a 0. Una mejor aproximaci´on es

∂fi ∂xj (x) ≈

fi(x 1 , x 2 , ..., xj + h, ..., xn− 1 , xn) − fi(x 1 , x 2 , ..., xj − h, ..., xn− 1 , xn) 2 h

Escriba una funci´on Dij = der_fi_xj(f, i, j, x) que calcula la anterior aproximaci´on.

  1. Escriba una funci´on J = jacobiana3(f, x) que calcula aproximadamente la matriz jacobiana.
  2. Escriba una funci´on [x, info, k] = Newton3(f, x0, eps, maxit) que implementa el m´etodo de Newton aproximando la matriz jacobiana mediante la funci´on anterior.
  3. Escriba una funci´on Dj = der_f_xj(f, j, x) que construye un vector columna con als n derivadas parciales con respecto a xj.
  4. Escriba una funci´on J = jacobiana4(f, x) que calcula aproximadamente la matriz jacobiana us- ando al funci´on anterior.
  5. Escriba una funci´on [x, info, k] = Newton4(f, x0, eps, maxit) que implementa el m´etodo de Newton aproximando la matriz jacobiana mediante la funci´on anterior.
  6. Con los mismos par´ametros de entrada, observe en n´umero de iteraciones para cada una de las 3 implementaciones.
  7. Una manera m´as precisa para tratar de medir la eficiencia, es mediante el n´umero de llamados a la funci´on f. Obtenga este n´umero para cada una de las implementaciones (puede utilizar global). Concluya.