53
Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba Prof. Msc. Henrique do Nascimento Camelo

Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

Embed Size (px)

Citation preview

Page 1: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

Curso de modelagem numérica computacional com

o software livre (Octave)

Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus ParnaíbaProf. Msc. Henrique do Nascimento Camelo

Page 2: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

• O que é o Octave?

• Resumidamente, é um software livre capaz de resolver cálculos numéricos e também pode ser usado como linguagem de programação de alto nível. O GNU/Octave é uma linguagem de alto nível basicamente voltada para computação gráfica. Esse programa na maioria de seus comandos é compatível com o Matlab (que é um programa comercial). O programa pode ser utilizado também em modo script (textos de programação) e permite incorporar módulos escritos nas linguagens C++, C, Fortran e outras. O GNU/Octave foi escrito por John W. Eaton e muitos outros, estando disponível na forma GPL. O GNU Octave utiliza o GNUPLOT.

Page 3: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

Sumário

1. Comandos básicos2. Matrizes3. Gráficos em 2D e 3D4. Criando script5. Estatística 6. Polinômios 7. Calculo integral 8. Vetores

Page 4: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

1. Comandos básicos• Operações aritméticas :

Somar +Subtrair -Multiplicar *Dividir /

Potencia **

Raiz quadrada sqrt(x)

Exemplos:

Obs:Para remover da área de trabalho uma variável já atribuída, usa-se o comando clear, seguido do nome da variável, como em:> clear cPara apagar todas as variáveis, digita-se:> clear all

Page 5: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

• Comandos especiaisRaiz quadradaExponencial (e)Número piLogaritmo naturalModulo Fatorial

sqrt(x)exp(x)pilog(x)abs(x)factorial(x)Trigonometria

sin(x): Seno de xcos(x): Cosseno de xtan(x): Tangente de xasin(x): Seno inverso de xacos(x): Cosseno inverso de xatan(x): Tangente inverso de xsinh(x): Seno hiperbólico de xcosh(x): Cosseno hiperbólico de xtanh(x): Tangente hiperbólico de xasinh(x): Seno hiperbólico inverso de xacosh(x): Cosseno hiperbólico inverso de xatanh(x): Tangente hiperbólico inverso de x

Arredondamento:floor(x): Arredonda x para baixoceil(x): Arredonda x para cimaround(x): Arredonda x para o inteiro mais próximo

Page 6: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

• Exemplos das funções citadas:

Observação importante: você pode digitar “;” (Ponto-e-vírgula) após uma certa linha de comando. Isto serve para o programa não dar a resposta do ‘cálculo’ na tela. Ele apenas armazena na memória dele a informação. E, para exibir o valor de uma variável, basta escrever o nome da variável desejada que o Octave exibirá o seu valor logo abaixo.

Page 7: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

As variáveis são criadas por você, durante o uso deste programa, e podem assumir valores numéricos (ou seja, reais ou complexos), matrizes, vetores, strings (seria um ‘vetor de caracteres’) entre outros. Para criar variáveis basta digitá-la no programa, assumir um valor para ela e pronto! Veja uns exemplos:

Page 8: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

Uma variável c = 9 + 5i (um número complexo) após declaramos a e b e c = a + 2b. Percebe-se que apareceu um erro. O Octave indica (^) em qual lugar está o erro. E foi a falta de asterisco (*) pra indicar a multiplicação de 2*b. Então, este programa não aceita a omissão deste sinal de multiplicação.

Page 9: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

Uma coisa interessante é que você pode escolher a quantidade de casas que você quer que apareça quando digitar a constante, ou melhor, você pode formatar o tipo da constante. Assim, vemos que há o format long, que apresenta 15 casas decimais. O format short, que aparece duas casas decimais, o format que nos dá 4 casas após a vírgula e, também, há format bank, com duas casas após a vírgula e com números complexos, não aparece a parte imaginária. Mais algumas constantes:

Page 10: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

O Comando disp( ) serve para exibir somente o valor final da entrada do usuário.

>format long

>disp(“Ovalor do numero eh:”),disp(e)

O valor do numero eh:

2.71828182845905

Agora com dois ‘disp()’. Perceba que há uma vírgula entre eles! Num utilizei uma string e em outro coloquei o número ‘e’.

Page 11: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

• Para definir funções, usa-se o comando “function” e em seguida a declaração da função y=f(x), por exemplo, seguida da função:

>function y=f(x)>y=x^2;>endfunction>f(3)ans=

9

Page 12: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

2. Matrizes• Para criar uma matriz, basta você inserir os valores destes

entre colchetes: [ ]. Sendo que valores na mesma linha são separados por vírgula, e valores na mesma coluna são separados com ponto-e-vírgula

Page 13: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

Podemos adicionar, subtrair, achar a transposta de matrizes, entre outras operações.

>a=[1,2;2,1];>b=[2,1;1,2];>a+bans =

3 33 3

Page 14: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

>a*bans=

4 55 4

>transpose(a)ans=

1 22 1

>c=[1 2; 2 3]ans=

1 22 3

>inverse(c)ans=

-3 22 -1

Page 15: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

Para multiplicar uma matriz M =[1,2,3] por um escalar n, como n=3, fazer: 3*M:

>M=[1,2,3]ans=

1 2 3>3*Mans=

3 6 9

Para achar o determinante duma matriz, utilizar comando det(x) .

>x=[1,2;2,1]ans=

1 22 1

>det(x)ans=

0

Page 16: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

Também há comandos prontos para matrizes. Tais como:

• 1. ones(N,M) para construir uma matriz N × M com elementos de valor 1.

• 2. zeros(N, M) para construir uma matriz N ×M com elementos de valor 0.

• 3. eye(N,M) para construir uma matriz com elementos de valor 1 na diagonal.

• 4. rand(N,M) para construir uma matriz N × M com elementos de valor.

Page 17: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

•Resolução de sistemas lineares

55232/12

12

zyxzyxzyx

523112211

A

Para a resolução deste sistema é necessário, termos

Ax=B, onde

52/1

1B

Page 18: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

x=A\B, é conceitualmente equivalente a usar (A−1)B, o que dá a resolução deste tipo de problema.

Page 19: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

Outra forma de operação com matrizes é feita diretamente:

Page 20: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

No octave assim como no matlab é possível gerar vetores, vejamos:

Page 21: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

3. Gráficos em 2D e 3D

• Abaixo segue o gráfico do seno e o comando utilizado no Octave para plota o gráfico seno, o gráfico do cosseno e gráfico do seno junto com o do cosseno( veja páginas seguintes).

>x=(0:0.01:2*pi);

>y=sin(x);

>plot(x,y)

>title(“grafico do seno”)

>xlabel(“eixo x”)

>ylabel(“eixo y”)

>grid on

>print(’nome.png’,’-dpng’) % para salvar em PNG

Page 22: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

>clearplot>x=[0:0.01:2*pi];>y1=sin(x);>y2=cos(x);>plot(y1,x)>title(“grafico seno”)>clearplot>plot(y2,x)>title(“grafico do

cosseno”)

Page 23: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

O octave também pode plotar gráficos somente conhecendo os valores, ou seja, sem a função

Page 24: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

legend( 'texto1', 'texto2', 'location', 'pos' ): Coloca as legendas na posição indicada por pos, que podem ser: north, south, east, weast, northeast, northwest, southeast, southwest).

Page 25: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba
Page 26: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba
Page 27: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

• Gráficos em 3D

Page 28: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

mesh( x, y, z ): Plota uma malha em 3D. Superfícies tipo do mesh são úteis para gerar grácos de funções de duas variáveis. O primeiro passo para plotar uma função de 2 variáveis z=f(x,y) é gerar matrizes x e y contendo linhas e colunas repetidas, respectivamente, para funcionarem como o domínio da função. A função meshgrid transforma o domínio especificado por dois vetores em duas matrizes x e y. Essas matrizes então são usadas para avaliar a função de 2 variáveis. O exemplo gera o gráfico referente à função O comando eps no exemplo representa a precisão da máquina e evita uma divisão por zero na linha 3.

2122

2122

)(

)(),(yx

yxsenyxf

Page 29: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba
Page 30: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

contour( z, w ): Plota linhas de contorno em duas dimensões. Se z depender de x e y, e w for uma constante, o resultado é a projeção de um gráfico em 3D no plano xy com w curvas de nível. O cotorno em 2D da função do exemplo anterior.

Page 31: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

contour3( x, y, z, n ): Plota contorno em 3D com n iso-linhas. Na figura tem-se o contorno 3D da função do exemplo passado.

>contour3(x,y,z,40)

Page 32: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

• surf( x, y, z ): Plota superfície 3D. A superfície 3D da função do exemplo passado.

>surf(x,y,z)

Page 33: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

• surface( x, y, z ): Plota a superfície de contorno 2D de um gráfico 3D. Vejamos o exemplo passado A cor de cada ponto do gráfico é proporcional ao valor que ele possui. Isso é feito distribuindo-se cores para as faixas de valores assumidos pela função.

Page 34: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

O comando subplot, com ele é possível fazer diversos gráficos em uma mesma tela, vejamos:

Page 35: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba
Page 36: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

Obs.: exitem formas mais diretas de se plotar um gráfico

> fplot(‘1/(1+x.^2), [-5 5])

Page 37: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

Para introduzir barras em um gráfico, temos o comando colorbar(‘east’)

Page 38: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

4. Criando script

• No octave é possível criar um scritp para que não seja mais necessário repetir comandos. Basta escrever os comandos em um editor de texto e em seguida salvar com a extensão arquivo.m. Ou então, colocar: > edit

Exemplo: resolução de equação do segundo graus.

Page 39: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

• Basta escrever o nome do arquivo, e então aparece as raízes da equação do segundo graus.

Page 40: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

5. Estatística

• Abaixo temos um exemplo de cálculo de média e desvio padrão

Page 41: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

• Outra variável importante em estatística é o coeficiente de correlação (que mede o grau da correlação entre duas variáveis).

Page 42: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

6. Polinômios

• Para se encontrar as raízes reais de um polinômio, basta utilizar a função roots( v ), que retorna em um vetor coluna, as raízes de um polinômio, cujos coeficientes das potências em ordem decrescente são os elementos do vetor v. As raízes do polinômio x2 + 3x - 4 são -4 e 1.

Page 43: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

Outra forma de representação de polinômios é a seguinte:

01032 2345 xxxxx

Page 44: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

Com o comando polyder é possível calcular a derivada de um dado polinômio.

1032)( 2345 xxxxxxf

16385)(' 234 xxxxxf

Page 45: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba
Page 46: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

Para calcular integral de um polinômio, segue o comando: 1032)( 2345 xxxxxxf

É possível ainda calcular o valor do polinômio, segue o comando:

Page 47: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

• Para o produto e o quociente,

Page 48: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

7. Calculo integral (integral definida)

1

0dxx

Page 49: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

Outra forma de resolver uma integral definida é através do método trapezoidal. Utilizando o comando trapz(x,y)

Page 50: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

2

1

dxearea x

Page 51: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

8. Vetores

• No octave é possível fazer manipulações com vetores, como por exemplo, produto escalar, produto vetorial, e norma de um vetor.

,ˆˆˆ

z

y

x

zyx

v

vv

kvjvivv

z

y

x

zyx

w

ww

kwjwiww ˆˆˆ

zzyyxxzyx

z

y

x

wvwvwvwww

v

vv

wv

)(

)ˆˆˆ()ˆˆˆ( kwjwiwkvjvivwv zyxzyx

Page 52: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

Observação para os comandos: norm(v) (fornece o comprimento do vetor), w’*v (fornece o produto escalar), cross(v,w) (fornece o produto vetorial)

Page 53: Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba

Existe outra forma de representar um vetor, ou seja,