























































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Exercicios praticos para treinar Octave.
Tipologia: Manuais, Projetos, Pesquisas
1 / 63
Esta página não é visível na pré-visualização
Não perca as partes importantes!
























































Prof. Darlan Nunes de Brito
AULA PRÁTICA 3 - Decomposição LU, Cholesky e LDL
T
Decomposição LDL
T
Introduzir o ambiente de programação Octave.
O Octave é um "software" de alto desempenho destinado a fazer cálculos com matrizes e vetores,
podendo funcionar como uma calculadora ou como uma linguagem de programação científica
(FORTRAN, Pascal, C, etc.). Entretanto, os comandos do Octave são mais próximos da forma como
escrevemos expressões algébricas, tornando mais simples o seu uso. Atualmente, o Octave é
definido como um sistema interativo e uma linguagem de programação para computação técnica e
científica em geral, integrando a capacidade de fazer cálculos, visualização gráfica e programação.
Prompt de comando do Octave
O programa será aberto clicando 2 vezes sobre o ícone do Octave. Você observará como na Figura
1 a janela a parte da janela referente apenas ao prompt de comando.
Figura 1 – Prompt de comando do Octave
Através do prompt de comando é possível realizar qualquer operação ou executar qualquer função
ou programa criado para o Octave. Também no prompt de comando é possível visualizar os
resultados das operações realizadas. Na Figura 2 podemos observar uma operação de soma de dois
números 10+15 e o resultado desta soma mostrado logo abaixo.
Figura 2 - Opções da aba Arquivo
As teclas com setas podem ser usadas para se encontrar comandos dados anteriormente, para
execução novamente ou sua reedição. Por exemplo, suponha que você entre com o comando sen(0)
como mostrado na Figura 3 aparecerá uma resposta indicando que o comando é indefinido pois não
existe a função sen(0).
Figura 3 - Exemplo de comando errado no prompt do Octave
Isto acontece porque para se determinar o seno de um ângulo é necessário digitar em inglês o
comando sin. No lugar de rescrever a linha inteira, simplesmente pressione a tecla “seta para cima”.
O comando errado retorna, e você pode, então, é possível mover o cursor para trás usando a tecla
"seta para esquerda" ou o ponto de inserção com o "mouse" ao lugar apropriado para inserir a letra i
alterando o comando que agora funcionará corretamente como mostrado na Figura 4.
Figura 4 - Correção de comando no prompt
Tecla Descrição
Retorna a linha anterior
Retorna a linha posterior
Move um espaço para esquerda
Move um espaço para direita
Move uma palavra para direita
Move uma palavra para esquerda
Move para o começo da linha
Move para o fim da linha
Apaga um caractere à direita
Apaga um caractere à esquerda
Tabela 1 - Lista de comandos das teclas
Note que o Octave chamou o resultado de ans ( answer =resposta). Além das teclas com setas,
podem-se usar outras teclas para reeditar a linha de comando, como mostrado na Tabela 1.
Operações básicas e Expressões Logicas
O Octave oferece as operações aritméticas básicas mostradas na Tabela 2.
A ordem nas expressões segue a ordem matemática – potência, seguida da multiplicação e da
divisão, que por sua vez são seguidas pelas operações de adição e subtração. Parêntesis podem ser
usados para alterar esta ordem. Neste caso, os parêntesis mais internos são avaliados antes dos
mais externos.
O formato em que uma constante numérica é mostrada no Octave segue, como opção padrão, os
seguintes critérios: se um resultado é inteiro, o Octave mostra o número como inteiro; quando o
resultado é real, o Octave mostra o número com 5 dígitos à direita do ponto decimal; se os dígitos do
resultado estiverem fora desta faixa, o Octave mostra o resultado usando a notação científica. Este
padrão pode, entretanto, ser modificado utilizando-se o comando format mais o valor do formato
conforme tabela abaixo. Considere a Tabela 5 com exemplos dos formatos numéricos do Octave:
Formato Exemplo Comentário
short 33.50000 5 dígitos decimais (padrão)
long 33.50000000000000 16 dígitos
short e 3.3500e+001 5 dígitos mais expoente
long e 3.350000000000000e+001 16 dígitos mais expoente
short g 3.3500e+001 Mesma coisa que short e mas
não imprime zeros não
significativos
Long g 3.350000000000000e+001 Mesma coisa que long e mas
não imprime zeros não
significativos
short eng 123.00e+003 5 dígitos mais expoente
divisível por 3
long eng 123.0000000000000e+003 16 dígitos mais expoente
divisível por 3
hex 4040c00000000000 Hexadecimal
bank 33.50 2 dígitos decimais
+ + Positivo, negativo ou zero
rational 67/5 Racional
Tabela 5 - Formatos de números do prompt de comando do Octave
As variáveis são utilizadas para armazenar informação. Por exemplo:
q1=3, p1=25, q2=5, p2=
q1 = 3
p1 = 25
q2 = 5
p2 = 12
total=q1p1+q2p
total =
Primeiro, criamos quatro variáveis, q1, p1, q2 e p2, atribuindo a elas valores. Observe que o sinal de
igual (=) aqui significa atribuição. O que estiver à direita do sinal de igual é “colocado” na variável que
estiver à esquerda. Finalmente, criamos uma variável chamada total que recebeu o total o resultado
das operações entre as variáveis.
Os nomes das variáveis devem consistir-se de uma única palavra, conforme as regras expressas na
Tabela 6:
Regras de construção das variáveis Comentários/Exemplos
Variáveis com letras minúsculas são diferentes
de variáveis com as mesmas letras mas com
qualquer uma maiúscula.
Tota ≠ total ≠ TOTAL e ≠ ToTaL são variáveis
diferentes
As variáveis podem consistir de até 19
caracteres
Contador_de_pontosG
As variáveis devem começar com uma letra e
não podem conter caracteres especiais
exceto underline (“_”).
Contador_de_pontosG, Var_1, p_2_
Tabela 6 - Regras para construção de nomes de variáveis
As variáveis podem ser redefinidas a qualquer momento, bastando para isso atribuir-lhes um novo
valor. Variáveis em Octave não possuem tipo podendo assim ser atribuídas valores a elas de
qualquer tipo.
Alguns nomes são usados para variáveis predefinidas, ou seja, são variáveis especiais do Octave,
portanto não é aconselhável utilizar estes nomes para variáveis criadas pelo usuário. Estas variáveis
estão mostradas na Tabela 7.
Variáveis especiais Significado
ans Variável usada para exibir os resultados que não
são atribuídos a nenhuma variável
pi Número pi
eps Menor número tal que, quando adicionado a 1,
cria um número maior que 1 no computador
Inf ou Inf Significa infinito
NAN ou nan Significa que o resultado não é definido como por
exemplo 0/0 ou inf/inf
i e j Unidade imaginária [
nargin Número de argumentos de entrada de uma
função
nargout Número de argumentos de saída de uma função
realmin Menor número que o computador pode
armazenar
realmax Maior número que o computador pode armazenar
Tabela 7 - Variáveis especiais do Octave
Comentário e pontuações
Exemplo dos caracteres mostrados na Tabela 8:
q1=3, p1=25, ...
q2=5; p2=12; %Exemplo de uso da vírgula, ponto e vírgula e três pontos
q1 =
p1 =
Os espaços em branco entre os operadores (aritméticos, lógicos, relacionais) e as variáveis (ou
constantes) são opcionais. O mesmo para vale para a vírgula, o ponto e vírgula e o símbolo de
porcentagem. No entanto, o espaço em branco entre a última variável (ou constante) de uma linha e
os três pontos é obrigatório (veja exemplo anterior).
Símbolo Função
, Separa comandos dados em uma mesma linha. Separa as colunas de uma matriz
; Separa comandos dados em uma mesma linha. Se o último caractere da declaração
é um ponto e vírgula a impressão na tela é suprimida, mas a tarefa é realizada.
Separa as linhas de uma matriz.
% Todo e qualquer caractere depois do símbolo de porcentagem é tomado como
comentário
⋯ Pode-se continuar uma certa expressão na próxima linha usando espaço em branco
e três pontos “...”, ao final das linhas incompletas.
Tabela 8 - Comentários e pontuação
Variáveis literais
Uma variável pode conter uma cadeia de caracteres em vez de um número. Estes caracteres são
manipulados como vetores linha(assunto que será tratado mais adiante). A cadeia de caracteres
deve estar limitada por apóstrofos (‘cadeia de caracteres’) para ser atribuída a uma variável literal.
Funções matemáticas
O Octave tem uma série de funções científicas pré-definidas. A palavra função no Octave tem um
significado diferente daquele que tem na Matemática. Aqui, função é um comando, que pode ter
alguns argumentos de entrada e alguns de saída. Algumas dessas funções são intrínsecas, ou seja,
não podem ser alteradas pelo usuário. Outras funções estão disponíveis em uma biblioteca externa
distribuída com o programa original, que são na realidade arquivos com a extensão ".m" criados a
partir das funções intrínsecas. A biblioteca externa pode ser constantemente atualizada à medida
que novas aplicações são desenvolvidas. As funções do Octave, intrínsecas ou arquivos ".m", podem
ser utilizadas apenas no ambiente Octave.
As categorias gerais de funções matemáticas disponíveis no Octave incluem:
· Matemática elementar;
· Funções especiais;
· Matrizes elementares e especiais;
· Decomposição e fatoração de matrizes;
· Análise de dados;
· Polinômios;
· Solução de equações diferenciais;
· Equações não-lineares e otimização;
· Integração numérica;
· Processamento de sinais.
A maioria das funções pode ser usada da mesma forma que seria escrita matematicamente. Por
exemplo:
x=sqrt(2)/
x =
y=acos(x)
y =
y_graus=y*180/pi
y_graus =
Estes comandos calculam o arco cujo cosseno é
, inicialmente em radianos, depois em graus.
Na Tabela 9 vemos uma lista de algumas funções científicas disponíveis.
Comando de ajuda
No Octave, pode-se obter ajuda sobre qualquer comando ou função. Isto pode ser feito basicamente
de três formas: interativamente através do menu de barras, através do comando help ou do comando
lookfor. Digitando-se simplesmente o comando help ,
help
O Octave mostra uma listagem de todos os pacotes disponíveis. Ajuda sobre um pacote específico
ou sobre um comando ou função específica é obtida com o comando help <tópico>, onde tópico
pode ser o nome de um pacote, de um comando ou função. Por exemplo:
help sign
'sign' is a built-in function from the file libinterp/corefcn/mappers.cc
-- sign (X)
Compute the "signum" function.
This is defined as
-1, x < 0;
sign (x) = 0, x = 0;
1, x > 0.
For complex arguments, 'sign' returns 'x ./ abs (X)'.
Note that 'sign (-0.0)' is 0. Although IEEE 754 floating point
allows zero to be signed, 0.0 and -0.0 compare equal. If you must
test whether zero is signed, use the 'signbit' function.
See also: signbit.
Comando Descrição
abs(x) Valor absoluto de x.
acos(x) Arco cujo cosseno é x.
asin(x) Arco cujo seno é x.
atan(x) Arco cuja tangente é x
conj(x) Conjugado complexo
cos(x) Cosseno de x.
cosh(x) Cosseno hiperbólico de x.
exp(x) Exponencial e
x
floor(x) Arredondamento em direção ao -
gcd(x,y) Máximo divisor comum de x e y.
lcm(x,y) Mínimo múltiplo comum de x e y.
log(x) Logaritmo de x na base
e .
log10(x) Logaritmo de x na base 10.
rem(x,y) Resto da divisão de x por y.
round(x) Arredondamento para o inteiro mais próximo
sign(x) Retorna apenas o sinal de um número
sin(x) Seno de x
sinh(x) Seno hiperbólico de x.
sqrt(x) Raiz quadrada de x.
tan(x) Tangente de x.
tanh(x) Tangente hiperbólica de x.
Tabela 9 - Algumas funções matemáticas
O comando help é a maneira mais simples de se obter auxílio no caso do usuário conhecer o tópico
em que ele quer assistência. Note que no exemplo mostrado a função SIGN está escrita em letras
maiúsculas somente para destacar. Deve-se lembrar que todos os comandos do Octave devem ser
escritos em letras minúsculas. Portanto, para utilizar esta função deve-se digitar:
sign (x)
O Comando lookfor provê assistência pela procura através de todas as primeiras linhas dos tópicos
de auxílio do Octave e retornando aquelas que contenham a palavra-chave especificada. O
interessante deste comando é que a palavra-chave não precisa ser um comando do Octave. Sua
sintaxe é lookfor <palavra-chave>, onde palavra-chave é a cadeia de caracteres que será
procurada 10 nos comandos do Octave. Por exemplo, para se obter informações sobre funções para
se resolver integral:
lookfor integral
ELLIPKE Complete elliptic integral.
EXPINT Exponential integral function.
DBLQUAD Numerically evaluate double integral.
INNERLP Used with DBLQUAD to evaluate inner loop of
integral.
b=imag(x)
b =
M=abs(x)
theta=angle(x)*180/pi
theta = -75.
O Octave permite a manipulação de linhas, colunas, elementos individuais e partes de matrizes. Na
Tabela 10, tem-se um resumo das diversas formas de se construir um vetor no Octave.
Comando Desrição
X=primeiro : último Cria um vetor x começando com o valor primeiro,
incrementando-se de 1(um) em 1(um) até atingir
o valor último ou o valor mais próximo possível
de último
X=primeiro : incremento : último Cria um vetor x começando com o valor primeiro,
incrementando-se do valor incremento até atingir
o valor último ou o valor mais próximo possível
de último.
X=linspace(primeiro,último,n) Cria um vetor x começando com o valor primeiro
e terminado no valor último, contendo n
elementos linearmente espaçados.
X=logspace(primeiro,último,n) Cria um vetor x começando com o valor 10
primeiro
e terminando no valor 10
último
, contendo n
elementos logaritmicamente espaçados.
X=[2 2*pi sqrt(2) 2-3j] Cria um vetor x contendo os elementos
especificados
Tabela 10 - Construção de vetores
Exemplo 1:
x = 1 : 5
Gera um vetor linha contendo os números de 1 a 5 com incremento unitário. Produzindo
x=1:10.
x=
Exemplo 2:
z = 6 : -l : l
Exemplo 3:
Pode-se, também, gerar vetores usando a função linspace. Por exemplo,
k = linspace (0, l, 6)
Gera um vetor linearmente espaçado de 0 a 1, contendo 6 elementos.
x=linspace(1,10.5,5)
x=
Exemplo 4:
x=logspace(0,2,5)
x=
Exemplo 5:
x=[8 6 8.10 5-6j]
x=
8.0000 6.0000 8.1000 5.0000-6.0000i
Nos exemplos acima os vetores possuem uma linha e várias colunas (vetores linha). Da mesma
forma podem existir vetores coluna (uma coluna e várias linhas). Para se criar um vetor coluna
elemento por elemento estes devem estar separados por ( ; ). Por exemplo:
v=[1.5;-3.2;9]
v =
Esses vetores coluna podem também ser criados a partir dos comandos utilizados anteriormente
para criar os vetores linha, acompanhados do símbolo ( '), que é o operador de transposição.
Exemplo:
y=(1:0.5:3)'
y =
z=[0 -2.3 4 sqrt(33)]'
z =
Endereçamento de vetores
No Octave, cada um dos elementos de um vetor podem ser acessados através de
seu índiceque identifica cada uma das colunas. Por exemplo :
x=1:
x=
x(3) % Acessa o terceiro elemento de x
ans =
Matrizes
O Octave trabalha essencialmente com um tipo de objeto, uma matriz numérica retangular ( 1x1; 2x2;
3x3; i( linha) x j (coluna); etc).
Os elementos de cada linha da matriz são separados por espaços em branco ou vírgulas e as
colunas separadas por ponto e vírgula, colocando-se colchetes em volta do grupo de elementos que
formam a matriz. Por exemplo, entre com a expressão
As linhas das matrizes também podem ser definidas através dos comandos utilizados anteriormente
para se definir vetores linha. Por exemplo:
A=[1:3;linspace(4,9,3);0:.5:1]
Os elementos de uma matriz (ou de um vetor) também podem ser definidos por operações ou
funções matemáticas. Por exemplo:
B=[15 7;sqrt(36) cos(pi/3);12/7 2.5^2]
Operações com matrizes
As operações com matrizes no Octave são as seguintes:
· Transposta;
· Adição;
· Subtração;
· Multiplicação;
· Divisão à direita;
· Divisão à esquerda;
· Exponenciação;
Transposta
O carácter apóstrofo, " ' " , indica a transposta de uma matriz. Considere os exemplos a seguir:
x = [-1 0 2]'
Adição e Subtração
A adição e subtração de matrizes são indicadas, respectivamente, por "+" e "-". As operações são
definidas somente se as matrizes tiverem as mesmas dimensões. Por exemplo, a soma com as
matrizes mostradas acima, A + x, não é correta porque A é 3x3 e x é 3x1. Porém,
é aceitável, e o resultado da soma é
A adição e subtração também são definidas se um dos operadores é um escalar, ou seja, uma matriz
lxl. Neste caso, o escalar é adicionado ou subtraído de todos os elementos do outro operador. Por
exemplo:
y = x - 1
Multiplicação
A multiplicação de matrizes é indicada por "". A multiplicação xy é definida somente se a segunda
dimensão de x for igual à primeira dimensão de y. A multiplicação
x'* y
ans =
É evidente que o resultado da multiplicação y'*x será o mesmo. Existem dois outros produtos que são
transpostos um do outro.
x*y'
Ans =
2 l -l
y*x'
Ans =