• No se han encontrado resultados

Programaci´ on: rotaciones de Givens en el plano

N/A
N/A
Protected

Academic year: 2022

Share "Programaci´ on: rotaciones de Givens en el plano"

Copied!
4
0
0

Texto completo

(1)

Programaci´ on: rotaciones de Givens en el plano

Objetivos. Dado un vector v no nulo en R2, aprender a construir una matriz de rotaci´on R que transforme v en un m´ultiplo positivo del vector b´asico e1.

Requisitos. Programaci´on con matrices, vectores y ciclos; matrices ortogonales; soluci´on de sistemas de ecuaciones lineales.

Deducci´ on de las f´ ormulas

1. Sistema de ecuaciones. Est´a dado un vector v = [x, y]> ∈ R2\ {02}. Buscamos un par de n´umeros (c, s) ∈ R2 tal que c2+ s2 = 1 y

 c −s

s c

  x y



= px2+ y2 0



. (1)

La condici´on v 6= 02 significa que q

= kvk2 6= 0.

Calculamos el producto de la matriz por el vector en el lado izquierdo de la igualdad (1), y copiamos el lado derecho:

"

− +

#

=

" p

x2 + y2 0

#

. (2)

Escribimos esta igualdad de vectores como un sistema de dos ecuaciones lineales con inc´ognitas c y s:

c − s =p

x2+ y2 (3)

c + s = 0. (4)

El determinante del sistema es

= 6= 0,

por eso el sistema tiene una ´unica soluci´on. En el siguiente ejercicio vamos a resolver este sistema.

Programaci´on: rotaciones de Givens en el plano, p´agina 1 de 4

(2)

2. Soluci´on del sistema de ecuaciones (3) y (4). Sumamos la ecuaci´on (3) multiplicada por x, con la ecuaci´on (4) multiplicada por y:

c + 0s = .

Sumamos la ecuaci´on (3) multiplicada por −y con la ecuaci´on (4) multiplicada por x:

0c + s = .

Denotandopx2+ y2 por r, escribimos la soluci´on:

c = , s = . (5)

3. Soluci´on con n´umeros complejos. Vamos a resolver la misma ecuaci´on (1) de otra manera, usando n´umeros complejos. Los pares de n´umeros (x, y), (c, s) se pueden escribir como n´umeros complejos:

z = (x, y) = x + i y, u = (c, s) = c + i s.

Como ya hemos visto en (2), el lado izquierdo de la ecuaci´on vectorial (1) se escribe como el siguiente par ordenado de n´umeros reales o como un n´umero complejo:

,  =

| {z }

parte real

+ i (

| {z }

parte imaginaria

).

Este n´umero complejo es el producto de los n´umeros complejos y . El vector del lado derecho de (1) tambi´en se escribe en t´erminos de z:

px2+ y2, 0 = . Por eso la ecuaci´on (1) se transforma en la ecuaci´on

zu = |z|.

Su soluci´on es

u = |z|

z = |z| z

z z = .

La f´ormula obtenida es equivalente a la f´ormula (5).

4. Programaci´on: el c´alculo de los n´umeros c y s para un vector dado. Escriba una funci´on que calcule los n´umeros c y s del ejercicio anterior para un vector dado v ∈ R2\ {02}:

function [cs] = givenscs(v), r = norm(v);

c = s =

cs = [c; s];

end

Programaci´on: rotaciones de Givens en el plano, p´agina 2 de 4

(3)

Multiplicaci´ on de una matriz 2 × 2 por una matriz

5. Cada rengl´on del producto de dos matrices es una combinaci´on lineal de los renglones del segundo factor. Multiplique la matriz de rotaci´on por una matriz general 2 × 3:

RA =

"

c − s

s c

# "

A1,1 A1,2 A1,3 A2,1 A2,2 A2,3

#

=

" #

.

Copiamos el primer rengl´on de RA, luego lo escribimos como una combinaci´on lineal:

(RA)1,∗ =h i

= c h i

+ h i

. Hacemos una operaci´on similar con el segundo rengl´on de RA:

(RA)1,∗ =h i

= h i

+ h i

.

Resumen. Cada rengl´on de RA se escribe como una combinaci´on lineal de los renglones de A:

(RA)1,∗ = A1,∗+ A2,∗, (RA)2,∗ = A1,∗+ A2,∗. 6. Escriba una funci´on que multiplique la matriz de rotaci´on determinada por dos n´umeros c y s, por la matriz dada de tama˜no 2 × m, sin construir la matriz de rotaci´on en forma expl´ıcita.

function [B] = mulrotation22bymatrix(cs, A), B = zeros(size(A));

B(1, :) = cs(1) * A(1, :) + ??? * A(2, :);

B(2, :) = ??? * A(1, :) + ??? * A(2, :);

end

Programaci´on: rotaciones de Givens en el plano, p´agina 3 de 4

(4)

Comprobaci´ on

7. Escriba una funci´on que construya y devuelva la matriz de rotaci´on 2 × 2 determinada por dos n´umeros c y s:

function [R] = rotationmatrix22(cs), R = [ cs(1), ???; ???, ??? ];

end

8. Comprobaci´on. Escribimos una funci´on que calcula los n´umeros c y s para la primera columna de una matriz A, y luego multiplica la matriz de rotaci´on por esta matriz A.

function [] = testrotation22(), A = [-3, 5, 7, 6; 2, 4, 0, -5];

cs = givenscs(A(:, 1));

B = mulrotation22bymatrix(cs, A);

R = rotationmatrix22(cs);

display(A);

display(cs);

display(R);

display(B);

display(R * A);

end

Programaci´on: rotaciones de Givens en el plano, p´agina 4 de 4

Referencias

Documento similar

Este m´ etodo consiste en considerar un sistema de ecuaciones diferenciales como una subvariedad de un espacio de jets y determinar los automorfismos del plano cuyas prolongaciones

La dispersi´ on (o difusi´ on) de la luz es el fen´ omeno mediante el cual la radiaci´ on electromagn´ etica, al chocar con peque˜ nas part´ıculas de tipo coloidal o

We have deliberately introduced single carbon vacancies on a graphene monolayer grown on a Pt(111) surface and investigated its impact in the electronic, structural, and

sirven para describir la actitud paterna- lista de la sociedad estadounidense y la reacción de la personalidad femenina ante la imposición de un estereotipo. La tarea

En el Modelo Relacional se puede usar el c´ alculo de predicados de primer orden (CPPO) porque una BDR siempre puede verse como una interpretaci´ on (I) de un lenguaje de primer

Figura 5.9 Comparaci´ on del ranking la mejor soluci´ on encontrada hasta cada iteraci´ on, entre el algoritmo de b´ usqueda y su respectiva b´ usqueda aleatoria, para cada funci´

Como en el caso de los tipos enteros, los lenguajes suelen soportar varios tipos real, de modo que el programador pueda seleccionar aquel cuyo rango y precisi´on en el coeficiente

El inconveniente operativo que presenta el hecho de que la distribuci´ on de probabilidad de una variable aleatoria es una funci´ on de conjunto se resuelve mediante el uso de