540 likes | 745 Views
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. O que é o Octave?
E N D
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
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.
Sumário • Comandos básicos • Matrizes • Gráficos em 2D e 3D • Criando script • Estatística • Polinômios • Calculo integral • Vetores
1. Comandos básicos • Operações aritméticas : 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 c Para apagar todas as variáveis, digita-se: > clear all
Comandos especiais Trigonometria sin(x): Seno de x cos(x): Cosseno de x tan(x): Tangente de x asin(x): Seno inverso de x acos(x): Cosseno inverso de x atan(x): Tangente inverso de x sinh(x): Seno hiperbólico de x cosh(x): Cosseno hiperbólico de x tanh(x): Tangente hiperbólico de x asinh(x): Seno hiperbólico inverso de x acosh(x): Cosseno hiperbólico inverso de x atanh(x): Tangente hiperbólico inverso de x Arredondamento: floor(x): Arredonda x para baixo ceil(x): Arredonda x para cima round(x): Arredonda x para o inteiro mais próximo
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.
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:
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.
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:
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’.
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
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
Podemos adicionar, subtrair, achar a transposta de matrizes, entre outras operações. >a=[1,2;2,1]; >b=[2,1;1,2]; >a+b ans = 3 3 3 3
>a*b ans= 4 5 5 4 >transpose(a) ans= 1 2 2 1 >c=[1 2; 2 3] ans= 1 2 2 3 >inverse(c) ans= -3 2 2 -1
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*M ans= 3 6 9 Para achar o determinante duma matriz, utilizar comando det(x) . >x=[1,2;2,1] ans= 1 2 2 1 >det(x) ans= 0
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.
Resolução de sistemas lineares Para a resolução deste sistema é necessário, termos Ax=B, onde
x=A\B, é conceitualmente equivalente a usar (A−1)B, o que dá a resolução deste tipo de problema.
No octave assim como no matlab é possível gerar vetores, vejamos:
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
>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”)
O octave também pode plotar gráficos somente conhecendo os valores, ou seja, sem a função
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).
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.
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.
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)
surf( x, y, z ): Plota superfície 3D. A superfície 3D da função do exemplo passado. >surf(x,y,z)
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.
O comando subplot, com ele é possível fazer diversos gráficos em uma mesma tela, vejamos:
Obs.: exitem formas mais diretas de se plotar um gráfico > fplot(‘1/(1+x.^2), [-5 5])
Para introduzir barras em um gráfico, temos o comando colorbar(‘east’)
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.
Basta escrever o nome do arquivo, e então aparece as raízes da equação do segundo graus.
5. Estatística • Abaixo temos um exemplo de cálculo de média e desvio padrão
Outra variável importante em estatística é o coeficiente de correlação (que mede o grau da correlação entre duas variáveis).
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.
Com o comando polyder é possível calcular a derivada de um dado polinômio.
Para calcular integral de um polinômio, segue o comando: É possível ainda calcular o valor do polinômio, segue o comando:
Outra forma de resolver uma integral definida é através do método trapezoidal. Utilizando o comando trapz(x,y)