Matlab 2 Capitulo 5

15
UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja ESCUELA DE INGENIERÍA CIVIL ÁREA DE FÍSICA Y MATEMÁTICAS 2009

Transcript of Matlab 2 Capitulo 5

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJALa Universidad Católica de Loja

ESCUELA DE INGENIERÍA CIVIL

ÁREA DE FÍSICA Y MATEMÁTICAS

2009

OPERACIONES CON ESCALARES Y ARREGLOS.

5.1. Operaciones con Escalares.

5.2. Operaciones con Arreglos.

5.3. Precedencia de Operaciones aritméticas.

5.1. Operaciones con Escalares.

5.2. Operaciones con Arreglos.

5.3. Precedencia de Operaciones aritméticas.

Operaciones con Escalares.Las expresiones que contienen escalares y operaciones escalares sepueden evaluar y almacenar en una variable especificada, como en lasiguiente instrucción, que especifica que los valores de a y b se sumen y lasuma se almacene en x:Esta instrucción de asignación debe interpretarse así: el valor que está ena se suma al valor que está en b y la suma se almacena en x.Es importante tener presente que una variable sólo puede almacenar unvalor a la vez.

Las operaciones aritméticas entre dos escalares se muestran en la siguientetabla:

Las expresiones que contienen escalares y operaciones escalares sepueden evaluar y almacenar en una variable especificada, como en lasiguiente instrucción, que especifica que los valores de a y b se sumen y lasuma se almacene en x:Esta instrucción de asignación debe interpretarse así: el valor que está ena se suma al valor que está en b y la suma se almacena en x.Es importante tener presente que una variable sólo puede almacenar unvalor a la vez.

Las operaciones aritméticas entre dos escalares se muestran en la siguientetabla:

Operaciones aritméticas entre dos escalares

Operación Forma algebraica MATLABSuma a+b a + bResta a-b a – bMultiplicación a*b a*bDivisión a/b a/bExponenciación ab a^b

Operaciones con ArreglosLas operaciones de arreglos se ejecutan elemento por elemento. Por ejemplo, supongaque A y B son vectores de fila con cinco elementos. Una forma de generar un nuevovector de fila C cuyos valores sean los productos de los valores correspondientes de A yde B es la siguiente:

C(2)=A(2)*B(2);

C(3)=A(3)*B(3);

C(4)=A(4)*B(4);

C(5)=A(5)*B(5);

C(2)=A(2)*B(2);

C(3)=A(3)*B(3);

C(4)=A(4)*B(4);

C(5)=A(5)*B(5);

Estos comandos son en esencia comandos escalares porque cada uno multiplica unsolo valor por otro y almacena el producto en un tercer valor. Para indicar quequeremos realizar una multiplicación elemento por elemento entre dos matrices delmismo tamaño, usamos un asterisco precedido por un punto. Así, las cincoinstrucciones anteriores pueden ser sustituidas por la siguiente:

C(2)=A(2)*B(2);

C(3)=A(3)*B(3);

C(4)=A(4)*B(4);

C(5)=A(5)*B(5);

C(2)=A(2)*B(2);

C(3)=A(3)*B(3);

C(4)=A(4)*B(4);

C(5)=A(5)*B(5);

No poner el punto antes del asterisco es una omisión grave porque en tal caso lainstrucción especifica una operación de matrices, no una operación elemento porelemento.

C=A.*B;C=A.*B;

En el caso de la suma y la resta, las operaciones de arreglos y las de

matrices son iguales, así que no necesitamos distinguir entre ellas. En

cambio; las operaciones de arreglos para multiplicación, división y

exponenciación son diferentes de las operaciones de matrices para

multiplicación, división y exponenciación, así que necesitamos incluir un

punto para especificar una operación de arreglos. Estas reglas se resumen

en la siguiente tabla:

Operaciones con ArreglosEn el caso de la suma y la resta, las operaciones de arreglos y las de

matrices son iguales, así que no necesitamos distinguir entre ellas. En

cambio; las operaciones de arreglos para multiplicación, división y

exponenciación son diferentes de las operaciones de matrices para

multiplicación, división y exponenciación, así que necesitamos incluir un

punto para especificar una operación de arreglos. Estas reglas se resumen

en la siguiente tabla:

Operaciones elemento por elementoOperación Forma algebraica MATLABSuma a+b a + bResta a-b a – bMultiplicación a*b a.*bDivisión a/b a./bExponenciación ab a.^b

• Las operaciones elemento por elemento, u operaciones de arreglos,

no sólo se aplican a operaciones entre dos matrices del mismo

tamaño, sino también a operaciones entre un escalar y un no

escalar. Así, las dos instrucciones de cada uno de los siguientes

juegos de instrucciones son equivalentes para una matriz A:

Operaciones con Arreglos

• Las operaciones elemento por elemento, u operaciones de arreglos,

no sólo se aplican a operaciones entre dos matrices del mismo

tamaño, sino también a operaciones entre un escalar y un no

escalar. Así, las dos instrucciones de cada uno de los siguientes

juegos de instrucciones son equivalentes para una matriz A:

B= 3*A;B= 3.*A;C= A/5;C= A./5;

B= 3*A;B= 3.*A;C= A/5;C= A./5;

Las matrices resultantes B y C tendrán el mismo tamaño que A.

• A fin de ilustrar las operaciones de arreglos para vectores,considere los dos siguientes vectores de fila:

Operaciones con Arreglos

A= [2 5 6] B= [2 3 5]A= [2 5 6] B= [2 3 5]

• Si calculamos el producto de arreglos de A y B usando la siguienteinstrucción:

• Si calculamos el producto de arreglos de A y B usando la siguienteinstrucción:

• C contendrá los siguientes valores:

C=A.*B;C=A.*B;

[4 15 30][4 15 30]

• El comando de división de arreglos,

C=A./B;C=A./B;

• Genera un nuevo vector en el que cada elemento de A se divideentre el elemento correspondiente de B. Así, C contendrá lossiguientes valores:

[1 1.6667 1.2][1 1.6667 1.2]

Operaciones con Arreglos

• La exponenciación de arreglos también es una operaciónelemento por elemento. Por ejemplo, considere las siguientesinstrucciones:

A= [2, 5, 6];B= [2, 3, 5];C= A.^2;D= A.B;

A= [2, 5, 6];B= [2, 3, 5];C= A.^2;D= A.B;

Operaciones con Arreglos

•Los vectores C y D son los siguientes:

C= [4 25 36] D= [4 125 7776]C= [4 25 36] D= [4 125 7776]

•También podemos usar una base escalar con un exponentevector, como en:•También podemos usar una base escalar con un exponentevector, como en:

C=3.0.^A;C=3.0.^A;

•Que genera un vector con los siguientes valores:

[9 243 729][9 243 729]

•Este vector también podría haberse calculado con la instrucción:

C= (3).^A;C= (3).^A;

Si no está seguro de haber escrito la expresión correcta, siempre

pruébela con ejemplos sencillos como los que hemos usado aquí.

Los ejemplos anteriores utilizaron vectores, pero las mismas reglas

se aplican a matrices con filas y columnas, como se ilustra con las

siguientes instrucciones:

Operaciones con Arreglos

Si no está seguro de haber escrito la expresión correcta, siempre

pruébela con ejemplos sencillos como los que hemos usado aquí.

Los ejemplos anteriores utilizaron vectores, pero las mismas reglas

se aplican a matrices con filas y columnas, como se ilustra con las

siguientes instrucciones:

d= [1:5; -1:-1:-5]p= d.*5q= d.^3

d= [1:5; -1:-1:-5]p= d.*5q= d.^3

Los valores de estas matrices son:

d =1 2 3 4 5

-1 -2 -3 -4 -5

d =1 2 3 4 5

-1 -2 -3 -4 -5

Operaciones con Arreglos

d =1 2 3 4 5

-1 -2 -3 -4 -5

p =5 10 15 20 25-5 -10 -15 -20 -25

p =5 10 15 20 25-5 -10 -15 -20 -25

q =1 8 27 64 125-1 -8 -27 -64 -125

q =1 8 27 64 125-1 -8 -27 -64 -125

Precedencia de Operaciones aritméticas.

TABLA 2.4 Precedencia de operaciones aritméticas

Precedencia Operación

1 paréntesis, primero los más internos2 exponenciación de izquierda a derecha2 exponenciación de izquierda a derecha3 multiplicación y división, de izquierda a

derecha4 suma y resta, de izquierda a derecha

En vista de que es posible combinar varias operaciones en unasola expresión aritmética, es importante saber en qué orden serealizan las operaciones.

• Suponga que queremos calcular el área de un trapezoide; lavariable base contiene la longitud de la base y altura_1 y altura_2contienen las dos alturas. El área de un trapezoide puede calcularsecon la siguiente instrucción MATLAB:

area = 0.5*base*(altura_1 + altura_2);

• Suponga que omitimos los paréntesis en la expresión:

area = 0.5*base*altura_1 + altura_2;

• Esta instrucción se ejecutaría como si fuera la instrucción:

area = (0.5*base*altura_1) + altura_2;

Precedencia de Operaciones aritméticas.

• Suponga que queremos calcular el área de un trapezoide; lavariable base contiene la longitud de la base y altura_1 y altura_2contienen las dos alturas. El área de un trapezoide puede calcularsecon la siguiente instrucción MATLAB:

area = 0.5*base*(altura_1 + altura_2);

• Suponga que omitimos los paréntesis en la expresión:

area = 0.5*base*altura_1 + altura_2;

• Esta instrucción se ejecutaría como si fuera la instrucción:

area = (0.5*base*altura_1) + altura_2;

Observe que si bien se calculó la respuesta incorrecta, no se imprimen

mensajes de error para alertarnos. Por tanto, es muy importante tener

mucho cuidado al convertir ecuaciones en instrucciones MATLAB. Agregar

paréntesis extra es una forma fácil de asegurarse de que los cálculos se

harán en el orden deseado.

Por ejemplo, considere la siguiente ecuación:

Precedencia de Operaciones aritméticas.Observe que si bien se calculó la respuesta incorrecta, no se imprimen

mensajes de error para alertarnos. Por tanto, es muy importante tener

mucho cuidado al convertir ecuaciones en instrucciones MATLAB. Agregar

paréntesis extra es una forma fácil de asegurarse de que los cálculos se

harán en el orden deseado.

Por ejemplo, considere la siguiente ecuación:

Podría calcularse el valor de f usando las siguientes instrucciones MATLAB,suponiendo que x es un escalar:

numerador = x^3 - 2*x^2 + x - 6.3;denominador = x^2 + 0.05005*x - 3.14;f = numerador/denominador;

numerador = x^3 - 2*x^2 + x - 6.3;denominador = x^2 + 0.05005*x - 3.14;f = numerador/denominador;

El código que se ingresará será el siguiente:

Precedencia de Operaciones aritméticas.

>> numerador= [1 -2 +1 -6.3]numerador =

1.0000 -2.0000 1.0000 -6.3000

>> denominador=[0 +1 +0.05005 -3.14]denominador =

0 1.0000 0.0500 -3.1400

>> f=numerador/denominadorf =

1.6417

>> numerador= [1 -2 +1 -6.3]numerador =

1.0000 -2.0000 1.0000 -6.3000

>> denominador=[0 +1 +0.05005 -3.14]denominador =

0 1.0000 0.0500 -3.1400

>> f=numerador/denominadorf =

1.6417

>> numerador= [1 -2 +1 -6.3]numerador =

1.0000 -2.0000 1.0000 -6.3000

>> denominador=[0 +1 +0.05005 -3.14]denominador =

0 1.0000 0.0500 -3.1400

>> f=numerador/denominadorf =

1.6417

>> numerador= [1 -2 +1 -6.3]numerador =

1.0000 -2.0000 1.0000 -6.3000

>> denominador=[0 +1 +0.05005 -3.14]denominador =

0 1.0000 0.0500 -3.1400

>> f=numerador/denominadorf =

1.6417

Es mejor usar varias instrucciones fáciles de entender que usar unainstrucción que requiere meditar con cuidado el orden en que debe

ejecutarse las operaciones.