curso de modelagem numérica computacional com o software livre (octave)
DESCRIPTION
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? - PowerPoint PPT PresentationTRANSCRIPT
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
1. Comandos básicos2. Matrizes3. Gráficos em 2D e 3D4. Criando script5. Estatística 6. Polinômios 7. Calculo integral 8. Vetores
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
• Comandos especiaisRaiz quadrada
Exponencial (e)
Número pi
Logaritmo natural
Modulo
Fatorial
sqrt(x)
exp(x)
pi
log(x)
abs(x)
factorial(x)Trigonometriasin(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
• 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*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
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
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
5523
2/12
12
zyx
zyx
zyx
523
112
211
A
Para a resolução deste sistema é necessário, termos
Ax=B, onde
5
2/1
1
B
x=A\B, é conceitualmente equivalente a usar (A−1)B, o que dá a resolução deste tipo de problema.
Outra forma de operação com matrizes é feita diretamente:
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).
• Gráficos em 3D
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
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.
Outra forma de representação de polinômios é a seguinte:
01032 2345 xxxxx
Com o comando polyder é possível calcular a derivada de um dado polinômio.
1032)( 2345 xxxxxxf
16385)(' 234 xxxxxf
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:
• Para o produto e o quociente,
7. Calculo integral (integral definida)
1
0dxx
Outra forma de resolver uma integral definida é através do método trapezoidal. Utilizando o comando trapz(x,y)
2
1
dxearea x
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
v
v
kvjvivv
z
y
x
zyx
w
w
w
kwjwiww ˆˆˆ
zzyyxxzyx
z
y
x
wvwvwvwww
v
v
v
wv
)(
)ˆˆˆ()ˆˆˆ( kwjwiwkvjvivwv zyxzyx
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)
Existe outra forma de representar um vetor, ou seja,