O ambiente e a linguagem de programação do Scilab 

© 2020, João L. R. Neto, Belo Horizonte, MG, todos os direitos reservados.

Visite nosso website https://joaolrneto.com


Conteúdo

2.3.1  File
2.3.2  Edit
2.3.3  Control
2.3.4  Applications
2.3.5  Help
3.1  Constantes
3.2  Variáveis
3.2.2  Tipos

….. Em construção

 1  Introdução ao Scilab

1.1  O que é o Scilab?

O Scilab é um software livre para computação numérica. Inclui centenas de
funções matemáticas pré-definidas, além de uma linguagem de rogramação de alto nível, permitindo acesso a estruturas de dados avançadas e funções
gráficas de 2 e 3 dimensões. Possui um grande número de funcionalidades
como: controle, simulação, otimização, processamento de sinais, dentre
outras e o Xcos, um modelador e simulador de sistemas dinâmicos híbridos
que é fornecido com a plataforma.

1.2  Instalando o Scilab

https://scilab.org

This image has an empty alt attribute; its file name is 2020-05-21_15-21-20-1024x575.jpg

Figura 1.1: Site Scilab


2  Trabalhando com o Scilab

2.1  A interface básica ativada ao iniciar o Scilab

Vide Figura 2.1


 

Figura 2.1: Interface Scilab


2.2  A interface básica e o editor de scripts
ativado a partir do acionamento do icone em destaque

Vide Figura 2.2


 

Figura 2.2: Interface Scilab+SciNotes


2.3  Itens do menu na interface básica

2.3.1  File


 

Figura 2.3: Menu File


  • Execute ou Ctrl+E: Executa arquivos de scripts
  • Open a File ou Ctrl+O: Carrega
    arquivos de scripts
  • Load environment ou Ctrl+L: Carrega arquivos binários(de
    variáveis) salvos com o save
  • Save environment ou Crtl+S: Salva um arquivo binário contendo variáveis
  • Current Working Directory: Altera diretório de trabalho
  • Page setup ou Ctrl+P: Imprime scripts
  • Quit ou Crtl+Q: Fecha a seção e sai do ambiente do Scilab

2.3.2  Edit


 

Figura 2.4: Menu Edit


  • Cut ou Ctrl+X: Recorta
    um texto
  • Copy ou Ctrl+C: Copia para a área de transferência um texto selecionado
  • Paste ou Ctrl+V: Cola
    o que foi copiado
  • Empty clipboard: Limpa
    o clipboard
  • Select all ou Ctrl+A: Seleciona todo o texto atual do ambiente
  • Clear History: Limpa
    a área de histórico
  • Clear Console: Limpa
    a área de console
  • Preferences: Personaliza o ambiente do Scilab

2.3.3  Control


 

Figura 2.5: Menu Control


  • Resume: Continua a execução a execução de uma instrução depois de uma
    pausa ou devido a uma parada
  • Abort: Interrompe a execução de um processo
  • Interrupt: Interrompe um processo, equivalente ao Ctrl+C

2.3.4  Applications


 

Figura 2.6: Menu Applications


  • SciNotes: Carrega
    o editor de scripts (editor de texto)
  • Xcos: Carrega
    o modelador e simulador de sistemas dinâmicos híbridos, permitindo criar
    diagrama de blocos e interfaces gráficas
  • Matlab to Scilab translator: Opção de conversão de códigos do Matlab
    para o Scilab
  • Variable Browser: Visualiza o navegador de variáveis
  • Command History: Visualiza o histórico de comandos
  • File Browser: Visualiza o navegador de arquivos e pastas

2.3.5  Help


 

Figura 2.7: Menu Help


  • Scilab Help ou F1: Referência dos recursos do Scilab
  • Scilab Demonstrations: Demonstrações de aplicações com o Scilab
  • News feed: Noticias sobre o Scilab
  • Link: Endereços sobre o Scilab
  • About Scilab ou Shift+F1: Sobre o Scilab

2.4  Gerando o diário de atividades

A função diary()
registra todas as ações executadas durante uma seção. As ações são
armazenadas em um arquivo .txt
criado quando executamos a função passando como argumento o nome deste arquivo .txt.

Observações:

1. Praticar a criação do diário no console. Veja um exemplo no
Código 2.1;
2. Após a prática verificar o arquivo Diario.txt na pasta onde foi
criado a partir do comando da linha 1.
 
Código 2.1: Diário de atividades da seção
 
1--> y=diary(’Diario.txt’); 
2 
3--> x = 10; 
4 
5--> y = 5; 
6 
7--> z=x+y 
8 z  = 
9 
10   15. 
11 
12--> a=rand(3,2) 
13 a  = 
14 
15   0.2113249   0.3303271 
16   0.7560439   0.6653811 
17   0.0002211   0.6283918

 3  Itens fundamentais do Scilab

3.1  Constantes

As constantes não alteram o valor durante a execução de um algoritmo.
Podem ser numéricas, literais.

3.1.1  Constantes especiais pré-definidas

O valor de π
Código 3.1: O valor de π
1--> %pi 
2 %pi  = 
3 
4   3.1415927                                            
                                                       
 

Base dos logaritmos naturais
Código 3.2: O valor da base dos logaritmos naturais
1--> %e 
2 %e  = 
3 
4   2.7182818
Unidade imaginária. Raiz quadrada de -1
Código 3.3: O valor da unidade imaginária. Raiz quadrada de -1
1--> %i 
2 %i  = 
3 
4   0. + i
Infinito
Código 3.4: Infinito ∞

1--> %inf 
2 %inf  = 
3 
4   Inf
Valor Lógico Verdade (True)
Código 3.5: O valor lógico Verdade (T)
1--> %t 
2 ans  = 
3 
4  T
Valor Lógico Falso (False)
Código 3.6: O valor lógico Falso (F)

1
–> %f
2 ans  =
3
4  F
Não é um número (Nota a number)
Código 3.7: Não é um número (Nan)
1--> %nan 
2 %nan  = 
3 
4   Nan
Precisão do Scilab
Código 3.8: Precisão do Scilab
1--> %eps 
2 %eps  = 
3 
4   2.220D-16
Polinômio com uma raiz em zero e variável s
Código 3.9: Polinômio com uma raiz em zero e variável s
1--> %s 
2 %s  = 
3 
4  s
Polinômio com uma raiz em zero e variável z
Código 3.10: Polinômio com uma raiz em zero e variável z
1--> %z 
2 %z  = 
3 
4  z

3.2  Variáveis

Alteram o valor durante a execução de um algoritmo. As variáveis são
criadas dinamicamente. Ao atribuir operador = um valor a um identificador
válido a variável esta criada.

Criar uma variável representa referenciar um espaço na memória
principal(RAM).

3.2.1  Identificadores

Caracteres de a…z e A…Z. Combinações de letras e números, começando com uma letra. Combinações com caracteres especiais também são permitidos: #, !, $, _. Outros caracteres especiais não são permitidos.

Identificadores válidos
Código 3.11: Exemplo de identificadores válidos
1--> a = 10 
2 a  = 
3 
4   10. 
5 
6 
7--> A = 5 
8 A  = 
9 
10   5. 
11 
12 
13--> a20 = 100 
14 a20  = 
15 
16   100.
 
Código 3.12: Outros exemplos de identificadores válidos
1--> x! = 11 
2 x!  = 
3 
4   11. 
5 
6--> c#3 = 30 
7 c#3  = 
8 
9   30. 
10 
11--> V$\
Identificadores inválidos
Código 3.13: Exemplos de identificadores inválidos
2--> a 9 = 6 
3 a 9 = 6 
4    ^^ 
5 Error: syntax error, unexpected =, expecting end of file 
6 
7--> a\9 = 12 
8 a\9 = 12 
9    ^^ 
10 Error: syntax error, unexpected =, expecting end of file

Obsservação:

1. O espaço em branco, o caractere \, por exemplo, não é válido na combinação com letras e números para formar um identificador válido.

3.2.2  Tipos

Numérico
Código 3.14: Variáveis do tipo numérico
2--> a1 = 27 
3 a1  = 
4 
5   27. 
6 
7--> a2  = 4.56 
8 a2  = 
9 
10   4.56 
11 
12--> a3 = 3 + %i 
13 a3  = 
14 
15   3. + i
Literal
Código 3.15: Variáveis do tipo literal
2--> frase = "Literal" 
3 
4 frase  = 
5 
6  "Literal" 
7--> letra = "a" 
8 letra  = 
9 
10  "a"
 
Lógico: T (True – verdade) e F (False –
falso)
Código 3.16: Variáveis do tipo lógico
1--> opcao = %t 
2 opcao  = 
3 
4  T 
5--> opcao = %f 
6 opcao  = 
7 
8  F
Matrizes

Observações:

1. Atribuir os dados a um identificador entre colchetes [ ] espaço ou vírgula , é nova coluna e ponto e virgula ; é nova linha, ou utilizar por exemplo, a função rand() que gera valores aleatoriamente entre 0 e 1;
2. No Código 3.17 , linha 1, o valor gerado foi multiplicado por 10;
3. A função fix() fixa a parte inteira do número obtido);
4. Não é permitido tipos diferentes na mesma variável (Vide Código 3.17
, linha 15). Todos os elementos têm que ser do mesmo tipo (homogêneo).
Código 3.17: Variáveis compostas homogêneas
 
1--> matriz1 = fix(rand(3,4)*10) 
2 matriz1  = 
3 
4   0.   7.   2.   8. 
5   5.   1.   2.   6. 
6   6.   5.   2.   3. 
7 
8--> matriz2 = ["uma matriz" "com duas"; "linhas" "e duas colunas"] 
9 matriz2  = 
10 
11  "uma matriz"  "com duas" 
12  "linhas"      "e duas colunas" 
13 
14 
15--> matriz3 = [3 4 "nome";"data",7, 8] 
16 
17Undefined operation for the given operands. 
18check or define function %s_c_c for overloading.
 
Listas
Código 3.18: Variável composta heterogênea
1--> lista1 = list(1,2,["abc" "e"]) 
2 lista1  = 
3 
4 
5       lista1(1) 
6 
7   1. 
8 
9       lista1(2) 
10 
11   2. 
12 
13       lista1(3) 
14 
15  "abc"  "e"
 
Variável ans

Quando não criamos nenhum identificador o Scilab atribui o valor a uma
variável chamada ans, de answer (responda). A variável ans/indexans terá sempre o conteúdo da última operação executada. No exemplo do Código 3.19 o valor de ans é 123. A última operação esta indicada na linha 12.

Código 3.19: Variável ans
1--> [3 4 5;6 7 8] 
2 ans  = 
3 
4   3.   4.   5. 
5   6.   7.   8. 
6 
7--> "outro exemplo" 
8 ans  = 
9 
10  "outro exemplo" 
11 
12--> 123 
13 ans  = 
14 
15   123.

 3.2.3  Operações aritméticas

Operadores aritméticos
  • Potenciação  ou **
  • Divisão /
  • Multiplicação *
  • Adição +
  • Subtração
Código 3.20: Exemplos com escalares dos operadores ariméticos em ordem de prioridades
2--> a = 2^3 
3 a  = 
4 
5   8. 
6 
7--> a = 2**3 
8 a  = 
9 
10   8. 
11 
12--> b = 5/3 
13 b  = 
14 
15   1.6666667 
16 
17--> c = 3*9 
18 c  = 
19 
20   27. 
21 
22--> d = 4+9 
23 d  = 
24 
25   13. 
26 
27--> e = 6-2 
28 e  = 
29 
30   4.

Observação:

  • O simbolo + também é utilizado para concatenar
    strings
    . Neste caso não funciona como um operador aritmético (Vide Código 3.21).
Código 3.21: Utilizando o simbolo + para concatenar strings
1--> s = "Concatenando"+" string" 
2 s  = 
3 
4  "Concatenando string"
Operações aritméticas entre matrizes e
escalares

Lembrete: Ao atribuir valores, entre colchetes [ ], a uma variável para gerar
uma matriz, observar que: espaço em branco ou vírgula , é
mudança de coluna e ponto e vírgula ; é mudança de linha.

Potenciação

Observações:

1. Para a potência de uma matriz por escalar é necessário utilizar o
operador com o ponto .∧;
2. Cada elemento da matriz será elevado à potência. 
Código 3.22: Pontenciação – matriz por um escalar
1--> x = [4 3 5;7,1,2] 
2 x  = 
3 
4   4.   3.   5. 
5   7.   1.   2. 
6 
7--> y = x.^3 
8 y  = 
9 
10   64.    27.   125. 
11   343.   1.    8.

 Divisão

Observações:

1. Existe duas possibilidades de divisão. A divisão matricial que utiliza o
operador / e a divisão ponto a ponto que utiliza o operador de divisão acrescido do ponto ./;
2. No exemplo do Código 3.23 o resultado será o mesmo para
as duas opções, por se tratar neste exemplo de divisão ponto a ponto.
Código 3.23: Divisão de uma matriz por um escalar
 
1--> x = [4 3 5;7,1,2] 
2 x  = 
3 
4   4.   3.   5. 
5   7.   1.   2. 
6 
7--> y = x/2 
8 y  = 
9 
10   2.    1.5   2.5 
11   3.5   0.5   1. 
12 
13--> y = x./2 
14 y  = 
15 
16   2.    1.5   2.5 
17   3.5   0.5   1. 
18 
19--> z = 2/x 
20 
21Inconsistent row/column dimensions.
Multiplicação
Código 3.24: Multiplicação de uma matriz por um escalar ou de um escalar por uma matriz
2--> x = [4 3 5;7,1,2] 
3 x  = 
4 
5   4.   3.   5. 
6   7.   1.   2. 
7 
8--> y = 5*x 
9 y  = 
10 
11   20.   15.   25. 
12   35.   5.    10. 
13 
14--> x*5 
15 ans  = 
16 
17   20.   15.   25. 
18   35.   5.    10.
 
Adição
Código 3.25: Adição de uma matriz por um escalar ou de um escalar por uma matriz
 
1--> x = [4 3 5;7,1,2] 
2 x  = 
3 
4   4.   3.   5. 
5   7.   1.   2. 
6 
7--> y = x+4 
8 y  = 
9 
10   8.    7.   9. 
11   11.   5.   6. 
12 
13--> y = 4+x 
14 y  = 
15 
16   8.    7.   9. 
17   11.   5.   6.
Subtração
Código 3.26: Subtração de uma matriz por um escalar ou de um escalar por uma matriz
1--> x = [4 3 5;7,1,2] 
2 x  = 
3 
4   4.   3.   5. 
5   7.   1.   2. 
6 
7--> y = x-3 
8 y  = 
9 
10   1.   0.   2. 
11   4.  -2.  -1. 
12 
13--> y = 3-x 
14 y  = 
15 
16  -1.   0.  -2. 
17  -4.   2.   1.
Operações aritméticas com matrizes

Divisão

Observações:

1. Uma divisão matricial é o mesmo que a multiplicação de uma matriz pela
sua inversa (Vide Código 3.27 , linha 22);
2. Na linha 22 do Código 3.27  foi utilizado a função inv() para calcular a inversa da matriz y criada na linha 8.
Código 3.27: Divisão matricial
1--> y = fix(rand(3,3)*10) 
2 y  = 
3 
4   8.   9.   8. 
5   0.   5.   0. 
6   8.   5.   5. 
7 
8--> x = fix(rand(3,3)*10) 
9 x  = 
10 
11   1.   5.   0. 
12   7.   9.   5. 
13   2.   7.   3. 
14 
15--> z = x/y 
16 z  = 
17 
18  -0.2083333   1.0416667   0.3333333 
19   0.2083333   0.7583333   0.6666667 
20   0.5833333   0.6833333  -0.3333333 
21 
22--> z = x*inv(y) 
23 z  = 
24 
25  -0.2083333   1.0416667   0.3333333 
26   0.2083333   0.7583333   0.6666667 
27   0.5833333   0.6833333  -0.3333333

 Divisão
ponto a ponto ( ./ e .\ )

Observações:

1. Operação possível com matrizes do mesmo tamanho (mesmo número de linhas e colunas);
2. Operadores possíveis: ./ (Código 3.28, linha 13) e .\ (Código 3.7, linha 19);
3. ./: divide numerador pelo denominador;
4. \ : divide denominador pelo numerador.
Código 3.28: Divisão ponto a ponto
1--> a = round(rand(2,2)*100) 
2 a  = 
3 
4   23.   76. 
5   63.   5. 
6 
7--> b = round(rand(2,2)*100) 
8 b  = 
9 
10   67.   39. 
11   20.   83. 
12 
13--> c = a./b 
14 c  = 
15 
16   0.3432836   1.9487179 
17   3.15        0.060241 
18 
19--> c = a.\b 
20 c  = 
21 
22   2.9130435   0.5131579 
23   0.3174603   16.6

 

Multiplicação

Observações:

1. Número de colunas de uma matriz deve ser igual ao número de linhas da
outra matriz;
2. Operador * .
Código 3.29: Multiplicação matricial
1--> x = fix(rand(4,3)*10) 
2 x  = 
3 
4   2.   6.   5. 
5   6.   2.   4. 
6   7.   3.   2. 
7   0.   8.   8. 
8 
9--> y = fix(rand(3,4)*10) 
10 y  = 
11 
12   1.   8.   6.   7. 
13   2.   5.   9.   4. 
14   8.   9.   0.   6. 
15 
16--> z = x*y 
17 z  = 
18 
19   54.   91.    66.   68. 
20   42.   94.    54.   74. 
21   29.   89.    69.   73. 
22   80.   112.   72.   80.

 

Multiplicação ponto a ponto .*

Observações:

1. Operação possível com matrizes do mesmo tamanho;
2. Operador utilizado .*. Linha 17, Código 3.30.
Código 3.30: Multiplicação de matrizes ponto a ponto
1--> a = round(rand(4,3)*100) 
2 a  = 
3 
4   84.   11.   69. 
5   41.   20.   89. 
6   41.   56.   50. 
7   88.   59.   35. 
8 
9--> b = round(rand(4,3)*100) 
10 b  = 
11 
12   39.   38.   26. 
13   92.   73.   53. 
14   95.   26.   54. 
15   34.   50.   12. 
16 
17--> c = a.*b 
18 c  = 
19 
20   3276.   418.    1794. 
21   3772.   1460.   4717. 
22   3895.   1456.   2700. 
23   2992.   2950.   420.

 Adição

Observações:

1. Operação possível com matrizes do mesmo tamanho (mesmo número de linhas e colunas);
2. A função round() utilizada nas linhas 1 e 9 do Código 3.31 arredonda um valor gerado aleatoriamente pela função rand() para o número inteiro
mais próximo.
Código 3.31: Adição de matrizes
 
1--> a = round(rand(4,3)*100) 
2 a  = 
3 
4   36.   33.   27. 
5   29.   59.   63. 
6   57.   50.   41. 
7   48.   44.   92. 
8 
9--> b = round(rand(4,3)*100) 
10 b  = 
11 
12   4.    28.   11. 
13   48.   13.   69. 
14   26.   78.   15. 
15   41.   21.   70. 
16 
17--> c = a+b 
18 c  = 
19 
20   40.   61.    38. 
21   77.   72.    132. 
22   83.   128.   56. 
23   89.   65.    162.

 Subtração

Observações:

1. Operação possível com matrizes do mesmo tamanho (mesmo número de linhas e colunas);
2. A função round() utilizada nas linhas 1 e 9 do Código 3.31 arredonda um valor gerado aleatoriamente pela função rand() para o número inteiro
mais próximo.
Código 3.32: Subtração de matrizes
 
1--> a = round(rand(4,3)*100) 
2 a  = 
3 
4   59.   12.   53. 
5   48.   29.   99. 
6   22.   86.   65. 
7   84.   85.   99. 
8 
9--> b = round(rand(4,3)*100) 
10 b  = 
11 
12   5.    85.   57. 
13   75.   6.    57. 
14   41.   83.   82. 
15   61.   93.   6. 
16 
17--> c = a-b 
18 c  = 
19 
20   54.  -73.  -4. 
21  -27.   23.   42. 
22  -19.   3.   -17. 
23   23.  -8.    93.

 3.2.4  Expressões lógicas

Operadores relacionais

Os operadores relacionais, como a própria denominação indica, relacionam
dois objetos(constantes, variáveis, expressões) e retornam Falso (False)
F ou Verdade (True) T.

  • Maior >;
  • Menor <;
  • Maior ou igual >=;
  • Menor ou igual <=;
  • Igual ==;
  • Diferente ~ = ou <>.
Código 3.33: Exemplo de utilização de operadores relacionais
 
1--> x = 7>8 
2 x  = 
3 
4  F 
5 
6--> a = 5; 
7 
8--> b = 10; 
9 
10--> c = a<b 
11 c  = 
12 
13  T 
14 
15--> d = rand(2,4) 
16 d  = 
17 
18   0.2113249   0.0002211   0.6653811   0.8497452 
19   0.7560439   0.3303271   0.6283918   0.685731 
20 
21--> e = rand(2,4) 
22 e  = 
23 
24   0.8782165   0.5608486   0.7263507   0.5442573 
25   0.068374    0.6623569   0.1985144   0.2320748 
26 
27--> f = d == e 
28 f  = 
29 
30  F F F F 
31  F F F F 
32 
33--> f = d>e 
34 f  = 
35 
36  F F F T 
37  T F T T

Observações:

  • Uma proposição pode ser uma relação simples, uma expressão;
  • Na Tabela 3.1
    consideramos duas proposições
    quaisquer P
    e Q;
  • Podendo estas proposições assumirem os valores (False) Falso F ou
    (True) Verdade V;
  • Desta forma, todas as possíveis combinações estão indicadas na primeira e segunda colunas da Tabela 3.1;
  • O operador relacional de igualdade é ==, diferente do operador de
    atribuição =. Particularmente observe a diferença na linha 27 do Código 3.33 onde utilizamos os dois operadores. O operador de atribuição = é também utilizado em várias outras linhas do Código 3.33.
Operadores lógicos

Os operadores lógicos ligam proposições ou atuam sobre uma única
proposição.

  • e: && ou &, são operadores binários. Conectam duas proposições;
  • ou: || ou |, são operadores binários. Conectam duas proposições;
  • não:  , é um operador unário. Atua sobre uma única proposição (Vide linha 39 Código 3.34)

Tabela 3.1: Tabela Verdade

 
Código 3.34: Exemplo de utilização de operadores lógicos
1--> x = %t; 
2 
3--> y = %t; 
4 
5--> z = x && y 
6 z  = 
7 
8  T 
9 
10--> y = %f; 
11 
12--> z = x && y 
13 z  = 
14 
15  F 
16 
17--> z = x || y 
18 z  = 
19 
20  T 
21 
22--> x = %f; 
23 
24--> z = x || y 
25 z  = 
26 
27  F 
28 
29--> x 
30 x  = 
31 
32  F 
33 
34--> y 
35 y  = 
36 
37  F 
38 
39--> z = ~x || y 
40 z  = 
41 
42  T

4  Construindo e Manipulando Matrizes e Listas

4.1  Manipulando Matrizes

Observações:
Operador de escala :

  • Referência as dimensões de uma matriz:<identificador>(linha, coluna). Linha 8 do Código 4.1;
  • O operador de escala dois pontos : endereça todos os elementos
    ao longo de uma dimensão de uma matriz ou de uma lista;
  • Sintaxe do operador de escala :. inicio:passo:fim. Linha 13 do
    Código 4.2;
  • Omitindo o passo, a operação assume passo 1 positivo.
    inicio:fim. Linha 8 do Código 4.2;
  • Utilizando somente : a operação assume todos os elementos de uma determinada dimensão da matriz. Linha 26 do Código 4.2;
  • Quando o passo não for uniforme, informar entre colchetes [] as linhas e/ou colunas. Linha 26 do Código 4.2
    .

4.1.1  Extraindo elemento e subconjunto de uma
matriz

Código 4.1: Extraindo um elemento da matriz R
1--> R = grand(3,4,"nor",1,10) 
2 R  = 
3 
4  -12.33848   -16.037605  -16.329399  -9.9821194 
5  -4.431832   -10.277858  -3.1859481  8.8116589 
6   9.4126465  -1.8424523  -13.762556   7.6037777 
7 
8--> e = R(2,3)//R(linha,coluna) 
9 e  = 
10 
11  -3.1859481
 
Código 4.2: Extraindo um subconjunto da matriz R
1--> R = grand(3,4,"nor",1,10) 
2 R  = 
3 
4  -6.4601564   10.742944  -12.434184   0.7249242 
5   9.2828505   12.307399   13.910633   11.539342 
6  -3.8941597  -6.4602071  -1.9385342   6.6197937 
7 
8--> b = R(1,2:4)//Elementos da primeira linha; segunda, terceira e quarta colunas 
9 b  = 
10 
11   10.742944  -12.434184   0.7249242 
12 
13--> b = R(1:2:3,:)//Elementos da primeira e terceira linhas; todas as colunas 
14 b  = 
15 
16  -6.4601564   10.742944  -12.434184   0.7249242 
17  -3.8941597  -6.4602071  -1.9385342   6.6197937 
18 
19--> R = grand(3,5,"nor",1,10) 
20 R  = 
21 
22  -11.026383   2.6408181   3.648873   -16.051175   2.3146589 
23  -8.5290042  -14.356168   3.5892592  -7.0580407  -3.3130921 
24   9.7447889   12.415842   7.3846621  -7.9549719   7.81666 
25 
26--> b = R(:,[1 4 5])//Todas as linhas; primeira, quarta e quinta colunas 
27 
28 b  = 
29  -11.026383  -16.051175   2.3146589 
30  -8.5290042  -7.0580407  -3.3130921 
31   9.7447889  -7.9549719   7.81666

 Função grand():
Gera valores aleatórias para uma matriz a partir da distribuição uniforme
entre [0,1) (1 nunca é retornado)

Observações:

  • A distribuição uniforme citada no item anterior é obtida através do
    argumento “def”utilizado na função grand() (Linha 1 do Código 4.1);
Código 4.3: Exemplo utilizando a função grand()
1--> Y = grand (2, 4, "def") 
2 Y  = 
3 
4   0.1576131   0.9705928   0.9571669   0.4853756 
5   0.725839    0.9811097   0.1098618   0.7981059
 
6

Função Nsize():
Retorna as dimensões da variável, número de linhas e de colunas.

Código 4.4: Exemplo utilizando a função size()
 
1--> x = grand(3,4,"unf",5,10) 
2 x  = 
3 
4   9.0736185   9.1750429   9.5668793   6.5408353 
5   5.677385    5.6349341   6.1051702   5.487702 
6   9.5289597   9.8443389   8.1617962   7.736103 
7 
8--> [l,c]=size(x) 
9 l  = 
10 
11   3. 
12 c  = 
13 
14   4.

 Função length():
Retorna o comprimento do objeto. A quantidade de elementos de um objeto.
No exemplo do Código 4.3 linha 8, a função length() retorna 12, resultado do produto 3 linhas × 4 colunas = 12.

Código 4.5: Exemplo utilizando a função length()
1--> x = grand(3,4,"unf",5,10) 
2 x  = 
3 
4   9.0736185   9.1750429   9.5668793   6.5408353 
5   5.677385    5.6349341   6.1051702   5.487702 
6   9.5289597   9.8443389   8.1617962   7.736103 
7 
8--> tam = length(x) 
9 tam  = 
10 
11   12.

…  Em construção

Ph.D. em Engenharia Mecânica pela Pontifícia Universidade Católica de Minas Gerais. Mestre em Engenharia Elétrica pela Pontifícia Universidade Católica de Minas Gerais. Atuando por 25 (vinte e cinco) anos no ensino de programação de computadores para cursos de engenharia e sistemas de informação.