Apostila Octave - Prof. Gerson Ulbricht - 16-10-2023

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 50

OCTAVE

Software Numérico

Prof. Gerson Ulbricht


Métodos Numéricos em Engenharia, Dr.

Versão da Apostila: v. 10/2023.

Jaraguá do Sul – SC
2023
SUMÁRIO

CAPÍTULO 1: INTERFACE GRÁFICA DO OCTAVE .............................................................. 4


1.1 Algumas variáveis internas: ........................................................................... 4
1.2 Definição das variáveis ..................................................................................... 5
1.3 Limpar tela, limpar variáveis e comentários ..................................... 6
1.4 Comando Help ............................................................................................................... 6
1.5 Comando Diary ............................................................................................................. 7
1.6 Formato de Visualização dos Números ........................................................ 7
CAPÍTULO 2: PRINCIPAIS COMANDOS ................................................................................. 8
2.1 Operações Matemáticas.......................................................................................... 9
2.3 Operações com números complexos ................................................................ 10
2.4 Mais algumas funções importantes ............................................................. 11
2.5 Funções Trigonométricas ................................................................................... 12
CAPÍTULO 3: VETORES, MATRIZES E SISTEMAS LINEARES .................................... 13
3.1 Vetores ......................................................................................................................... 13
3.1.1 Geração de Vetores .................................................................................... 13
3.2 Matrizes....................................................................................................................... 15
3.2.1 Declaração de Matrizes: ........................................................................ 15
3.2.2. Funções Matriciais .................................................................................. 16
3.2.3 Manipulação de linhas e colunas: ................................................... 17
3.2.4 Mais comandos para matrizes e vetores ....................................... 18
3.2.5 Operador . (ponto) .................................................................................... 20
3.3 Resolução de Sistemas Lineares .................................................................. 20
CAPÍTULO 4: POLINÔMIOS .................................................................................................... 25
4.1 Definição de Polinômio a Partir dos Coeficientes ....................... 25
4.2 Obtenção das Raízes de um Polinômio ...................................................... 25
4.2 Algumas Operações com Polinômios ............................................................. 26
CAPÍTULO 5: GRÁFICOS BIDIMENSIONAIS E TRIDIMENSIONAIS........................... 28
5.1 Comandos Básicos para Gráficos .................................................................. 28
5.2 Gráficos 2D ............................................................................................................... 29
5.2.1 Comando para Títulos e Legendas ..................................................... 29
5.2.2 Apresentação de vários gráficos em uma mesma janela ...... 32
5.2.3 Especificação do tipo e cor da linha e do marcador ........ 33
5.2.4 Vários Gráficos em um Mesmo Sistema de Eixos ...................... 34
5.2.5 Linhas de Grade............................................................................................ 35
5.3 Gráficos 3D ............................................................................................................... 36
5.3.1 Gráficos 3D – comandos “meshgrid” e “mesh”. ......................... 36
5.3.2 Gráficos em coordenadas polares ..................................................... 39
5.4 Gráficos Estatísticos. ..................................................................................... 41
5.4.1 Gráficos de colunas .................................................................................. 41
5.4.2 Polígono de Frequências ........................................................................ 41
5.4.3 Gráfico de Barras ....................................................................................... 42
5.4.4 Gráfico de Setores .................................................................................... 42
5.4.5 Diagrama de Dispersão ............................................................................. 43
CAPÍTULO 6: INTEGRAÇÃO .................................................................................................... 44
6.1 Integral Definida ................................................................................................. 44
CAPÍTULO 7: PROGRAMAÇÃO .................................................................................................. 47
REFERÊNCIAS............................................................................................................................... 50

2
O OCTAVE

O Octave é um ambiente utilizado no desenvolvimento de


programas para a resolução de problemas numéricos e possui
uma interface muito semelhante ao Matlab.
GNU Octave é uma linguagem computacional, desenvolvida
para computação matemática. Possui uma interface em linha de
comando voltada à solução de problemas e experimentos
numéricos.

O Octave pode ser obtido gratuitamente em seu site


oficial: https://www.gnu.org/software/octave/.
Um donativo pode ser feito para auxiliar em seu
desenvolvimento.

Figura 1: Página do Octave na internet. Acesso em 16/10/2023.

3
CAPÍTULO 1: INTERFACE GRÁFICA DO OCTAVE

Janela de comandos (Console) do Octave:

O comando who, mostra as variáveis vigentes, e whos


mostra as variáveis com detalhes.

1.1 Algumas variáveis internas:

 i ou j: Unidade imaginária

 pi: valor de π

 e: número de Euler

4
 eps: (precisão de máquina. O maior número para o qual
1+ %eps = 1)

 inf: Infinito (Aparece como resultado de uma operação


como 1/0

 NaN: Not-a-number (Corresponde ao resultado de uma


operação que possui resultado numérico indefinido, como
0/0)

 A função pwd mostra qual o pasta (diretório) está


sendo usada:

1.2 Definição das variáveis

Ao definir uma variável deve-se tomar os cuidados:

• Sensível a maiúsculas e minúsculas


• Palavra única
• Até 24 caracteres
• Não pode iniciar com número

Exercício: Verificar se é possível declarar as seguintes


variáveis:

• a = 1;
• Var_1 = 2;
• 2var = 3;
• esta variável = 3;
• itens = 2;
• b = 2; B = 3; verifique se b e B têm o mesmo valor.

5
1.3 Limpar tela, limpar variáveis e comentários

→ clear: apaga todas as variáveis declaradas.


→ clear A: apaga a variável A.
→ clear x: apaga a variável x, e assim por diante.
→ clc: limpa a tela sem apagar as variáveis declaradas
→ % ou #: usado para colocar um comentário.
Por exemplo: % Este é um teste!

1.4 Comando Help

O comando help, quando digitado sem caracterização, abre


uma listagem com todas as funções presentes no programa. Se
caracterizado, abre a mesma janela, porém com a função já
aparecendo diretamente.

Exemplo:

-->help det (Abre a ajuda sobre determinantes)

6
1.5 Comando Diary

É possível criar uma memória de cálculo, salvando os


comandos digitados em um arquivo, através do comando diary:

Sintaxe:

diary('arquivo1')
(na sequência desenvolve-se qualquer tipo de comando ou
código)

diary('off')

Fecha o comando. O arquivo será salvo como texto.

Exemplo:

1.6 Formato de Visualização dos Números

O comando “format” modifica a quantidade de dígitos com


que os números são mostrados.
Exemplo:

7
CAPÍTULO 2: PRINCIPAIS COMANDOS

A primeira instrução a respeito do prompt é quanto ao


uso do “ponto e vírgula”: ele faz com que o compilador
interprete o fim da execução da linha de comando e esteja
pronto para receber outra linha.
Neste caso, o resultado da operação fica mascarado para
o usuário. Se não for escrito o “ponto e vírgula”, a quebra
de linha vai denotar fim da execução, mas o resultado será
exibido para o usuário. Ambas as formas têm sua aplicação.

O “ponto e vírgula” suprime a apresentação do resultado

Exemplos:

-->A = 1; a variável A assume o valor 1


-->b = 2; atribuindo a variável b o valor 2
-->A + b Adição de A e b
ans =
3.

Quanto à digitação, geralmente utiliza-se um comando em


cada linha, mas é possível digitar vários comandos em uma
mesma linha:
Exemplo:
-->m = 1.5; b = 35; c = 24; %Vários comandos em uma única
linha

Também é possível desdobrar um único comando em várias


linhas utilizando ... ao final do comando. Por exemplo:

Um comando em várias linhas:

-->A = 3 * m ^ 2 + ...
--> 4 * 5 + ...
--> 5 * 3
A =
41.75

O Octave é case sensitive. Diferencia maiúsculas e


minúsculas. Por exemplo, Variavel1 é diferente de variavel1.

8
2.1 Operações Matemáticas

Mais (algumas) funções matemáticas:

abs(x):Módulo de x
acos(x): Arco cosseno de x
cos(x): Cosseno de x
cosh(x): Cosseno hiperbólico
round(x): Arredonda o valor de x
sinh (x): Seno hiperbólico
tan(x): Tangente de x exp(n): Função exponencial
log10(x): Logaritmo de x na base 10
sum(x): Somatória de x
prod(x): Produtória de x
sumsq(x): Somatória dos quadrados dos elementos de x

Obs: ângulo é definido sempre em radianos

2.2 Operadores de comparação

< menor
<= menor ou igual
> maior
>= maior ou igual
== igual
~= diferente
& e
| ou
~ não

9
2.3 Operações com números complexos

As grandezas no Octave também podem ser complexas.


Para atribuir à variável A o valor complexo 5 + 2i e à
variável B o valor complexo −2 + i, procede-se:

>> A = 5 + 2 * i
A = 5 + 2i

>> B = 3 + 2 * i
B = 3 + 2i

>> A*B
ans = 11 + 16i

Observar que a não utilização do “ponto e vírgula” no


final dos comandos de atribuição, permitiu a apresentação do
resultado de cada comando.
As variáveis complexas A e B podem ser multiplicadas,
divididas, somadas ou subtraídas.

Exemplos:

-->A * B // Multiplicação
-->A / B // Divisão
-->A + B // Adição
-->A - B // Subtração

É importante observar que a resposta ao uso da função


interna sqrt() com argumento negativo inclui o número
complexo i = sqrt(-1).

Por exemplo:
Função raiz quadrada com argumento negativo
>> sqrt(-2)
ans = 0.00000 + 1.41421i

Exercício

1. Dados os seguintes números complexos,


Z1 = 3 + 5i; Z2 = 7 + 3i execute as seguintes operações:
a) Z1 + Z2;
b) Z1 * Z2;
c) Z1 + sqrt(-20);
d) Calcule os módulos de Z1 e Z2 e compare com abs(z);

10
2.4 Mais algumas funções importantes

clc - limpa tela de modulo - calcula o resto de


comandos uma divisão

help - ajuda ones - matriz de 1's

trace - calcula traço de rand - gerador de números


matriz randômicos

abs - valor absoluto sort - ordenamento


decrescente
diag - matriz diagonal
sqrt - raiz quadrada
eye - matriz identidade
sum - soma elementos de
real – parte real matrizes

imag - parte imaginária diary - diário da seção

disp - mostra variáveis


input - solicita entrada de
dados para o usuário

det - determinante
integrate - integração por
quadratura inv - matriz inversa

linspace - vetor clear - limpa variáveis da


linearmente espaçado memória

log - logaritmo natural who - apresenta variáveis


carregadas na memória
log10 - logaritmo em base
10 round(x): Arredonda o valor
de x para o inteiro mais
max - máximo próximo

min - mínimo floor(x): Arredonda para o


menor inteiro
sqrt(x): Calcula a raiz
quadrada de x ceil(x): Arredonda para o
maior inteiro

11
Exercícios

1) Dados:
x = [0.5 3.4 4 2.8 1.5];
y = [0.9 2.2 5 1.1 1.7];

Calcule:
a) x'
b) log(x), log10(x*y’), log2(x’*y)
c) ceil(x)
d) floor(y)
e) round(x.*y)
f) sqrt(x) + floor(y.*y)
g) Verifique se abs(2+2*%i) = sqrt(8)

2.5 Funções Trigonométricas

 cos(x), sin(x), tan(x), cotg(x): Retorna cosseno, seno,


tangente ou cotangente de x
(x deve estar em radianos)
 acos(x), asin(x), atan(x): Retorna o ângulo (em radianos)

Exercícios

1) Calcule:
a = sin(pi/2);
b = tan(pi);
c = cotg(pi/3);
d = cos(pi/4) + sin(pi/4);

2) Dados:
x = [0.5 3.4 4 2.8 1.5];
y = [0.9 2.2 5 1.1 1.7];

Calcule:
a) seno(x)
b) cosseno(x*.y)
c) tangente(y)

12
CAPÍTULO 3: VETORES, MATRIZES E SISTEMAS LINEARES

3.1 Vetores

Declaração de vetores:
X = [ x1 x2 x3 ...] vetor linha
X = [x1;x2;x3;...] vetor coluna
Transposição de vetores: X’

Exercícios:

1) Verifique a diferença entre: x = [1 2 3] e x = [1;2;3]

2) Dados os vetores:
x = [1 2 3 4 5] e y = [2 4 6 8 10]

Calcule:
a) z = x + y;
b) O produto interno x•y;
c) Formas transpostas de x e y;
d) Dados z1 = x*y’; e z2 = x’*y; verifique se z1 = z2.
e) Multiplique x por y, elemento a elemento.

3.1.1 Geração de Vetores

Os dois pontos “:” é um caracter muito útil. A


declaração x = 1:5 gera um vetor linha contendo os número de
1 a 5 com incremento de uma unidade.

>> x=1:5
x =

1 2 3 4 5

Ou ainda pode-se usar colchetes:

>> x=[1:5]
x =

1 2 3 4 5

13
Outros incrementos podem ser usados, como por exemplo,

y=0:pi/4:pi
y =

0.00000 0.78540 1.57080 2.35619 3.14159


onde o incremento corresponde a pi/4.

A seguir são apresentados alguns exemplos de


incrementos:

Sintaxe:
variável = Valor_inicial:incremento:Valor_final

Exemplos (verificar):

A = 1:10
B = 1:2:10
C = 1:0.2:10
D = 10:-1:1
E = 1:pi:20
F = 0:log(e):20
G = 20:-2*pi:-10

Outra forma de gerar vetores utiliza a declaração


“linspace”, na qual deve-se definir os limites inferior e
superior, indicando ainda o número de valores a serem
gerados, mantendo o incremento constante. Por exemplo,

>> k=linspace(-pi,pi,4)
k =

-3.1416 -1.0472 1.0472 3.1416

Foram gerados 4 valores igualmente “espaçados” entre -


pi e pi.

14
3.2 Matrizes

Ao declarar matrizes no Octave, para separar elementos


digitar espaço ou vírgula. Para pular de linha, digitar
“ponto e vírgula” ou ao digitar usar “Enter”.

3.2.1 Declaração de Matrizes:

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

A =

1 2
3 4

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


B =

5 6
7 8

Somar:
--> A+B
ans =

6 8
10 12

Subtrair:
--> A-B
ans =

-4 -4
-4 -4

Multiplicar:
--> A*B
ans =

19 22
43 50

15
3.2.2. Funções Matriciais

Dada a matriz A:
A =

1 2
3 4
Inversa de A:
--> inv(A)

Transposta de A (usar o apóstrofo, ou seja, aspas simples):


--> A'

Determinante de A:
--> det(A)

Diagonal de A:
--> diag(A)

Parte triangular inferior de A:


--> tril(A)
ans =

1 0
3 4

Parte triangular superior de A:


--> triu(A)
ans =

1 2
0 4

A função zeros cria matriz de elementos nulos.


Exemplo: A = zeros(3,2)

A função ones cria matriz com todos elementos iguais a 1.


Exemplo: B = ones(3,2)

A função eye cria matriz identidade.


A função eye utiliza as seguintes sintaxes:

X=eye(m,n) retorna matriz identidade de dimensão m x n e o


comando é aplicável mesmo quando a matriz desejada não é
uma matriz quadrada.

16
X=eye(A) retorna matriz identidade com mesma dimensão que
A.

Fonte: Neto, 2011 – USP.

3.2.3 Manipulação de linhas e colunas:

Dada a matriz A:
A =
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

Selecionar a segunda linha:


--> A(2,:)
ans =

5 6 7 8

Selecionar a terceira coluna:


--> A(:,3)
ans =

3
7
11
15

17
3.2.4 Mais comandos para matrizes e vetores

1)Dimensão: length(x)

2)Número de linhas e colunas: [nr,nc] = size(x)

3)Gerar números aleatórios entre 0 e 1: rand(x,y)

Exemplo:

-->rand(2,3)
ans =

0.0002211 0.6653811 0.8497452


0.3303271 0.6283918 0.6857310

4) GerarVetores nulos: x = zeros(N,1) onde N é o número de


elementos do vetor

5) Gerar Matrizes nulas: x = zeros(x,y) onde x,y é a


dimensão.

6) Acrescentar um elemento a um vetor: x=[x elemento]


Exemplo:

-->x
x =

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

-->x=[x 3]
x =

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

7) Agrupar dois vetores x, y = [x y]

8) Apagar o elemento “i” de um vetor: X(i) = [ ]

18
Exercícios - Operações com Vetores

1) Dado o vetor X = [1 2 3 4 5];


a) Insira o valor 10 no final
b) Apague o quinto elemento do vetor

2) Dados os vetores abaixo, crie um vetor Z que seja dado


pela união de X e Y.

X = [ pi e sin(pi) log(10)]
Y = [cos(10pi) 3.5 -2.2 pi²]

3) Crie um vetor com 7 elementos igualmente espaçados no


intervalo [-e; e].

4) Crie um vetor coluna com 10 elementos nulos.


5) Crie um vetor linha com 10 elementos iguais a 1.
6) Crie um vetor coluna com 30 elementos igualmente
espaçados sendo o primeiro igual a 300 e o último igual a
10.
7) Crie um vetor linha: 1000:-10:900.
8) Crie um vetor coluna com todos os números em ordem
decrescente entre 50 e -50.
9) Crie um vetor coluna com todos os números pares em ordem
decrescente entre 100 e 0.

Exercícios - Matrizes

1) Lembre-se:
 Matrizes com elementos unitários: A = ones(M,N)
 Matrizes com elementos nulos: B = zeros(M,N)
 Matriz identidade: A = eye(N,N)

Dadas as matrizes
A = [1 2 3;4 5 6]; e B = [7;8;9]

Determine:
a)A*B
b)B*A
c)A*identidade(A)
d)A*ones(A)
e)A*ones(A)’ + identidade(A)
f)Crie uma matriz 5X5 de números aleatórios.

19
IMPORTANTE

3.2.5 Operador . (ponto)

Este operador é usado com outros operadores para


realizar operações elemento a elemento.

Exemplos:

Exemplo 1:
A = [1 2 3; 3 4 6; 7 8 9];

a) faça A^2 (verificar)


b) faça A.^2 (verificar)

Exemplo 2:
x = -3:3;
a) faça y = x^2+2*x
b) faça y = x.^2+2.*x

3.3 Resolução de Sistemas Lineares

Um sistema linear pode ser expresso da forma:

Ax=b

onde:
A é a matriz dos coeficientes
x é o vetor das variáveis
b é o vetor dos termos independente

A resolução de um sistema é x=A-1b, ou seja, basta


obter a matriz inversa de A e multiplicá-la pelo vetor b.
No Octave isto pode ser feito desta forma:

A=[1 3;3 4];


b=[5;2];
x=inv(A)*b

20
Esta solução pode ser também ser obtida com o operador
“divisão à esquerda”
cujo símbolo é “\”.

Sintaxe: x=A\b

Exemplo:
Dado o seguinte sistema linear:
3x + y + z = 20
2x - y - z = -15
-4x + y -5z = -41

Podemos resolvê-lo no Octave da seguinte maneira:


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

3 1 1
2 -1 -1
-4 1 -5

-->b=[20;-15;-41]
b =

20
-15
-41

-->x=A\b
x =
1
8
9

Logo temos como solução x'= [1 8 9], ou seja, x=1,y=8


e z=9.

Exercício: Resolva o sistema linear. Substitua as soluções


na equação para confirmação a solução.

21
Exercícios Diversos

1. Dados os vetores:
u = [-3 3 -1 0 5];
v = [2 1 -5 1 4];
w = [2 –1 –3 0 2];
calcular:
a) u*v
b) w*v
c) u*(v + w)
d) u*(v - w)

2. Calcular a norma ou comprimento de cada um dos vetores do


item 2. Use o comando norm(x).

3. Determinar os autovalores e autovetores normalizados da


matriz A:
Use: [e,L]=eig(A)

 4  2 3
A   1 5 1
 3 4 7 

4. Calcular o comprimento ou norma de cada vetor coluna da


matriz A do item anterior.
Exemplo, para a matriz A:
NORMA_A=[norm(A(:,1)) norm(A(:,2)) norm(A(:,3))]

5. Uma amostra multivariada aleatória X (com 5 observações


e 6 variáveis) é dada a seguir:

45 52 55 44 54 46
47 51 53 48 53 57
43 45 46 44 44 51
49 46 49 45 48 57
51 55 44 57 49 56

Estimar: (a) o vetor de médias; (b) a matriz covariância


estimada S; (c) a matriz desvio padrão

SOLUÇÃO:

(a) o vetor de médias

» mean(X)
ans =

22
49.7500 49.0833 48.8333 47.8333 49.4167 50.8333

(b) a matriz covariância estimada S;

» S=cov(X)

S =
21.8409 7.1136 4.5000 -4.6818 -5.8864 -9.8636
7.1136 12.4470 3.7424 2.7424 2.9621 -2.1667
4.5000 3.7424 23.2424 -14.3939 5.0758 -6.3030
-4.6818 2.7424 -14.3939 22.8788 5.8939 12.9697
-5.8864 2.9621 5.0758 5.8939 18.2652 6.9848
-9.8636 -2.1667 -6.3030 12.9697 6.9848 22.5152

(c) a matriz desvio padrão D1/2.


» matrizdesvpad=diag(sqrt(diag(S)));
» matrizdesvpad

matrizdesvpad =

4.6734 0 0 0 0 0
0 3.5280 0 0 0 0
0 0 4.8210 0 0 0
0 0 0 4.7832 0 0
0 0 0 0 4.2738 0
0 0 0 0 0 4.7450

7. Uma amostra multivariada X de tamanho n = 12 foi obtida


de um vetor aleatório p = [alturas pesos], resultando
Indivíduo Altura Peso
1 168 89
2 180 82
3 178 67
4 167 72
5 190 95
6 175 70
7 178 75
8 183 80
9 169 70
10 177 73
11 184 85
12 170 68

(a) Construir a matriz de dados;


(b) calcular o vetor de médias;
(c) representar graficamente num espaço bidimensional as
observações e o vetor de médias.

23
SOLUÇÃO:

x=[168;180;178;167;190;175;178;183;169;177;184;170];
%Obs: pode usar x=(X(:,1))
y=[89;82;67;72;95;70;75;80;70;73;85;68];
%Obs: pode usar x=(X(:,2))
plot(x,y,'*');
xlabel('Estaturas');
ylabel('Pesos');
title('Grafico das Observacoes e Media');
hold on;
plot(176.5833,77.1667,'ro');
hold off

24
CAPÍTULO 4: POLINÔMIOS

No Octave os polinômios são representados por um vetor de


coeficientes ordenados da maior potência para a menor. Por
exemplo, o polinômio é representado pelo
vetor [2, -3, 0, 2].

4.1 Definição de Polinômio a Partir dos Coeficientes

Um polinômio também pode ser criado a partir da


especificação de seus coeficientes. Por exemplo, o polinômio
q = 2s + 1 é criado através do comando poly.

Veja a sintaxe a seguir para um polinomio p,


representado pelos seus coeficientes:

Se p = x² + 2x - 3 este será representado por p=[1, 2, -3]

No Octave:
p=[1, 2, -3]

Mostrar no formato com a variável x:

No Octave:
px=polyout(p,"x")

Mostrar valor numérico, por exemplo p(5):

No Octave:
polyval(p,5)

4.2 Obtenção das Raízes de um Polinômio

Tendo o polinômio, é possível obter as raízes dele através


do comando roots

Exemplo 1:
Calcular as raízes do polinômio: 2x³ + 5x² + 9x +3

p=[2, 5,9,3]
qx=polyout(p,"x")

25
roots(p)

Exemplo 2: Encontrar as raízes complexas de q=x²+1:

q = [1, 0, 1]; #define q


qx=polyout(q,"x") #saida de q
roots(q) #raizes de q

Será gerado:

Logo, as raízes são i e -i.

4.2 Algumas Operações com Polinômios

Multiplicação (Convolução):

resultado = conv(p, q): Devolve o vetor de coeficientes que


define o polinômio que é produto dos polinômios p e q.

26
Divisão (com resto inclusive):

[resultado, resto] = deconv(p, q): Realiza a divisão dos


polinômios p e q, devolvendo o polinômio
quociente ”resultado” e o polinômio resto “resto”, de forma
que se cumpra:

27
CAPÍTULO 5: GRÁFICOS BIDIMENSIONAIS E TRIDIMENSIONAIS

5.1 Comandos Básicos para Gráficos

a) Comando plot
plot(x,y): para plotar os dados no vetor x versus
vetor y.
plot(x1,y1,’tipo 1’,x2,y2,’tipo2’, ...): para plotar
diversas linhas ao mesmo tempo.

b) Outros comandos para gráficos:

28
5.2 Gráficos 2D

A função plot tem diferentes formas, dependendo do tipo


dos argumentos de entrada. Se y for um vetor, plot(y) gera
um gráfico linear por partes das componentes y versus o
índice respectivo. No caso em que x e y sejam vetores da
mesma dimensão, plot(x,y) gera um gráfico de y versus x. Por
exemplo, para fazer o gráfico do valor da função seno de
zero a 2:

x = (0:0.01:2) * pi;
y = sin(x);
plot(x,y);

5.2.1 Comando para Títulos e Legendas

Para colocar título no gráfico, assim como nos eixos é


utilizada a função title(‘’), cuja sintaxe é:

title('Aqui vai o titulo')


legend('legenda primeira curva', 'legenda segunda curva')
xlabel('Aqui vai o texto do eixo das abcissas')
ylabel('Aqui vai o texto do eixo das ordenadas')

29
Exemplo 1:

t = 0:0.1:10;
S = 5 + 10*t + 0.5*2*t.*t;
V = 10 + 2*t;
hold on %Abre o ambiente para plotar gráficos
plot(t,S,"-*r");%(-*r o tipo da linha)
plot(t,V,"-+b");%(-+b o tipo da linha)
title('Cinematica');
legend('Posicao', 'Velocidade');
hold off %Fecha o ambiente para plotar gráficos

Exemplo 2:

Construir o gráfico da função y = sen(x) no intervalo


[0, 10] com a linha em vermelho e colocando os títulos.

x=1:0.1:10;
y= sin(x);
plot(x,y,"r-")
title("Funcao y = sen(x) no intervalo [0, 10]")
xlabel("Eixo x")
ylabel("Eixo y")

30
Exemplo 3:

%CODIGO 1 %CODIGO 2
x = (0:0.1:2)*pi ;
y=sin(x); x = (0:0.1:2)*pi ;
z=cos(x); y=sin(x);
plot (x , y , ' r−' , x , z z=cos(x);
, ' b−∗ ' ) hold on %Abre o ambiente
legend (' seno ' , ' de plotagem
cosseno ')
title ( ' seno e cosseno ' plot (x , y , ' r−' )
) plot(x , z , ' b−∗ ' )
xlabel ( ' eixo x' ) legend (' seno ' , '
ylabel ( ' eixo y' ) cosseno ')
grid on title ( ' seno e cosseno '
)
xlabel ( ' eixo x' )
ylabel ( ' eixo y' )
grid on
hold off %Fecha o ambiente
de plotagem
Os dois códigos geram o mesmo gráfico

31
5.2.2 Apresentação de vários gráficos em uma mesma janela

O comando subplot(m,n,p) permite dividir a janela


gráfica do Octave em uma matriz de m linhas por n colunas.
Em cada um dos elementos da “matriz”, identificado por p,
pode ser colocado um gráfico.

Exemplo:

x = (0:1/100:2) * pi;

subplot(221)
plot(x,sin(x))
title("Seno no intervalo [0; 2pi]")

subplot(222)
plot(x,cos(x))
title("Cosseno no intervalo [0; 2pi]")

subplot(223)
plot(x,tan(x))
title("Tangente no intervalo [0; 2pi]")

subplot(224)
plot(x,sec(x))
title("Secante no intervalo [0; 2pi]")

32
5.2.3 Especificação do tipo e cor da linha e do marcador

O Octave permite customizar a aparência da linha do


gráfico, como cor, tipo da linha e tipo de marcador a ser
utilizado.
Por exemplo, para especificar uma linha vermelha
tracejada e marcador em forma de diamante, pode ser escrito:
“r--d” ou “--reddiam”.

Opções do plot no Octave

Exemplo 1:

Construir o gráfico da função y = sen(x) no intervalo


[0, 10] com linha vermelha tracejada e marcadores em
diamante.

x=1:0.1:10;
y=sin(x);

plot(x,y,'r-d')

O símbolo – antes da
letra d é o tipo da linha.
Faça um experimento em
substituir o “-” por “--” ou
por “.” ou ainda por “..”.

33
Exemplo 2:

x=1:0.1:10;
y=sin(x);
plot(x,y,'b--+')

5.2.4 Vários Gráficos em um Mesmo Sistema de Eixos

Exemplo: Construção de mais de um gráfico em um mesmo


sistema de eixos utilizando diferentes especificações para
cada um.

Construir, em um mesmo sistema de eixos e no intervalo


[0, 10], o gráfico da função y = sen(x) com a linha contínua
em vermelho e marcador na forma de círculo e da função y =
cos(x) com o marcador na forma de “*” em azul com linha.

No Octave:
t=0:pi/20:2*pi;
plot(t,sin(t),'ro-',t,cos(t),'b*-')

% Comentário: Veja que


'b*-' quer dizer: cor
blue, marcador * e linha
-.

34
5.2.5 Linhas de Grade

Para adicionar linhas de grade utiliza-se a função grid


on.

Exemplo:
Seja construir o gráfico da função y = sen(x) no
intervalo [0, 10] com a linha em vermelho, colocando os
títulos e as linhas de grade.
No Octave:

x=1:0.1:10;
plot(x,sin(x),"r-")
title("Funcao y = sen(x) no intervalo [0, 10]")
grid on

Obs: pode-se inserir linhas de grade diretamente no


menu da janela do gráfico.

Este é o gráfico obtido:

35
5.3 Gráficos 3D

O comando plot3(x,y,z) produz gráficos tridimensionais.

Sintaxe: plot3(x,y,z)

t = 0:pi /50:10*pi;
y=sin(t);
z=cos(t);
plot3(y,z,t)
grid on

5.3.1 Gráficos 3D – comandos “meshgrid” e “mesh”.

O Comando “meshgrid”: cria matrizes ou vetores em um


intervalo [a, b].
Veja que por exemplo (-1: 0.5 : 4) é uma matriz no
intervalo [-1, 4] com incremento 0,5.

[x y] = meshgrid(-1:0.5:4,-1:0.5:5)

36
Exemplo 1:

No Octave:

[X,Y]=meshgrid(-5:0.1:5,-4:0.1:4);
Z=X.^2-Y.^2;
title('z=x2-y ^2');
mesh(X,Y,Z);

Este é o gráfico obtido:

37
Exemplo 2: Representar graficamente uma distribuição normal
bivariada com vetor de médias x = [10 15] e matriz
4 0
covariância   definida por:
0 9
(foram aplicados os dados de x e de ∑ acima, na expressão
referente à função densidade de probabilidade da função
normal bivariada resultando):
1  1  X  10  2  X  15  2 
f (X1, X 2 )  exp  1   2  
12  2  2   3  

No Octave:
x1=2:0.1:8;
x2=1:0.1:12;
[x1,x2]=meshgrid(x1,x2);
z=(1/(12*pi))*exp(-0.5*(x1-5).^2-0.5*((x2-8)/2).^2);
mesh(z)

Este é o gráfico obtido:

38
Exemplo 3: Comando plot3

t = 0:0.1:10*pi;
r = linspace (0, 1, length(t));
z = linspace (0, 1, length(t));
plot3 (r.*sin(t), r.*cos(t), z, 'linewidth',2);

(Veja como ficará o gráfico)

Exemplo 4: Comando mesh

tx = linspace (-8, 8, 41)';


ty = linspace (-8, 8, 41)';
[xx, yy] = meshgrid (tx, ty);
r = sqrt (xx .^ 2 + yy .^ 2) + eps;
tz = sin (r) ./ r;
mesh (tx, ty, tz);

(Veja como ficará o gráfico)

5.3.2 Gráficos em coordenadas polares

Sintaxe: polar(ângulo,r,'parâmetros')

Onde r uma função do ângulo e parâmetros são


combinações do tipo de linha, da cor e do ponto.

Para gerar gráficos em coordenadas polares:

39
Exemplo 1: Função polar

t = 0:0.1:2*pi ;
polar(t , sin(2*t).*cos(2*t), '−−r ')
title('Coordenadas Polares ' )

Exemplo 2: Transformando em cartesianas

% Discretizamos ro y theta
theta = linspace(0, 10*pi, 300);
ro = 3 - 5 .* (theta);

% Transformamos em cartesianas
x = ro .* cos(theta);
y = ro .* sin(theta);

% Plotamos
plot(x,y)
axis equal

40
5.4 Gráficos Estatísticos.

5.4.1 Gráficos de colunas

Exemplo 1:

x = [1 4 5 10 8 7 4 3 1];
bar(x)

5.4.2 Polígono de Frequências

Exemplo:

x = [1 4 5 10 8 7 4 3 1];
plot(x)

41
5.4.3 Gráfico de Barras

Exemplo 1:

x = [10 30 5 22];
barh(x)

5.4.4 Gráfico de Setores

Utiliza-se o comando “pie”

partidos = {'PAF', 'PS', 'BE', 'PCP+PEV', 'PAN'};


deputados = [107, 86, 19, 17, 7];
pie(deputados, partidos);
title('Resultado da Pesquisa')

Obs.: Para colocar títulos, legendas, etc..., procede-


se de forma análoga aos gráficos 2D vistos anteriormente.

42
5.4.5 Diagrama de Dispersão

Seja a tabela a seguir com peso e estatura de 10


pessoas:

Peso Estatura
68 160
69 165
76 168
70 163
89 182
83 188
56 161
54 160
76 175
70 167

i) Atribuir vetores P (peso) e E (estatura)


P=[68, 69,76,70,89,83,56,54,76,70];
E=[160,165,168,163,182,188,161,160,175,167];

ii) Diagrama de Dispersão

plot(P,E,'*')
xtitle("Pesos X Estaturas")
xlabel('Pesos') //para rotular o eixo x.
ylabel('estaturas') //para rotular o eixo y.

43
CAPÍTULO 6: INTEGRAÇÃO

6.1 Integral Definida

É possível calcular uma integral definida quando se tem


um conjunto de pontos.

Exemplo: Digamos que conhecemos os seguintes pontos:


(2, 10), (3, 13), (4, 15), (5, 12), (6, 4)

Definimos no Octave:

x=[2 3 4 5 6]

y=[10 13 15 12 4]

Ver a área no gráfico:

area(x,y)

44
Calculando a integral pela soma de trapézios:

>> trapz(x,y)

ans = 47

Alguns Exemplos:
Exemplo 1:

## Graficos de área
clf;
x = [-2:0.1:2]';
y = x.^2 - 1;
z = x.^3;

subplot (1, 2, 1)
area (x, y);
title ({"Parabola y = x^2 -1"});
subplot (1, 2, 2)
h = area (x, z);
title ({"Curva y = x^3"});

45
Integrais:

Área do gráfico 1:
Deve ser dividida em 3 partes:

Parte Código Resposta


x_area1=[-2:0.1:-1]';
Parte y_area1 = x_area1.^2 - 1; area1 = 1.3350
I area1= trapz(x_area1,y_area1)

x_area2=[-1:0.1:1]';
Parte y_area2 = x_area2.^2 - 1;
area3 = -1.3300
II area2= trapz(x_area2,y_area2)

x_area3=[1:0.1:2]';
Parte y_area3 = x_area3.^2 - 1;
area3 = 1.3350
III area3=trapz(x_area3,y_area3)

area_total=area1 + abs(area2) + area3

Área do gráfico 2: raciocínio análogo.

46
CAPÍTULO 7: PROGRAMAÇÃO

Nesse capítulo será apresentado um resumo simples sobre


programação em Octave.

Digitar o programa na guia Editor (circulado em vermelho


abaixo)

Para executar clicar em salvar executar (seta amarela


na figura acima).
O programa vai ser executado na guia Janela de Comandos.
Salvar o programa evitando espaços entre as palavras do
nome. Não utilizar caracteres especiais nem acentuação.
A extensão do arquivo de programa é .m

Exemplo: Um código simples para equações do 2º grau,

47
As figuras abaixo foram obtidas de:
http://www.uft.edu.br/engambiental/prof/catalunha/arquivos/octave/octave_Nuno.pdf

7.1 Estrutura de Seleção IF

48
7.2 Estrutura de Repetição

7.2.1 While

7.2.1 For

49
7.3 Comando Break

REFERÊNCIAS

Mini-curso de MATLAB e Octave para Cálculo Numérico. PET -


Engenharia de Computação Universidade Federal do Espírito
Santo.

Neto, F. G. A., Nascimento, V. H. Apostila Introdutória de


Matlab/Octave. USP: São Paulo, 2011

Site: https://octave.sourceforge.io

Site:
https://octaveintro.readthedocs.io/en/latest/graph.html

Ulbricht, Gerson. Apostila de Cálculo Numérico – Notas de


Aulas. 2019.

Site (lista de funções e bibliotecas):

https://octave.sourceforge.io/list_functions.php?sort=packa
ge

http://www.uft.edu.br/engambiental/prof/catalunha/arquivos/
octave/octave_Nuno.pdf

50

Você também pode gostar