83
Introdu¸ ao ao Scilab 3.0 Parte 2 Paulo S. Motta Pires [email protected] Departamento de Engenharia de Computa¸ ao e Automa¸ ao Universidade Federal do Rio Grande do Norte NATAL - RN Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 1 / 83

Introdução ao Scilab 3.0 Parte 2

Embed Size (px)

Citation preview

Page 1: Introdução ao Scilab 3.0 Parte 2

Introducao ao Scilab 3.0Parte 2

Paulo S. Motta [email protected]

Departamento de Engenharia de Computacao e AutomacaoUniversidade Federal do Rio Grande do Norte

NATAL - RN

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 1 / 83

Page 2: Introdução ao Scilab 3.0 Parte 2

Contatos Contatos

Enderecos e Creditos

Prof. Paulo S. Motta Pires

e-mail: [email protected]

homepage : www.dca.ufrn.br/~pmotta

Este material pode ser copiado livremente, mantidos os creditos.

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 2 / 83

Page 3: Introdução ao Scilab 3.0 Parte 2

Agenda

Agenda

Parte 1

Introducao: Computacao NumericaO Ambiente Scilab

Parte 2

Operacoes BasicasPolinomios, Vetores, Matrizes e Listas

Parte 3

Programacao

Parte 4

GraficosConsideracoes Finais

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 3 / 83

Page 4: Introdução ao Scilab 3.0 Parte 2

Agenda

Agenda Parte 2 - Detalhes

Operacoes Basicas:

IntroducaoFuncoes Internas

Polinomios, Vetores, Matrizes, Listas

PolinomiosVetoresMatrizes

Acesso a ElementosMatrizes de PolinomiosMatrizes SimbolicasMatrizes BooleanasOperacoes com Vetores e Matrizes

Listas

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 4 / 83

Page 5: Introdução ao Scilab 3.0 Parte 2

Operacoes Basicas Interacao com o Usuario

Interacao com o Usuario

Scilab como uma calculadora

Scilab como um ambiente de programacao (tratado na Parte 3)

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 5 / 83

Page 6: Introdução ao Scilab 3.0 Parte 2

Operacoes Basicas Linha de Comando

Linha de Comando - Scilab como uma Calculadora

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 6 / 83

Page 7: Introdução ao Scilab 3.0 Parte 2

Operacoes Basicas Ponto-e-vırgula

Ponto-e-vırgula

-->// O ponto-e-virgula suprime a apresentacao do resultado

-->A = 1; // a variavel A assume o valor 1

-->b = 2; // atribuindo a variavel b o valor 2

-->A + b // Adicao de A e b

ans =

3.

-->

// - Comentario

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 7 / 83

Page 8: Introdução ao Scilab 3.0 Parte 2

Operacoes Basicas Nomes de Variaveis

Nomes de Variaveis - Case Sensitive

incr, INCR, Incr, InCr - representam variaveis DIFERENTES

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 8 / 83

Page 9: Introdução ao Scilab 3.0 Parte 2

Operacoes Basicas Complexos

Variaveis Complexas

-->A = 5 + 2 * %i // Atribuindo a A o valor 5 + 2i

A =

5. + 2.i

-->B = -2 + %i // Atribuindo a B o valor -2 + i

B =

- 2. + i

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 9 / 83

Page 10: Introdução ao Scilab 3.0 Parte 2

Operacoes Basicas Operacoes com Variaveis Complexas

Operacoes com Variaveis Complexas

--> // Operacoes com variaveis complexas

-->A * B // Multiplicacao

ans =

- 12. + i

-->A / B // Divisao

ans =

- 1.6 - 1.8i

-->A + B // Adicao

ans =

3. + 3.i

-->A - B // Subtracao

ans =

7. + i

-->sqrt(-2) // Funcao raiz quadrada com argumento negativo

ans =

1.4142136i

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 10 / 83

Page 11: Introdução ao Scilab 3.0 Parte 2

Operacoes Basicas Comandos

Comandos

-->m = 1.5; b = 35; c = 24; // Varios comandos em uma unica linha

-->A = 3 * m ^ 2 + ... // Um comando em varias linhas

--> 4 * 5 + ...

--> 5 * 3

A =

41.75

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 11 / 83

Page 12: Introdução ao Scilab 3.0 Parte 2

Operacoes Basicas Definicoes de Indices

Definicoes de Indices

Um vetor de ındices possui a forma geral

Variavel = valor_inicial:incremento:valor_final

-->I = 1:3 // Definindo I como um vetor com 3 posicoes

I =

! 1. 2. 3. !

-->j = 1:2:5 // Indice j com incremento igual a 2

j =

! 1. 3. 5. !

-->k = 5:-1:1 // Definindo k como um vetor com 5 posicoes

k =

! 5. 4. 3. 2. 1. !

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 12 / 83

Page 13: Introdução ao Scilab 3.0 Parte 2

Operacoes Basicas Trabalhando com Ambientes

Trabalhando com Ambientes

-->// Definindo a e mudando de ambiente

-->a = 1.5; pause

-1-> // Mudanca no prompt

-1->a

a =

1.5

-1->// Definindo b no novo ambiente

-1->b = 2.5;

-1->// Mostrando a e b no novo ambiente

-1->a, b

a =

1.5

b =

2.5

-1->// Retornando ao ambiente anterior

-1->resume // Pode ser usado o comando return

-->a, b // Mostra a e b. Variavel b foi perdida

a =

1.5

!--error 4

undefined variable : b

-->a = 1.5 // Definindo a no ambiente original

a =

1.5

-->pause // Mudando de ambiente

-1->b = 1.5 // Definindo b no novo ambiente

b =

1.5

-1->b = resume(b) // b no ambiente original

-->a, b

a =

1.5

b =

1.5

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 13 / 83

Page 14: Introdução ao Scilab 3.0 Parte 2

Operacoes Basicas Funcoes Internas - Exemplo 1

Exemplo 1 - Funcoes Internas

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 14 / 83

Page 15: Introdução ao Scilab 3.0 Parte 2

Operacoes Basicas Funcoes Internas - Exemplo 2 - Usando o Editor

Exemplo 2 - Usando o Editor

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 15 / 83

Page 16: Introdução ao Scilab 3.0 Parte 2

Polinomios Introducao

Polinomios

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 16 / 83

Page 17: Introdução ao Scilab 3.0 Parte 2

Polinomios Definicao - Raızes

Definicao pelas Raızes

-->// Polinomio definido pelas suas raizes

-->p = poly([1 2], ’s’)

p =

2

2 - 3s + s

--> // Verificacao

-->roots(p)

ans =

! 1. !

! 2. !

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 17 / 83

Page 18: Introdução ao Scilab 3.0 Parte 2

Polinomios Definicao - Coeficientes

Definicao pelos Coeficientes

-->// Polinomio definido pelos seus coeficientes

-->q = poly([1 2], ’s’, ’coeff’)

q =

1 + 2s

-->roots(q) // Obtendo as raizes do polinomio q

ans =

- 0.5

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 18 / 83

Page 19: Introdução ao Scilab 3.0 Parte 2

Polinomios Operacoes

Operacoes com Polinomios

-->p, q

p =

2

2 - 3s + s

q =

1 + 2s

-->p * q // Multiplicacao

ans =

2 3

2 + s - 5s + 2s

-->p / q // Divisao

ans =

2

2 - 3s + s

----------

1 + 2sPaulo Motta (DCA-UFRN) Scilab 3.0 2005.1 19 / 83

Page 20: Introdução ao Scilab 3.0 Parte 2

Polinomios Operacoes

Operacoes com Polinomios

-->[r, q] = pdiv(p,q) // Efetuando a divisao: q=quociente, r=resto

q =

- 1.75 + 0.5s

r =

3.75

-->p + q // Adicao

ans =

2

3 - s + s

-->p - q // Subtracao

ans =

2

1 - 5s + s

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 20 / 83

Page 21: Introdução ao Scilab 3.0 Parte 2

Polinomios Obtendo Valores

Polinomios: Obtendo Valores

-->x = poly(0, ’x’)

x =

x

-->p = x^2 - 3*x + 5 // definindo o polinomio

p =

2

5 - 3x + x

-->horner(p, 2) // avaliando o polinomio em x = 2

ans =

3.

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 21 / 83

Page 22: Introdução ao Scilab 3.0 Parte 2

Vetores Introducao

Vetores

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 22 / 83

Page 23: Introdução ao Scilab 3.0 Parte 2

Vetores Definicao

Vetores: Definicoes

Dizemos que x e um vetor de dimensao n em R, indicado por x ∈ Rn , se,e somente se,

x =

x1

x2...

xn

Nessa definicao, cada um dos elementos do vetor x, xi , pertence a R,

xi ∈ R

O elemento xi e o i-esimo elemento do vetor x.O vetor x definido anteriormente e um vetor coluna. Para explicitar estacondicao, escrevemos

x ∈ Rn×1

Essa notacao indica que o vetor x possui n linhas e apenas uma coluna.Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 23 / 83

Page 24: Introdução ao Scilab 3.0 Parte 2

Vetores Vetor Coluna

Vetor Coluna

-->x = [ 1; 2; 3] // vetor coluna. Elementos separados por ;

x =

! 1. !

! 2. !

! 3. !

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 24 / 83

Page 25: Introdução ao Scilab 3.0 Parte 2

Vetores Vetor Linha

Vetor Linha

Um vetor linha, y, de dimensao n em R pode ser escrito na forma

y =[y1, y2, . . . , yn

]Para explicitar a condicao de vetor linha, escrevemos

y ∈ R1×n

Essa notacao indica que o vetor y possui apenas uma linha e n colunas.

-->y = [ 1 2 3] // vetor linha; Elementos separados por espaco

y =

! 1. 2. 3. !

-->z = [ 4, 5, 6] // vetor linha; Elementos separados por virgula

z =

! 4. 5. 6. !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 25 / 83

Page 26: Introdução ao Scilab 3.0 Parte 2

Vetores Vetor Transposto

Vetor Transposto

Se x e um vetor coluna, xT (le-se “x transposto”) e um vetor linha. Essa operacao e realizadano Scilab atraves da utilizacao do sımbolo ’ (apostrofo).

-->x = [1; 2; 3] // vetor coluna

x =

! 1. !

! 2. !

! 3. !

-->x’ // x transposto = vetor linha

ans =

! 1. 2. 3. !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 26 / 83

Page 27: Introdução ao Scilab 3.0 Parte 2

Vetores Operacoes com Vetores

Operacoes com Vetores

x,y ∈ R3×1.

x =

123

e

y =

456

-->x = [ 1; 2; 3] // Definindo o vetor x

x =

! 1. !

! 2. !

! 3. !

-->y = [ 4; 5; 6] // Definindo o vetor y

y =

! 4. !

! 5. !

! 6. !

-->size(x) // Dimensao do vetor x

ans =

! 3. 1. !

-->size(y) // Dimensao do vetor y

ans =

! 3. 1. !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 27 / 83

Page 28: Introdução ao Scilab 3.0 Parte 2

Vetores Operacoes com Vetores

Operacoes com Vetores

x,y ∈ R3×1.

x =

123

e

y =

456

-->3 * x // Multiplicando x por uma constante

ans =

! 3. !

! 6. !

! 9. !

-->x / 2 // Dividindo x por uma constante

ans =

! 0.5 !

! 1. !

! 1.5 !

-->x + y // Somando os dois vetores

ans =

! 5. !

! 7. !

! 9. !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 28 / 83

Page 29: Introdução ao Scilab 3.0 Parte 2

Vetores Produto Escalar

Produto Escalar

Dados dois vetores de mesma dimensao, x,y ∈ Rn×1, define-se o produtoescalar ou produto interno entre x e y atraves da expressao vetorial,

z = xTy

-->x = [ 1; 2; 3]; y = [ 4; 5; 6];

-->z = x’ * y // Atribuindo a z o produto escalar entre x e y

z =

32.

Em linguagem convencional:

z =n∑

i=1

xiyi

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 29 / 83

Page 30: Introdução ao Scilab 3.0 Parte 2

Vetores Produto Vetorial

Produto Vetorial

Se os vetores x e y possuem dimensoes diferentes, isto e, x ∈ Rm×1 ey ∈ Rn×1, podemos definir o produto vetorial ou produto externo entreeles atraves da expressao,

C = xyT

Vamos considerar

x =

123

e y =[45

]-->x = [1; 2; 3]; y = [4; 5];

-->C = x * y’ // Produto vetorial de x por y

C =

! 4. 5. !

! 8. 10. !

! 12. 15. !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 30 / 83

Page 31: Introdução ao Scilab 3.0 Parte 2

Vetores Outros Vetores

Outros Exemplos de Vetores

-->v = 5: -0.5: 3 // Vetor com elementos decrementados

v =

! 5. 4.5 4. 3.5 3. !

-->m = ones(1:4) // Vetor constituido de elementos iguais a 1

m =

! 1. 1. 1. 1. !

-->z = zeros(1:5) // Vetor constituido de elementos iguais a 0

z =

! 0. 0. 0. 0. 0. !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 31 / 83

Page 32: Introdução ao Scilab 3.0 Parte 2

Matrizes Introducao

Matrizes

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 32 / 83

Page 33: Introdução ao Scilab 3.0 Parte 2

Matrizes Definicao

Seja R o conjunto dos numeros reais. Dizemos que A e uma matriz dedimensao m × n em R, indicado por A ∈ Rm×n , se, e somente se,

A =

a1,1 a1,2 · · · a1,n

a2,1 a2,2 · · · a2,n...

.... . .

...am,1 am,2 · · · am,n

onde cada um dos elementos ai ,j ∈ R. Nessa notacao, a variavel m indicao numero de linhas e a variavel n indica o numero de colunas da matriz A.Se A for uma matriz quadrada, o numero de linhas e igual ao numero decolunas e, entao, m = n.

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 33 / 83

Page 34: Introdução ao Scilab 3.0 Parte 2

Matrizes Representacao

Representacao de Matrizes

A,B ∈ R2×3:

A =[1 2 35 −8 9

]e

B =[1 2 34 5 6

]

-->A = [1 2 3; 5 -8 9] // separados por espaco

A =

! 1. 2. 3. !

! 5. - 8. 9. !

-->B = [1, 2, 3; 4, 5, 6] // separados por virgulas

B =

! 1. 2. 3. !

! 4. 5. 6. !

-->size(A) // Dimensao da matriz A

ans =

! 2. 3. !

-->size(B) // Dimensao da matriz B

ans =

! 2. 3. !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 34 / 83

Page 35: Introdução ao Scilab 3.0 Parte 2

Matrizes Representacao

Representacao de Matrizes

-->M = [ 1 2 3 4 // Linhas separadas por <enter>

-->5 6 7 8

-->9 11 13 15]

M =

! 1. 2. 3. 4. !

! 5. 6. 7. 8. !

! 9. 11. 13. 15. !

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 35 / 83

Page 36: Introdução ao Scilab 3.0 Parte 2

Matrizes Operacoes

Operacoes com Matrizes

A,B ∈ R2×3:

A =[1 2 35 −8 9

]e

B =[1 2 34 5 6

]

-->2 * A // Multiplicacao por um escalar

ans =

! 2. 4. 6. !

! 10. - 16. 18. !

-->A / 2 // Divisao por uma constante

ans =

! 0.5 1. 1.5 !

! 2.5 - 4. 4.5 !

-->A + B // Somando as duas matrizes

ans =

! 2. 4. 6. !

! 9. - 3. 15. !

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 36 / 83

Page 37: Introdução ao Scilab 3.0 Parte 2

Matrizes Matriz Transposta

Matriz Transposta

Se A ∈ Rm×n , a transposta da matriz A, indicada por AT , e tal queAT ∈ Rn×m . A trasposicao e indicada pelo sımbolo ’ (apostrofo).

-->B = [1, 2, 3; 4, 5, 6]

B =

! 1. 2. 3. !

! 4. 5. 6. !

-->size(B) // Dimensao da matriz B

ans =

! 2. 3. !

-->C = B’ // C = transposta da matriz B

C =

! 1. 4. !

! 2. 5. !

! 3. 6. !

-->size(C) // Dimensao da matriz C

ans =

! 3. 2. !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 37 / 83

Page 38: Introdução ao Scilab 3.0 Parte 2

Matrizes Produto de Matrizes - Definicao

Produto de Matrizes - Definicao

Se A ∈ Rm×p e B ∈ Rp×n , podemos definir o produto das matrizes A eB ,

C = A× B ∈ Rm×n

Observar que, para que possa haver a multiplicacao entre duas matrizes, enecessario que o numero de colunas da primeira matriz seja igual aonumero de linhas da segunda matriz.

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 38 / 83

Page 39: Introdução ao Scilab 3.0 Parte 2

Matrizes Produto de Matrizes - Exemplo

Produto de Matrizes - Exemplo

A =

1 2 34 5 67 8 9

e

B =

1 42 53 6

-->A = [ 1 2 3; 4 5 6; 7 8 9]

A =

! 1. 2. 3. !

! 4. 5. 6. !

! 7. 8. 9. !

-->B = [ 1 4; 2 5; 3 6]

B =

! 1. 4. !

! 2. 5. !

! 3. 6. !

-->size(A)

ans =

! 3. 3. !

-->size(B)

ans =

! 3. 2. !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 39 / 83

Page 40: Introdução ao Scilab 3.0 Parte 2

Matrizes Produto de Matrizes - Exemplo

Produto de Matrizes - Exemplo

A =

1 2 34 5 67 8 9

e

B =

1 42 53 6

-->A * B

ans =

! 14. 32. !

! 32. 77. !

! 50. 122.

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 40 / 83

Page 41: Introdução ao Scilab 3.0 Parte 2

Matrizes Matrizes Especiais

Matrizes Especiais

-->D = ones(2,3)

D =

! 1. 1. 1. !

! 1. 1. 1. !

-->E = zeros(3,3)

E =

! 0. 0. 0. !

! 0. 0. 0. !

! 0. 0. 0. !

-->I = eye(4,4) // Matriz Identidade

I =

! 1. 0. 0. 0. !

! 0. 1. 0. 0. !

! 0. 0. 1. 0. !

! 0. 0. 0. 1. !

-->Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 41 / 83

Page 42: Introdução ao Scilab 3.0 Parte 2

Matrizes Composicao de Matrizes

Composicao de Matrizes

-->// Definido as matrizes A, B e C

-->A = [1 2; 3 4];

-->B = [5 6; 7 8];

-->C = [9 10; 11 12];

-->// Matriz D: agrupando A, B e C

-->D = [A B C]

D =

! 1. 2. 5. 6. 9. 10. !

! 3. 4. 7. 8. 11. 12. !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 42 / 83

Page 43: Introdução ao Scilab 3.0 Parte 2

Matrizes Composicao de Matrizes

Composicao de Matrizes

-->// Matriz D

-->D

D =

! 1. 2. 5. 6. 9. 10. !

! 3. 4. 7. 8. 11. 12. !

-->// Definindo a matriz E a partir dos elementos de D

-->E = matrix(D,3,4)

E =

! 1. 4. 6. 11. !

! 3. 5. 8. 10. !

! 2. 7. 9. 12. !

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 43 / 83

Page 44: Introdução ao Scilab 3.0 Parte 2

Acesso a Elementos de Vetores e Matrizes Formas de Acesso

Formas de Acesso a Elementos

Utilizando os ındices do elemento a ser acessado

Utilizando o sımbolo : (dois pontos)

Utilizando o sımbolo $

Utilizando operacoes booleanas.

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 44 / 83

Page 45: Introdução ao Scilab 3.0 Parte 2

Acesso a Elementos de Vetores e Matrizes Vetores - Acesso por Indice

Vetores - Acesso por Indice

-->v = [1 2 3 4 5 6 7] // definicao do vetor v

v =

! 1. 2. 3. 4. 5. 6. 7. !

-->v(1) // acesso ao primeiro elemento de v

ans =

1.

-->v(5) // acesso ao quinto elemento de v

ans =

5.

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 45 / 83

Page 46: Introdução ao Scilab 3.0 Parte 2

Acesso a Elementos de Vetores e Matrizes Vetores

Vetores - Forma Compacta

-->v = [1 2 3 4 5 6 7] // definicao do vetor v

v =

! 1. 2. 3. 4. 5. 6. 7. !

-->v(2:4) // acesso aos elementos 2, 3 e 4 de v

ans =

! 2. 3. 4. !

-->v(:) // acesso a todos os elementos de v

ans =

! 1. !

! 2. !

! 3. !

! 4. !

! 5. !

! 6. !

! 7. !

-->v(1:2:7) // acesso aos elementos impares de v

ans =

! 1. 3. 5. 7. !

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 46 / 83

Page 47: Introdução ao Scilab 3.0 Parte 2

Acesso a Elementos de Vetores e Matrizes Vetores - Sımbolo $

Vetores - Sımbolo $

-->v = [1 2 3 4 5 6 7] // definicao do vetor v

v =

! 1. 2. 3. 4. 5. 6. 7. !

-->v($) // acesso ao ultimo elemento de v

ans =

7.

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 47 / 83

Page 48: Introdução ao Scilab 3.0 Parte 2

Acesso a Elementos de Vetores e Matrizes Vetores - Variaveis Booleanas

Vetores - Variaveis Booleanas

-->v = [1 2 3 4 5 6 7] // definicao do vetor v

v =

! 1. 2. 3. 4. 5. 6. 7. !

-->v([%f %t %f %t %t]) // acesso usando %t e %f

ans =

! 2. 4. 5. !

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 48 / 83

Page 49: Introdução ao Scilab 3.0 Parte 2

Acesso a Elementos de Vetores e Matrizes Matrizes - Acesso por Indices

Matrizes - Acesso por Indices

-->A = [1 2 3; 4 5 6] // Definindo uma matriz A

A =

! 1. 2. 3. !

! 4. 5. 6. !

-->A(1,2) // primeira linha e segunda coluna de A

ans =

2.

-->M = A([1 2], 2) // primeiro e segundo elementos da segunda coluna

M =

! 2. !

! 5. !

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 49 / 83

Page 50: Introdução ao Scilab 3.0 Parte 2

Acesso a Elementos de Vetores e Matrizes Matrizes - Forma Compacta

Matrizes - Forma Compacta

Atraves do operador : Scilab implementa formas compactas que permitemacessar elementos de uma matriz. Considerando A ∈ Rm×n , a notacaoA(k , :) representa a k-esima linha da matriz A,

A(k , :) = [ak ,1, ak ,2, . . . , ak ,n ]

e a notacao A(:, k) representa a k-esima coluna da matriz A,

A(:, k) = [a1,k , a2,k , . . . , am,k ]

O sımbolo : (dois pontos) assume o significado de“todos os elementos”.Assim, A(k , :) pode ser lido como“todos os elementos da k-esima linha damatriz A”e A(:, k) pode ser lido como“todos os elementos da k-esimacoluna da matriz A”.

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 50 / 83

Page 51: Introdução ao Scilab 3.0 Parte 2

Acesso a Elementos de Vetores e Matrizes Matrizes - Forma Compacta

Matrizes - Forma Compacta

-->A = [1 2 3; 4 5 6]

A =

! 1. 2. 3. !

! 4. 5. 6. !

-->A(:, 3) // Todos os elementos da terceira coluna de A

ans =

! 3. !

! 6. !

-->A(2,:) // Todos os elementos da segunda linha de A

ans =

! 4. 5. 6. !

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 51 / 83

Page 52: Introdução ao Scilab 3.0 Parte 2

Acesso a Elementos de Vetores e Matrizes Matrizes - Forma Compacta

Matrizes - Forma Compacta

-->A = [1 2 3; 4 5 6]

A =

! 1. 2. 3. !

! 4. 5. 6. !

--> // Todos os elementos da terceira, segunda e primeira colunas de A

-->A(:, 3:-1:1)

ans =

! 3. 2. 1. !

! 6. 5. 4. !

-->A(:, [3 2 1]) // Forma equivalente

ans =

! 3. 2. 1. !

! 6. 5. 4. !

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 52 / 83

Page 53: Introdução ao Scilab 3.0 Parte 2

Acesso a Elementos de Vetores e Matrizes Matrizes - Sımbolo $

Matrizes - Sımbolo $

-->A = [1 2 3; 4 5 6]

A =

! 1. 2. 3. !

! 4. 5. 6. !

-->// Primeiro e segundo elementos da segunda coluna de A

-->A(1:2, $-1)

ans =

! 2. !

! 5. !

-->// Segundo e primeiro elementos da segunda coluna de A

-->A($:-1:1, 2)

ans =

! 5. !

! 2. !

-->// Acesso ao ultimo elemento de A

-->A($)

ans =

6.

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 53 / 83

Page 54: Introdução ao Scilab 3.0 Parte 2

Acesso a Elementos de Vetores e Matrizes Matrizes - Sımbolo :

Matrizes - Sımbolo :

Os elementos de uma matriz sao armazenados por coluna.

-->A = [1 2 3; 4 5 6]

A =

! 1. 2. 3. !

! 4. 5. 6. !

-->A(1) // Primeiro elemento de A

ans =

1.

-->A(5) // Quinto elemento de A

ans =

3.

-->A(:) // Todos os elementos armazenados por coluna

ans =

! 1. !

! 4. !

! 2. !

! 5. !

! 3. !

! 6. !

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 54 / 83

Page 55: Introdução ao Scilab 3.0 Parte 2

Acesso a Elementos de Vetores e Matrizes Matrizes - Variaveis Booleanas

Matrizes - Variaveis Booleanas

-->A = [1 2 3; 4 5 6]

A =

! 1. 2. 3. !

! 4. 5. 6. !

-->A([%t %f %f %t]) // Primeiro e quarto elementos

ans =

! 1. !

! 5. !

--> A(%t, [2 3]) // Primeiros elementos da colunas 2 e 3

ans =

! 2. 3. !

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 55 / 83

Page 56: Introdução ao Scilab 3.0 Parte 2

Acesso a Elementos de Vetores e Matrizes Modificando Valores

Modificando Valores

-->A = [1 2 3; 4 5 6]

A =

! 1. 2. 3. !

! 4. 5. 6. !

-->A(1,2) = 10 // Atribuir a A(1,2) o valor 10

A =

! 1. 10. 3. !

! 4. 5. 6. !

-->A([1 2], 2) = [-1; -2] // A(1,2) = -1 e A(2,2) = -2

A =

! 1. - 1. 3. !

! 4. - 2. 6. !

-->A(:,1) = [8;5] // A(1,1) = 8 e A(1,2) = 5

A =

! 8. - 1. 3. !

! 5. - 2. 6. !

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 56 / 83

Page 57: Introdução ao Scilab 3.0 Parte 2

Matrizes de Polinomios Exemplo

Matrizes de Polinomios

-->// Definindo um polinomio

-->x = poly(0, ’x’); p = 2 + 3 * x + x ^ 2

p =

2

2 + 3x + x

-->// Definindo uma matriz polinomial, M

-->M = [p, p-1; p+1, 2]

M =

! 2 2 !

! 2 + 3x + x 1 + 3x + x !

! !

! 2 !

! 3 + 3x + x 2 !

-->// Avaliando a matriz M em x = 2

-->horner(M, 2)

ans =

! 12. 11. !

! 13. 2. !

-->// Obtendo a inversa de M

-->inv(M)

ans =

! 2 !

! 2 - 1 - 3x - x !

! --------------------- -------------------- !

! 2 3 4 2 3 4 !

! 1 - 6x - 11x - 6x - x 1 - 6x - 11x - 6x - x !

! !

! 2 2 !

! - 3 - 3x - x 2 + 3x + x !

! -------------------- -------------------- !

! 2 3 4 2 3 4 !

! 1 - 6x - 11x - 6x - x 1 - 6x - 11x - 6x - x !

-->// Obtendo o determinante de M

-->det(M)

ans =

2 3 4

1 - 6x - 11x - 6x - x

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 57 / 83

Page 58: Introdução ao Scilab 3.0 Parte 2

Matrizes de Polinomios Matrizes de Polinomios Racionais

Matrizes de Polinomios Racionais

-->// Definindo uma matriz F de polinomios racionais

-->s = poly(0, ’s’);

-->F = [ 1/s, (s +1)/(s + 2); ...

--> s/(s+3), s^2 ]

F =

! 1 1 + s !

! - ----- !

! s 2 + s !

! !

! 2 !

! s s !

! ----- - !

! 3 + s 1 !

-->F(’num’) // Pegando os numeradores

ans =

! 1 1 + s !

! !

! 2 !

! s s !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 58 / 83

Page 59: Introdução ao Scilab 3.0 Parte 2

Matrizes de Polinomios Matrizes de Polinomios Racionais

Matrizes de Polinomios Racionais

-->F

F =

! 1 1 + s !

! - ----- !

! s 2 + s !

! !

! 2 !

! s s !

! ----- - !

! 3 + s 1 !

-->F(’den’) // Pegando os denominadores

ans =

! s 2 + s !

! !

! 3 + s 1 !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 59 / 83

Page 60: Introdução ao Scilab 3.0 Parte 2

Matrizes de Polinomios Matrizes Simbolicas

Matrizes Simbolicas

-->B = [ 1/%s, (%s + 1)/(%s - 1)] // Matriz simbolica

B =

! 1 1 + s !

! - ----- !

! s - 1 + s !

-->B(1,1)

ans =

1

-

s

-->B(1, $)

ans =

1 + s

-----

- 1 + s

-->A = [1 -1 3; 5 -2 6]; A(1,1) = %s

A =

! s - 1 3 !

! !

! 5 - 2 6 !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 60 / 83

Page 61: Introdução ao Scilab 3.0 Parte 2

Matrizes de Polinomios Matrizes de Strings

Matrizes de Strings

-->// Matriz de strings

-->A = [’x’ ’y’; ’z’ ’w+v’]

A =

!x y !

! !

!z w+v !

-->// Atribuindo valores

-->x=1;y=2;z=3;w=4;v=5;

// Obtendo o valor numerico dos elementos de A

-->evstr(A)

ans =

! 1. 2. !

! 3. 9. !

-->Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 61 / 83

Page 62: Introdução ao Scilab 3.0 Parte 2

Matrizes de Polinomios Matrizes Booleanas

Matrizes Booleanas

-->A = [%t, %f, %t, %f, %f, %f] // Matriz booleana A

A =

! T F T F F F !

-->B = [%t, %f, %t, %f, %t, %t] Matriz booleana B

B =

! T F T F T T !

-->A|B // A ou B

ans =

! T F T F T T !

-->A & B // A e B

ans =

! T F T F F F !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 62 / 83

Page 63: Introdução ao Scilab 3.0 Parte 2

Operacoes com Vetores e Matrizes Sistemas de Equacoes Lineares

Sistemas de Equacoes Lineares

Forma matricial de Sistemas de Equacoes Lineares:

Ax = b

onde

A =

a1,1 a1,2 · · · a1,n

a2,1 a2,2 · · · a2,n...

.... . .

...an,1 an,2 · · · an,n

x =

x1

x2...

xn

e b =

b1

b2...

bn

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 63 / 83

Page 64: Introdução ao Scilab 3.0 Parte 2

Operacoes com Vetores e Matrizes Resolucao Sistemas Lineares

Resolucao Sistemas Lineares

Resolver um sistema linear e obter o valor do vetor x. Na situacao maissimples, a matriz A e nao-singular (admite inversa) e a solucao, unica, edada pela expressao

x = A−1b

No Scilab:

--> x = inv(A) * b

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 64 / 83

Page 65: Introdução ao Scilab 3.0 Parte 2

Operacoes com Vetores e Matrizes Resolucao Sistemas Lineares

Resolucao Sistemas Lineares

A =[2 00 4

]

b =[18

]--> // Solucao de Ax = b usando a funcao inv

-->A = [2 0; 0 4] // Matriz A

A =

! 2. 0. !

! 0. 4. !

-->inv(A) // A admite inversa

ans =

! 0.5 0. !

! 0. 0.25 !

-->b = [1; 8] // Vetor b

b =

! 1. !

! 8. !

-->x = inv(A) * b // Solucao do sistema linear

x =

! 0.5 !

! 2. !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 65 / 83

Page 66: Introdução ao Scilab 3.0 Parte 2

Operacoes com Vetores e Matrizes Operacoes com Vetores e Matrizes

Operacoes Basicas com Vetores e Matrizes

SIMBOLO OPERACAO

’ transposta

+ adicao

- subtracao

* multiplicacao

/ divisao a direita

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 66 / 83

Page 67: Introdução ao Scilab 3.0 Parte 2

Operacoes com Vetores e Matrizes Operacoes com Vetores e Matrizes

Outras Operacoes com Vetores e Matrizes

SIMBOLO OPERACAO

\ divisao a esquerda

^ exponenciacao

.* multiplicacao elemento-a-elemento

.\ divisao, a esquerda, elemento-a-elemento

./ divisao, a direita, elemento-a-elemento

.^ exponenciacao elemento-a-elemento

.*. produto de Konecker

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 67 / 83

Page 68: Introdução ao Scilab 3.0 Parte 2

Operacoes com Vetores e Matrizes Resolucao - Divisao a Esquerda

Divisao a Esquerda

A =[2 00 4

]

b =[18

]--> Resolucao de Ax = b usando o operador \

-->x = A \ b

x =

! 0.5 !

! 2. !

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 68 / 83

Page 69: Introdução ao Scilab 3.0 Parte 2

Operacoes com Vetores e Matrizes Vetores - Operador .

Vetores - Operador .

.* - Multiplicacao Elemento a Elemento

-->x = [1 3 4 6] // Vetor x

x =

! 1. 3. 4. 6. !

-->y = [2 4 6 8] // Vetor y

y =

! 2. 4. 6. 8. !

-->x .* y

ans =

! 2. 12. 24. 48. !

-->x * y

!--error 10

inconsistent multiplication

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 69 / 83

Page 70: Introdução ao Scilab 3.0 Parte 2

Operacoes com Vetores e Matrizes Vetores - Operador .

Vetores - Operador .

./ - Divisao Elemento a Elemento

-->x = [1 3 4 6] // Vetor x

x =

! 1. 3. 4. 6. !

-->y = [2 4 6 8] // Vetor y

y =

! 2. 4. 6. 8. !

-->x ./ y

ans =

! 0.5 0.75 0.6666667 0.75 !

-->x .\ y

ans =

! 2. 1.3333333 1.5 1.3333333 !

-->y ./ x

ans =

! 2. 1.3333333 1.5 1.3333333 !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 70 / 83

Page 71: Introdução ao Scilab 3.0 Parte 2

Operacoes com Vetores e Matrizes Vetores - Operador .

Vetores - Operador .

.^ - Potencia Elemento a Elemento

-->x = [1 3 4 6] // Vetor x

x =

! 1. 3. 4. 6. !

-->y = [2 4 6 8] // Vetor y

y =

! 2. 4. 6. 8. !

-->x .^ y

ans =

! 1. 81. 4096. 1679616. !

-->y .^ x

ans =

! 2. 64. 1296. 262144. !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 71 / 83

Page 72: Introdução ao Scilab 3.0 Parte 2

Operacoes com Vetores e Matrizes Matrizes - Operador .

Matrizes - Operador .

.* - Multiplicacao Elemento a Elemento-->A = [ 1 2 3; 4 5 6; 7 8 9] // Definindo a matriz A

A =

! 1. 2. 3. !

! 4. 5. 6. !

! 7. 8. 9. !

-->A .* A

ans =

! 1. 4. 9. !

! 16. 25. 36. !

! 49. 64. 81. !

-->A ^ 2

ans =

! 30. 36. 42. !

! 66. 81. 96. !

! 102. 126. 150. !

-->A * A

ans =

! 30. 36. 42. !

! 66. 81. 96. !

! 102. 126. 150. !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 72 / 83

Page 73: Introdução ao Scilab 3.0 Parte 2

Operacoes com Vetores e Matrizes Matrizes - Operador .

Matrizes - Operador .

./ - Divisao Elemento a Elemento

-->A = [ 1 2 3; 4 5 6; 7 8 9] // Definindo a matriz A

A =

! 1. 2. 3. !

! 4. 5. 6. !

! 7. 8. 9. !

-->A ./ A

ans =

! 1. 1. 1. !

! 1. 1. 1. !

! 1. 1. 1. !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 73 / 83

Page 74: Introdução ao Scilab 3.0 Parte 2

Operacoes com Vetores e Matrizes Matrizes - Operador .

Matrizes - Operador .

./ - Divisao Elemento a Elemento

-->A = [ 1 2 3; 4 5 6; 7 8 9] // Definindo a matriz A

A =

! 1. 2. 3. !

! 4. 5. 6. !

! 7. 8. 9. !

-->B = [ 2 2 2; 2 2 2; 2 2 2] // Definindo a matriz B

B =

! 2. 2. 2. !

! 2. 2. 2. !

! 2. 2. 2. !

-->A ./ B // Elementos de A divididos pelos de B

ans =

! 0.5 1. 1.5 !

! 2. 2.5 3. !

! 3.5 4. 4.5 !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 74 / 83

Page 75: Introdução ao Scilab 3.0 Parte 2

Operacoes com Vetores e Matrizes Matrizes - Operador .

Matrizes - Operador .

.\ - Divisao Elemento a Elemento

-->A = [ 1 2 3; 4 5 6; 7 8 9] // Definindo a matriz A

A =

! 1. 2. 3. !

! 4. 5. 6. !

! 7. 8. 9. !

-->B = [ 2 2 2; 2 2 2; 2 2 2] // Definindo a matriz B

B =

! 2. 2. 2. !

! 2. 2. 2. !

! 2. 2. 2. !

-->A .\ B // Elementos de B divididos pelos de A

ans =

! 2. 1. 0.6666667 !

! 0.5 0.4 0.3333333 !

! 0.2857143 0.25 0.2222222 !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 75 / 83

Page 76: Introdução ao Scilab 3.0 Parte 2

Operacoes com Vetores e Matrizes Matrizes - Operador .

Matrizes - Operador .

.^ - Potencia Elemento a Elemento

-->A = [ 1 2 3; 4 5 6; 7 8 9] // Definindo a matriz A

A =

! 1. 2. 3. !

! 4. 5. 6. !

! 7. 8. 9. !

-->B = [ 2 2 2; 2 2 2; 2 2 2] // Definindo a matriz B

B =

! 2. 2. 2. !

! 2. 2. 2. !

! 2. 2. 2. !

-->A .^ B

ans =

! 1. 4. 9. !

! 16. 25. 36. !

! 49. 64. 81. !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 76 / 83

Page 77: Introdução ao Scilab 3.0 Parte 2

Operacoes com Vetores e Matrizes Produto de Kronecker - Operador .*.

Produto de Kronecker - Operador .*.

Produto de Kronecker - DefinicaoO produto de Kronecker entre duas matrizes, A ∈ Rm×n e B ∈ Rp×q ,

A =

a1,1 a1,2 · · · a1,n

a2,1 a2,2 · · · a2,n...

.... . .

...am,1 am,2 · · · am,n

e B =

b1,1 b1,2 · · · b1,q

b2,1 b2,2 · · · b2,q...

.... . .

...bp,1 bp,2 · · · bp,q

e representado por A⊗ B ∈ R(m∗p)×(n∗q) e definido por:

A⊗ B =

a1,1B a1,2B · · · a1,nBa2,1B a2,2B · · · a2,nB

......

. . ....

am,1B am,2B · · · am,nB

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 77 / 83

Page 78: Introdução ao Scilab 3.0 Parte 2

Operacoes com Vetores e Matrizes Produto de Kronecker - Operador .*.

Produto de Kronecker - Operador .*.

-->A = [1 2; 3 4] // Matriz A

A =

! 1. 2. !

! 3. 4. !

-->B = [1 2 3; 4 5 6] // Matriz B

B =

! 1. 2. 3. !

! 4. 5. 6. !

-->A .*. B // Produto de Kronecker usando o operador .*.

ans =

! 1. 2. 3. 2. 4. 6. !

! 4. 5. 6. 8. 10. 12. !

! 3. 6. 9. 4. 8. 12. !

! 12. 15. 18. 16. 20. 24. !

->kron(A, B) // Produto de Kronecker usando funcao interna

ans =

! 1. 2. 3. 2. 4. 6. !

! 4. 5. 6. 8. 10. 12. !

! 3. 6. 9. 4. 8. 12. !

! 12. 15. 18. 16. 20. 24. !

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 78 / 83

Page 79: Introdução ao Scilab 3.0 Parte 2

Listas Introducao

Listas

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 79 / 83

Page 80: Introdução ao Scilab 3.0 Parte 2

Listas Listas - Definicao

Listas - Definicao

Uma lista e uma colecao de objetos nao necessariamente do mesmo tipo.Uma lista simples e definida pela funcao list. Esta funcao tem a formageral

list(a1, a2,. . . ,an)

onde os ai sao os elementos da lista. E importante observar que aindexacao de elementos de uma lista, no Scilab, inicia-se por 1.-->L = list(1, ’w’, ones(2,2)) // Uma lista simples com 3 elementos

L =

L(1)

1.

L(2)

w

L(3)

! 1. 1. !

! 1. 1. !

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 80 / 83

Page 81: Introdução ao Scilab 3.0 Parte 2

Listas Listas - Exemplo

Listas - Exemplo

-->// Transformando o elemento L(2) em uma lista

-->L(2) = list(’w’, rand(2,2))

L =

L(1)

1.

L(2)

L(2)(1)

w

L(2)(2)

! 0.2113249 0.0002211 !

! 0.7560439 0.3303271 !

L(3)

! 1. 1. !

! 1. 1. !

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 81 / 83

Page 82: Introdução ao Scilab 3.0 Parte 2

Listas Listas - Acesso a Elementos

Listas - Acesso a Elementos

Acessar o elemento (1,2) do segundo elemento de L(2),

-->L(2)(2)(2,1)

ans =

0.7560439

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 82 / 83

Page 83: Introdução ao Scilab 3.0 Parte 2

Listas Listas Tipadas

Listas Tipadas

-->// Definicao de uma lista tipada

-->L = tlist([’Carro’; ’Cidade’; ’Valores’],...

--> ’Natal’, [2,3])

L =

L(1)

!Carro !

! !

!Cidade !

! !

!Valores !

L(2)

Natal

L(3)

! 2. 3. !

-->// Acessando elementos

-->L(’Cidade’)

ans =

Natal

-->L(’Valores’)

ans =

! 2. 3. !

-->L(1)(3)

ans =

Valores

-->

Paulo Motta (DCA-UFRN) Scilab 3.0 2005.1 83 / 83