CENTRO FEDERAL DE EDUCAO TECNOLGICA DE
MINAS GERAIS
Mestrado em Engenharia Eltrica
THASA RODRIGUES LOBACK DURES
1a LISTA DE EXERCCIOS:
Erros e Sistemas Lineares
Belo Horizonte
07 de abril de 2015
2
1. Introduo
A soluo computacional de um dado problema desenvolvida atravs das
tcnicas de clculo numrico. Para que a aplicao desses tcnicas seja possvel, deve-se
seguir a sequncia de quatro etapas: definio do problema, modelagem matemtica,
soluo numrica e anlise dos resultados.
Ao definir um problema, espera-se chegar a uma determinada soluo atravs da
manipulao matemtica das variveis que influenciem essa soluo. Nessa primeira
etapa, so, ento, identificadas essas variveis e os possveis resultados para a soluo
do problema.
A modelagem matemtica consiste em se obter equaes que relacionem as
variveis conhecidas com os resultados possveis. J a soluo numrica, comea pela
escolha do mtodo numrico mais apropriado para as condies do problema. Passa-se,
ento, para a sua descrio computacional atravs da elaborao de um algoritmo, que,
por sua vez implementado numa das linguagens de programao existentes.
Finalmente, o programa editado em um arquivo e executado pelo computador.
Atravs da anlise dos resultados possvel verificar se houve adequao da
soluo numrica ao problema real, anteriormente definido. Observa-se tambm, nessa
etapa, os possveis erros que a modelagem matemtica e sua implementao pode
incorrer.
Este relatrio tem o objetivo de introduzir alguns mtodos na soluo
computacional de problemas de lgebra linear. Procura-se a implementao de
algoritmos prticos, com baixo custo computacional e com menor infringncia de erros.
Utiliza-se a linguagem de programao C++ para elaborao dos algoritmos e sua
compilao pelo programa DEV C/C++. Para melhor segurana em relao ao uso das
tcnicas apresentadas, comparou-se alguns resultados com os obtidos pelo programa
Matlab.
2. Exerccios Propostos
1) Desenvolva um algoritmo em C para realizar a multiplicao de duas matrizes. No se esqueam de verificar se a multiplicao possvel antes de realiz-la.
Teste os resultados obtidos com aqueles gerados pelo MATLAB. Considerar
preciso simples e preciso estendida. Para comparar os resultados calcule a
norma 2 da matriz resultado. Comente!
2) Desenvolva um algoritmo em C para resolver sistemas lineares triangulares (Superior e Inferior). Teste os resultados obtidos com aqueles gerados pelo
MATLAB. Considerar preciso simples e preciso estendida. Para comparar os
resultados calcule a norma 2 da matriz resultado. Comente!
3) Desenvolva um algoritmo em C para resolver sistemas lineares utilizando eliminao de Gauss com pivoteamento. Como subproduto calcule o
determinante da matriz. Considerar preciso simples e preciso estendida. Para
comparar os resultados calcule a norma 2 da matriz resultado. Comente!
3
4) Apresente uma pesquisa sobre aplicao de sistemas lineares nas seguintes reas: Eletromagnetismo, controle, SEP, modelagem de sistemas. Apresente no
mnimo 4 aplicaes por rea, faa uma breve descrio de cada uma delas
destacando as caractersticas das matrizes e os mtodos utilizados para a soluo
do sistema.
3. Resoluo
1 Exerccio:
A forma geral de representao de um nmero na atimtica de ponto flutuante
tem a seguinte notao cientfica:
onde os s so os dgitos da parte fracionria, tais que
B o valor da base (geralmente 2, 10 ou 16), o nmero de dgitos e um expoente
inteiro. Deste modo, um nmero de ponto flutuante tem trs partes: o sinal, a parte
fracionria (chamada de significando ou mantissa) e o expoente. Essas trs partes tm
um comprimento total fixo que depende do computador e do tipo de nmero: preciso
simples, dupla ou estendida.
A Tabela 1 mostra formato proposto pelo IEEE (Insitute of Electrical and
Electronics Engineers), utilizado pela maioria dos computadores do mundo:
Tabela 1: Formato IEE de ponto flutuante
Propriedade
Preciso
Simples Dupla Estendida
Comprimento total 32 64 80
Bits na mantissa 23 52 64
Bits no expoente 8 11 15
Base 2 2 2
Expoente mximo 127 1023 16383
Expoente mnimo -126 -1022 -16382
Maior nmero Menor nmero Dgitos decimais 7 16 19
Neste primeiro exerccio proposto, o objetivo verificar se possvel a
multiplicao de duas matrizes dadas pelo usurio, realizar a multiplicao dessas
matrizes, tanto na preciso simples, quanto na estendida, calcular a norma-2 da matriz
para os dois casos e comparar os resultados com aqueles obtidos no Matlab.
4
Para que a multiplicao de matrizes seja possvel, basta que o nmero de
colunas da primeira matriz seja igual ao nmero de linhas da segunda matriz. O mtodo
utilizado para o clculo foi com base na relao das posies dos elementos de cada
matriz e suas equaes para a obteno da matriz resultante.
O algoritmo desenvolvido para a multiplicao de matrizes na preciso simples
mostrado a seguir:
#include
#include
#include
int main ()
{
//Variaveis com numeros de linhas e colunas da matriz 1
short int numeroLinhaMatriz1 = 0;
short int numerocolunasMatriz1 = 0;
//Variaveis com numeros de linhas e colunas da matriz 2
short int numeroLinhaMatriz2 = 0;
short int numerocolunasMatriz2 = 0;
//Entrada de dados com os numero de linhas e colunas das matrizes
printf ("****** Primeira Matriz ******\n");
printf ("Entre com o numero de linhas da matriz 1 (maximo 10): ");
scanf ("%hd", &numeroLinhaMatriz1);
printf ("Entre com o numero de colunas da matriz 1 (maximo 10): ");
scanf ("%hd", &numerocolunasMatriz1);
printf ("\n****** Segunda Matriz ******\n");
printf ("Entre com o numero de linhas da matriz 2 (maximo 10): ");
scanf ("%hd", &numeroLinhaMatriz2);
printf ("Entre com o numero de colunas da matriz 2 (maximo 10): ");
scanf ("%hd", &numerocolunasMatriz2);
if (numerocolunasMatriz1 == numeroLinhaMatriz2)
{
//Numero de elementos da matriz resultante
short int numeroElementosMatrizResultante = numeroLinhaMatriz1 * numerocolunasMatriz2;
printf ("\n\nNumero de elementos da matriz resultante: %hd\n", numeroElementosMatrizResultante);
//Alocando a primeira matriz
float matriz1[10][10];
//Alocando a segunda matriz
float matriz2[10][10];
int contLinha, contColuna;
float valor;
//Preenchedo a matriz 1
printf ("\n****** Entre com os valores da primeira matriz ******\n"); for (contLinha=0; contLinha
5
for (contColuna=0; contColuna
6
Coloca-se como observao que tanto o algoritmo anterior, como o que vm a
seguir, declaram matrizes correspondentes a sistemas de ordem mxima igual a 10. Para
sistemas de ordem superiores, basta trocar as declaraes das matrizes para as da ordem
desejada. Alm disso, o algoritmo para o clculo da norma 2 est incluso no algoritmo
acima. A seguir apesenta-se o mesmo algoritmo na preciso estendida (nica diferena
do algoritmo anterior). O cdigo da norma 2, embora tenha sido implementado na
prxima rotina computacional, foi omitido para evitar vs repeties.
contLinha = 0; contColuna = 0;
for(contLinha = 0; contLinha < numeroLinhaMatrizResultante; contLinha++)
{
for(contColuna = 0; contColuna < numerocolunasMatrizResultante; contColuna++)
{
printf ("Linha %d coluna %d: %10f \n", contLinha, contColuna, matrizResultante[contLinha][contColuna]);
}
}
float soma = 0;
float normaMatriz = 0;
for(int w=0;w
7
#include
#include
#include
int main ()
{
//Variaveis com numeros de linhas e colunas da matriz 1
int numeroLinhaMatriz1 = 0;
int numerocolunasMatriz1 = 0;
//Variaveis com numeros de linhas e colunas da matriz 2
int numeroLinhaMatriz2 = 0;
int numerocolunasMatriz2 = 0;
//Entrada de dados com os numero de linhas e colunas das matrizes
printf ("****** Primeira Matriz ******\n");
printf ("Entre com o numero de linhas da matriz 1 (maximo 10): ");
scanf ("%d",&numeroLinhaMatriz1);
printf ("Entre com o numero de colunas da matriz 1 (maximo 10): ");
scanf ("%d", &numerocolunasMatriz1);
printf ("\n****** Segunda Matriz ******\n");
printf ("Entre com o numero de linhas da matriz 2 (maximo 10): ");
scanf ("%d", &numeroLinhaMatriz2);
printf ("Entre com o numero de colunas da matriz 2 (maximo 10): ");
scanf ("%d", &numerocolunasMatriz2);
if (numerocolunasMatriz1 == numeroLinhaMatriz2)
{
//Numero de elementos da matriz resultante
int numeroElementosMatrizResultante = numeroLinhaMatriz1 * numerocolunasMatriz2;
printf ("\n\nNumero de elementos da matriz resultante: %d\n", numeroElementosMatrizResultante);
//Alocando a primeira matriz
long double matriz1[10][10];
//Alocando a segunda matriz
long double matriz2[10][10];
int contLinha, contColuna;
long double valor;
//Preenchedo a matriz 1
printf ("\n****** Entre com os valores da primeira matriz ******\n");
for (contLinha=0; contLinha
8
//Iniciando variaveis contadoras
contLinha = 0;
contColuna = 0;
//Preenchedo a matriz 2
printf ("\n****** Entre com os valores da segunda matriz ******\n");
for (contLinha=0; contLinha
9
2 Exerccio:
O algoritmo elaborado para esse exerccio pede que o usurio escolha se o
sistema ser triangular inferior ou superior. Para o sistema triangular inferior, os
elementos cuja posio da linha tem valor menor que a posio da coluna so
automaticamente preenchidos com zeros e o sistema solucionado pela expresso a
seguir:
cn
c
c
x
x
x
lll
ll
l
nnnnn
....
....
.,.
0
......
00
2
1
2
1
21
2221
11
.,...,2,1,
1
1ni
l
xlc
xij
i
j
jiji
i
Para o sistema triangular superior, ocorre o contrrio, os elementos cuja posio
da linha superior da coluna que so preenchidos com zero. Esse sistema , por sua
vez, solucionado a partir das seguintes equaes:
nnnn
n
n
d
d
d
x
x
x
u
uu
uuu
....
....
00
.,.......
0 2
1
2
1
222
11211
.1,...,1,,1
nniu
xld
xii
n
ij
jiji
i
}
else
{
printf ("\n\n!!!! Erro\n");
printf ("ERRO!!!! No possvel multiplicar:\n Numero de colunas da primeira matriz diferente do numero de linhas da segunda matriz\n\n");
system("pause");
}
return 0;
}
10
A seguir so apresentados os algoritmos desenvolvidos para a resoluo de
sistemas triangulares superior e inferior, respectivamente, na preciso simples e
estendida. Da mesma forma que no exerccio anterior, a rotina para o clculo da norma
2 mostrada apenas no primeiro algoritmo e as matrizes declaradas corespondem a
sistemas de ordem mxima igual a 10. Para sistemas de ordem superiores, basta trocar
as declaraes das matrizes para as da ordem desejada.
4 Exerccio:
figure(2)
subplot(3,2,1);
plot(t1A,p1A);
gridon
xlabel'Tempo (s)';
ylabel'Potncia (W)';
title'Potncia Ativa 1a noite';
subplot(3,2,2);
plot(t1A,q1A);
gridon
xlabel'Tempo (s)';
ylabel'Potncia (VAr)';
title'Potncia Reativa 1a noite';
subplot(3,2,3);
plot(t2A,p2A);
gridon
xlabel'Tempo (s)';
ylabel'Potncia (W)';
title'Potncia Ativa 2a noite';
#include
#include
#include
int main ()
{
int ordemDoSistema = 0;
char seSuperiorOuInferior;
//Ordem do sistema
printf ("Digite a ordem do sistema (maximo 10): ");
scanf ("%d", &ordemDoSistema);
//Verifica se o sistema e triangular superior ou inferior
printf ("\n\nO Sistema e triangular superior ou inferior?\n (Digite S para superior ou I para inferior): ");
scanf(" %c", &seSuperiorOuInferior);
//Entra com a matriz dos termos independentes printf ("\n\n Entre com a matriz dos termos independentes\n");
float matrizTermosIndependentes[10];
float coeficiente;
for (int a = 0; a < ordemDoSistema; a++)
{
coeficiente = 0;
printf ("Termo %d: ", a);
scanf ("%f", &coeficiente);
matrizTermosIndependentes[a] = coeficiente;
}
int contLinha, contColuna;
//Alocando a matriz
float matriz[10][10];
float valor;
//Preenchedo a matriz dos coeficientes
printf ("\n****** Entre com os valores da matriz dos coeficientes******\n");
for (contLinha=0; contLinha
11
valor = 0;
printf ("Linha %d coluna %d: ", contLinha, contColuna);
scanf ("%f", &valor);
matriz[contLinha][contColuna] = valor;
}
}
else
{
if(seSuperiorOuInferior == 'S' || seSuperiorOuInferior == 's')
{
if(contLinha
12
Para a preciso estendida, tem-se:
else
{
if(seSuperiorOuInferior == 'I' || seSuperiorOuInferior == 'i')
{
for (int w = 0; w < ordemDoSistema; w++)
{
numerador = 0;
denominador = 0;
numerador = matrizTermosIndependentes[w];
for(int j = 0; j < count; j++)
{
numerador -= matriz[w][w - j -1] * matrizResultado[w - j - 1];
}
denominador = matriz[w][w];
matrizResultado[w] = numerador / denominador;
count = count + 1;
}
}
}
//Imprime matriz resultado
printf ("\n******Resultado******\n");
for (int k=0; k < ordemDoSistema; k++)
{
printf ("%f\n", matrizResultado[k]);
}
// Clculo da norma 2
float adiciona = 0;
float normaMatriz = 0;
for(int w=0;w
13
//Entra com a matriz dos termos independentes
printf ("\n\n Entre com a matriz dos termos independentes\n");
float matrizTermosIndependentes[10];
float coeficiente;
for (int a = 0; a < ordemDoSistema; a++)
{
coeficiente = 0;
printf ("Termo %d: ", a);
scanf ("%f", &coeficiente);
matrizTermosIndependentes[a] = coeficiente;
}
int contLinha, contColuna;
//Alocando a matriz
float matriz[10][10];
float valor;
//Preenchedo a matriz dos coeficientes
printf ("\n****** Entre com os valores da matriz dos coeficientes******\n");
for (contLinha=0; contLinha
14
scanf ("%f", &valor);
matriz[contLinha][contColuna] = valor;
}
}
else
{
printf("ERRO!!! ESSE SISTEMA NO TRIANGULAR");
}
}
}
}
float matrizResultado[10];
float numerador;
float denominador;
int count = 0;
//Se for superior
if(seSuperiorOuInferior == 'S' || seSuperiorOuInferior == 's')
{
for (int i = ordemDoSistema-1; i >= 0; i--)
{
numerador = 0;
denominador = 0;
numerador = matrizTermosIndependentes[i];
for(int j = 0; j < count; j++)
{
numerador -= matriz[i][i+j+1] * matrizResultado[i +j+ 1];
}
denominador = matriz[i][i];
matrizResultado[i] = numerador / denominador;
count = count + 1;
}
}
else
{
if(seSuperiorOuInferior == 'I' || seSuperiorOuInferior == 'i')
{
for (int w = 0; w < ordemDoSistema; w++)
{
numerador = 0;
denominador = 0;
numerador = matrizTermosIndependentes[w];
for(int j = 0; j < count; j++)
{
numerador -= matriz[w][w - j -1] * matrizResultado[w - j - 1];
15
3 Exerccio:
.O mtodo da eliminao de Gauss consiste em transformar o sistema linear
original num outro sistema linear equivalente com matriz dos coeficientes triangular
superior, pois estes so de resoluo imediata. Dizemos que dois sistemas lineares so
equivalentes quando possuem a mesma soluo. O determinante de sistemas lineares
equivalentes so iguais.
Com (n 1) passos o sistema linear Ax = B transformado num sistema
triangular equivalente: Ux= C, o qual se resolve facilmente por substituies.
Obtm-se a soluo de Ax= B em trs etapas:
1 etapa: Matriz Completa
Consiste em escrever a matriz completa ou aumentada do sistema linear original.
for(int j = 0; j < count; j++)
{
numerador -= matriz[w][w - j -1] * matrizResultado[w - j - 1];
}
denominador = matriz[w][w];
matrizResultado[w] = numerador / denominador;
count = count + 1;
}
}
}
//Imprime matriz resultado
printf ("\n******Resultado******\n");
for (int k=0; k < ordemDoSistema; k++)
{
printf ("%f\n", matrizResultado[k]);
}
float soma = 0;
float normaMatriz = 0;
for(int z = 0;z
16
2 etapa: Triangulao
Consiste em transformar a matriz A numa matriz triangular superior, mediante uma
seqncia de operaes elementares nas linhas da matriz.
3 etapa: Retro-substituio
Consiste no clculo dos componentes x1, x2, ..., xn, soluo de Ax= B, a partir da
soluo do ltimo componente (xn), e ento o substitui regressivamente nas equaes
anteriores.
Teorema: Seja Ax = B um sistema linear. Aplicando sobre as equaes deste sistema
uma seqncia de operaes elementares escolhidas entre:
i) Trocar a ordem de duas equaes do sistema;
ii) Multiplicar uma equao do sistema por uma constante no nula;
iii) Adicionar um mltiplo de uma equao a uma outra equao;
obtemos um novo sistema Ux= C e os sistemas Ax= B e Ux= C so equivalentes.
O algoritmo para o mtodo de eliminao de Gauss requer o clculo dos
multiplicadores:
a cada etapa do processo. Sendo o coeficiente chamado de piv.
Se o piv for nulo ou se o piv estiver prximo de zero uma ateno especial de
ve ser tomada, pois impossvel trabalhar com um piv nulo. E trabalhar com um piv
prximo de zero pode resultarem resultados totalmente imprecisos. Isto porque em
qualquer calculadora ou computador os clculos so efetuados com preciso finita, e
pivs prximos de zero so origem a multiplicadores bem maiores que a unidade que,
por sua vez, origina uma ampliaodos erros de arredondamento.
Para se contornar esses problemas deve-se adotar uma estratgia de
pivoteamento, ou seja, adotar um processo de escolha da linha e/ou coluna pivotal.
Esta estratgia consiste em:
i) no incio da etapa k da fase de escalonamento, escolher para piv o elemento de maior
mdulo entre os coeficientes: .
ii) trocar as linhas k e se for necessrio.
A seguir so apresentados os algoritmos desenvolvidos para a resoluo de
sistemas lineares pelo mtodo de Gauss com pivotamento, na preciso simples e
estendida respectivamente. Para a resoluo do sistema triangular superior resultante,
17
utilizou-se os algoritmos j implementados no exerccio anterior e obteve-se a norma 2,
cuja rotina j foi evidenciada nos exerccios anteriores, para os dois tipos de preciso.
#include
#include
#include
int main ()
{
//Variaveis com numeros de linhas e colunas da matriz
unsigned int ordem;
//Escolha da ordem do sistema
printf ("****** Ordem do Sistema ******\n");
printf ("Entre com a ordem do sistema (maximo 10): ");
scanf ("%d", &ordem);
//Alocando as matrizes dos coeficientes e dos termos independentes
float mcoeficientes[10][10];
float mindependentes[10];
char S;
unsigned int x, y;
float valor;
//Preenchedo as matrizes do sistema
printf ("\n****** Entre com os valores da matriz dos coeficientes ******\n");
for (x=0; x
18
for (x=0; x
19
{
novaordem = novaordem - 1;
}
}
printf("\n\n************* MATRIZ TRIANGULAR SUPERIOR ******************\n");
for (x=0; x
20
RESULTADOS 1 Exerccio:
O algoritmo rodado em Dev C++, com preciso simples, apresentou o seguinte
resultado:
****** Primeira Matriz ******
Entre com o numero de linhas da matriz 1: 5
Entre com o numero de colunas da matriz 1: 2
****** Segunda Matriz ******
Entre com o numero de linhas da matriz 2: 2
Entre com o numero de colunas da matriz 2: 7
Numero de elementos da matriz resultante e igual a: 35
****** Entre com os valores da primeira matriz ******
Linha 0 coluna 0: 3.145
Linha 0 coluna 1: 0.234
Linha 1 coluna 0: 0.002
Linha 1 coluna 1: 10.42
Linha 2 coluna 0: 8.44
Linha 2 coluna 1: 0.03
Linha 3 coluna 0: 6.12
Linha 3 coluna 1: 0.15
Linha 4 coluna 0: 0.014
Linha 4 coluna 1: 12
****** Entre com os valores da segunda matriz ******
Linha 0 coluna 0: 2.35
Linha 0 coluna 1: 6.36
Linha 0 coluna 2: 0.179
Linha 0 coluna 3: 0.098
Linha 0 coluna 4: 0.432
Linha 0 coluna 5: 9.32
Linha 0 coluna 6: 7.77
Linha 1 coluna 0: 4.32
Linha 1 coluna 1: 8.43
Linha 1 coluna 2: 0.086
Linha 1 coluna 3: 3.75
21
Linha 1 coluna 4: 0.734
Linha 1 coluna 5: 8.95
Linha 1 coluna 6: 7.33
****** Resultado da multiplicacao das matrizes ******
Linha 0 coluna 0: 8.401629
Linha 0 coluna 1: 21.974821
Linha 0 coluna 2: 0.583079
Linha 0 coluna 3: 1.185710
Linha 0 coluna 4: 1.530396
Linha 0 coluna 5: 31.405699
Linha 0 coluna 6: 26.151869
Linha 1 coluna 0: 45.019104
Linha 1 coluna 1: 87.853325
Linha 1 coluna 2: 0.896478
Linha 1 coluna 3: 39.075195
Linha 1 coluna 4: 7.649144
Linha 1 coluna 5: 93.277641
Linha 1 coluna 6: 76.394142
Linha 2 coluna 0: 19.963598
Linha 2 coluna 1: 53.931297
Linha 2 coluna 2: 1.513340
Linha 2 coluna 3: 0.939620
Linha 2 coluna 4: 3.668100
Linha 2 coluna 5: 78.929298
Linha 2 coluna 6: 65.798698
Linha 3 coluna 0: 15.029999
Linha 3 coluna 1: 40.187698
Linha 3 coluna 2: 1.108380
Linha 3 coluna 3: 1.162260
Linha 3 coluna 4: 2.753940
Linha 3 coluna 5: 58.380898
Linha 3 coluna 6: 48.651897
Linha 4 coluna 0: 51.872902
Linha 4 coluna 1: 101.249046
22
Pelo Matlab obtem-se os seguintes resultados para o resultado da multiplicao e
sua norma:
No houve diferenas significativas da preciso simples para a dupla. Observou-
se que com uma maior preciso, o comprimento da matriz fica levemente inferior.
A =
3.1450 0.2340
0.0020 10.4200
8.4400 0.0300
6.1200 0.1500
0.0140 12.0000
B =
2.3500 6.3600 0.1790 0.0980 0.4320 9.3200 7.7700
4.3200 8.4300 0.0860 3.7500 0.7340 8.9500 7.3300
Resultado =
8.4016 21.9748 0.5831 1.1857 1.5304 31.4057 26.1519
45.0191 87.8533 0.8965 39.0752 7.6491 93.2776 76.3941
19.9636 53.9313 1.5133 0.9396 3.6681 78.9293 65.7987
15.0300 40.1877 1.1084 1.1623 2.7539 58.3809 48.6519
51.8729 101.2490 1.0345 45.0014 8.8140 107.5305 88.0688
norma =
287.1871
>>
Linha 4 coluna 2: 1.034506
Linha 4 coluna 3: 45.001373
Linha 4 coluna 4: 8.814049
Linha 4 coluna 5: 107.530479
Linha 4 coluna 6: 88.068779
A norma da Matriz : 289.776093
Pressione qualquer tecla para continuar. . .
23
2 Exerccio:
O algoritmo rodado em Dev C++, com preciso simples, apresentou o seguinte
resultado para um sistema triangular superior:
A mesma implementao feita em Matlab (preciso double):
Digite a ordem do sistema (maximo 10): 3
O Sistema e triangular superior ou inferior?
(Digite S para superior ou I para inferior): S
Entre com a matriz dos termos independentes
Termo 0: 1.4142135
Termo 1: 3.1415926
Termo 2: 1.7320508
****** Entre com os valores da matriz dos coeficientes******
Linha 0 coluna 0: 3.1415926
Linha 0 coluna 1: 2.7182818
Linha 0 coluna 2: 1.4142135
Linha 1 coluna 1: 1.4142135
Linha 1 coluna 2: 1.7320508
Linha 2 coluna 2: 2.7182818
******Resultado******
-1.083555
1.441051
0.637186
Norma da Matriz: 1.9112257
Press any key to continue . . .
>> A
A =
3.1416 2.7183 1.4142
0 1.4142 1.7321
0 0 2.7183
24
Para esse exemplo, observa-se que a preciso simples obtem praticamente os
mesmos valores que a preciso double. O resultado para um sistema triangular inferior
com preciso simples apresentado a seguir:
Digite a ordem do sistema (maximo 10): 3
O Sistema e triangular superior ou inferior?
(Digite S para superior ou I para inferior): I
Entre com a matriz dos termos independentes
Termo 0: 1.4142135
Termo 1: 3.1415826
Termo 2: 1.7320508
****** Entre com os valores da matriz dos coeficientes******
Linha 0 coluna 0: 3.1415926
Linha 1 coluna 0: 2.7182818
Linha 1 coluna 1: 1.4142135
Linha 2 coluna 0: 1.4142135
Linha 2 coluna 1: 1.7320508
Linha 2 coluna 2: 2.7182818
******Resultado******
0.450158
1.356178
-0.461151
Norma da Matriz: 1.501507
Press any key to continue . . .
>> B
B =
1.4142
3.1416
1.7321
>> c=inv(A)*B
c =
-1.0836
1.4411
0.6372
>> norm(c)
ans =
1.9123
25
A implementao do mesmo sistema triangular inferior, feita em Matlab
(preciso double):
Mais uma vez os resultados da preciso simples e dupla foram os mesmos.
3 Exerccio:
O mtodo de Gauss com pivoteamento foi rodado e apresentou os seguintes
resultados para preciso simples:
A=[3.1415926 0 0; 2.7182818 1.4142135 0; 1.4142135 1.7320508 2.7182818]
A =
3.1416 0 0
2.7183 1.4142 0
1.4142 1.7321 2.7183
>> B=[1.4142135; 3.1415826;1.7320508]
B =
1.4142
3.1416
1.7321
>> C=inv(A)*B
C =
0.4502
1.3562
-0.4612
>> norma=norm(C)
norma =
1.5015
****** Ordem do Sistema ******
Entre com a ordem do sistema (maximo 10): 3
****** Entre com os valores da matriz dos coeficientes ******
Linha 0 coluna 0: 1
Linha 0 coluna 1: -3
Linha 0 coluna 2: 2
Linha 1 coluna 0: -2
Linha 1 coluna 1: 8
Linha 1 coluna 2: -1
Linha 2 coluna 0: 4
Linha 2 coluna 1: -6
Linha 2 coluna 2: 5
26
****** Entre com os valores da matriz dos termos independentes ******
Coluna 0: 11
Coluna 1: -15
Coluna 2: 29
multiplicador 00: -0.250000
multiplicador 10: 0.500000
multiplicador 01: 0.300000
************* MATRIZ TRIANGULAR SUPERIOR ******************
Linha 0 coluna 0: 4.000000
Linha 0 coluna 1: -6.000000
Linha 0 coluna 2: 5.000000
Linha 1 coluna 0: 0.000000
Linha 1 coluna 1: 5.000000
Linha 1 coluna 2: 1.500000
Linha 2 coluna 0: 0.000000
Linha 2 coluna 1: 0.000000
Linha 2 coluna 2: 1.200000
************* MATRIZ DOS TERMOS INDEPENDENTES ****************
Termo 0: 29.000000
Termo 1: -0.500000
Termo 2: 3.600000
******************* VALOR DO DETERMINANTE *************************
Valor do determinante: -24.000000
Press any key to continue . . .
Digite a ordem do sistema (maximo 10): 3
O Sistema e triangular superior ou inferior?
(Digite S para superior ou I para inferior): S
Entre com a matriz dos termos independentes
Termo 0: 29
Termo 1: -0.5
Termo 2: 3.6
****** Entre com os valores da matriz dos coeficientes******
Linha 0 coluna 0: 4
Linha 0 coluna 1: -6
27
4 Exerccio: Pesquisa sobre aplicao de sistemas lineares nas reas de
Eletromagnetismo, SEP, controle e modelagem de sistemas
4.1. Eletromagnetismo
Mtodo das Diferenas Finitas
O Mtodo das Diferenas Finitas apresenta solues diretas para campos
eltricos e magnticos nos pontos de uma malha regular formada pela discretizao de
uma superfcie ou volume de um objeto. Para tanto, divide-se o domnio de clculo em
diversos pontos calcula-se o campo eltrico correspondente a cada ponto a partir dos
valores de pontos adjacentes.
Essa tcnica numrica possibilita resolver situes que abrangem equaes
diferenciais parciais (EDPs), que so equaes envolvendo uma funo de variveis
independentes e suas derivadas. Assim, essa viabilidade permite resolver equaces
como as de Poisson e as de Laplace, delimitando-se um domnio por condies de
contorno e/ou condies iniciais.
Para se determinar o campo eltrico ou potencial eltrico, em muitos casos, so
utilizados a Lei de Coulomb, ou a Lei de Gauss quando a distribuio de cargas
conhecida, ou utilizar a equao que relacion intensidade do campo eltrico direo
contrria do divergente do potencial, quando esse conhecido em uma regio. No
entanto, na maioria das situaes prticas, tais parmetros no so conhecidos.
Ento para essas situaes, onde so apenas conhecidas as condies
eletrostticas em algumas fronteiras numa determinada regio, em que se deseja obter o
campo eltrico e o potencial eltrico ao longo de toda a regio em questo, so
Linha 0 coluna 2: 5
Linha 1 coluna 1: 5
Linha 1 coluna 2: 1.5
Linha 2 coluna 2: 1.2
******Resultado******
2.000000
-1.000000
3.000000
Norma da Matriz: 3.741657
Press any key to continue . . .
28
utilizados usualmente a Equao de Poisson ou a de Laplace ou, ainda, o metodo das
imagens.
A idia bsica discretizar as equaes de Maxwell no espao e no tempo,
obtendo-se os campos a partir da resoluo contnua das mesmas, com base nos valores
dos campos adquiridos em iteraes anteriores de maneira alternada.
O sistema de equaes vetoriais de Maxwell mostrado a seguir:
O sistema de coordenadas cartesianas utilizado para expandir o sistema em seis
equaes a derivadas espaciais e temporais:
(
)
(
)
(
)
(
)
(
)
(
)
As tcnicas de diferenas finitas no domnio do tempo (FDTD) so baseadas em
aproximaes numricas, permitindo transformar equaes diferenciais em equaes
por diferenas finitas. A obteno destas equaes efetuada a partir da expanso em
sries de Taylor. Na prtica, a srie truncada, o que implica na insero de um erro de
aproximao.
Considera-se, por exemplo, uma funo qualquer dentro de um espao
cartesiano discretizado , discretizada tambm no tempo :
29
Onde: so incrementos espaciais; o incremento temporal; e , o
nmero da iterao. Pode-se utilizar a aproximao mostrada abaixo, que demonstrada
na figura 4.1.
( ) (
)
Figura 4. 1: Aproximao por diferenas finitas.
Fonte: Silveira, Jony L., UFSC, 2002
Tm-se, portanto:
* (
) (
)+
* (
) (
)+
* (
) (
)+
Onde: o erro introduzido por truncagem.
E para o tempo:
*
+
Para aplicar as equaes 4.5 e 4.6 tem-se que discretizar a regio com elementos
regulares. O sistema de coordenadas pode ser cartesiano ou polar, e os elementos
quadrados, retangulares ou hexagonais. A figura 4.2 ilustra a clula introduzida por Yee
para discretizao tridimensional.
30
Figura 4. 2: Disposio dos campos E e H na clula de Yee. Fonte: Silveira, Jony L., UFSC, 2002
importante observar que alm de estarem defasados no espao as componentes
sw campo eltrico e magntico sero, por fora da equao 4.6, calculadas em passos de
temmpo alternados. Assim, o campo magntico ser calculado a cada ( ) ,
enquanto o campo eltrico calculado a cada .
Para a resoluo de uma equao de Laplace ou de Poisson, deve-se dividir o
domnio em uma grade de maneira similar ao cubo de Yee. Os ns da grade da
extremidade da regio so prefixados pela condio de contorno e so chamados de ns
fixos,enquanto os ns internos sao denominados de pontos livres. Em seguida, obtm-se
as aproximaes por diferencas finitas para equacao diferencial de Poisson, pela qual
possvel determinar o potencial o potencial em todos os pontos livres.
Abaixo, mostra-se a aplicao das equaes 4.5 e 4.6 na clula de Yee para a
compontente do campo magntico (Eq. 4.7) e eltrico (Eq. 4.8). Encontra-se as
demais componentes de forma anloga, pela mesma aplicao da aproximao por
diferenas finitas s outras equaes 4.2.
(
)
(
)
*
(
)
(
)
(
)+
31
(
)
(
)
[
(
)
(
)
(
)
(
) ]
O mtodo de diferenas finitas permite realizar clculos em geometrias
complexas e materiais com configuraes no homogneas lineares e no lineares. No
entanto, existem alguns inconvenientes ligados a esta tcnica:
Para garantir a estabilidade do mtodo devemos garantir que:
,
onde: a mxima velocidade de fase;
As condies de fronteira devem ser usadas convenientemente para simular a
extenso da soluo no infinito.
Existem, porm,vrias tcnicas aplicveis s fronteiras de modo a simular o
espao aberto. O mtodo das diferenas finitas um mtodo de resoluo de problemas
que englobam equaes diferenciais parciais. Tais problemas so definidos
univocamente por trs caractersticas: seja por uma equao diferencial parcial, como
o caso das equaes de Laplace ou de Poisson; seja pela delimitao de um domnio; ou
at mesmo por condies de contorno e/ou por condies iniciais.
O mtodo de diferenas finitas um dos mais populares na anlise de problemas
no domnio do tempo. Dentre as vrias aplicaes do mtodo, em engenharia eltrica,
destacam-se:
Obteno das caractersticas de espalhadores (scattering);
Anlise de antenas e microstrips;
Avaliao dos efeitos da radiao de microondas em organismos vivos;
Anlise de problemas de interferncia eletromagntica (EMI);
Anlise de propagao em cavidades ressonantes, guias de onda;
Anlise da propagao eletromagntica em fibras opticas, etc.
Como aplicao do mtodo descreve-se apenas a obteno das caracterstias de
espalhadores. O fenmeno de espalhamento eletromagntico pode ser entendido como o
campo gerado a partir da interao entre uma onda eletromagntica viajante e um
obstculo que a intercepta. Caracteriza-se pela influncia dos campos eltrico e
magntico incidentes (Ei ,Hi ) em um corpo, designado objeto espalhador ou,
simplesmente,e spalhador, nele induzindo correntes em sua superfcie ou volume. As
correntes no espalhador variam no tempo e o faz, por sua vez, exercer o papel de uma
antena que irradia campos eletromagnticos espalhados (Es ,Hs ) . Dessa forma, o
32
campoeletromagntico total (Et ,Ht ) se torna uma composio de campos espalhados e
campos incidentes, conforme mostrado a seguir:
A equao 4.9 mostra que o campo eltrico total dado pela soma do campo
eltrico incidente com o campo eltrico espalhado. Da mesma forma, por meio da
equao 4.10, tem-se que o campo magntico total a soma dos campos magnticos
incidente e espalhado.
Em uma situao em que o espao destitudo de corpos, tem-se que toda
medida de campo realizada, em qualquer que seja o ponto desse espao, indica um valor
de campo igual ao campo original produzido pela antena. Entretanto, em situaes em
que um espalhador esteja presente, o objeto iluminado pelos campos eletromagnticos
incidentes e h interao entre estes campos e os campos espalhados, caracterizando
assim, o fenmeno do espalhamento eletromagntico. Assim, tem-se que duas entidades
distintas esto envolvidas neste fenmeno: os campos eletromagnticos e o espalhador.
Considerando-se uma regio fonte de campo eletromagntico e outra onde se
situa um objeto espalhador, o fenmeno de espalhamento ocorre nessa segunda regio.
As influncias dos campos incidentes sobre o espalhador so computadas por meio de
expresses analticas para os campos incidentes originais. Dessa maneira, para o clculo
do campo eletromagntico total, necessrio somente encontrar a parcela do campo
espalhado. Tem-se, tambm, que as ondas eletromagnticas geradas pela fonte
propagam-se pelo espao livre 0 e que a geometria do
espalhador e seu material podem ser considerados arbitrrios.
O espalhamento eletromagntico pode ser modelado matematicamente atravs
das
equaes de campo eletromagntico e das condies de contornos inerentes ao
problema tratado. As equaes de campo, eltrico e magntico, so obtidas atravs das
equaes de Maxwell, conforme demonstrado na explicao do Mtodo das Diferenas
Finitas.
Mtodo Sem Malhas
Diferentemente dos mtodos baseados em malhas, os mtodos sem malha so
caracterizados pelo uso de um conjunto de ns espalhados pelo domnio do problema,
ao invs de uma malha ou grid. Um dos gargalos computacionais desses mtodos o
processamento dos ns, cujo tempo muito grande quando comparado, por exemplo,
com o Mtodo de Elementos Finitos (FEM). Apesar disso, o processamento de cada n
pode ser feito de maneira independente, tornando o processo facilmente paralelizvel. .
Cada n contribui com uma linha do sistema, no interferindo na contribuio dos
demais ns.
33
Embora existam vrios tipos de mtodos sem malha, discute-se aqui em maiores
detalhes o MLPG (Meshless Local Petrov Galerkin method) para a resoluo de
problemas eletromagnticos, principalmente problemas estticos (eletrostticos e
magnetostticos). Esse mtodo foi escolhido por ser um mtodo bastante flexvel e por
ser considerado um mtodo verdadeiramente sem malha.
O conjunto de equaes simplificadas para os casos eletrosttico e
magnetosttico combinadas com as condies de contorno so denominados forma forte
para os problemas eletrostticos e magnetostticos.
Como no existe uma malha para dar conectividade aos ns, um desafio para
esse mtodo determinar com eficincia quais ns pertencem vizinhana de um
determinado n. Para resolver esse problema, utiliza-se uma rvore de busca
denominada kd-tree. Outra dificuldade dos mtodos sem malha est na imposio das
condies de contorno de Dirichlet quando as funes de forma no apresentam a
propriedade do delta de Kronecker, o que o caso para funes de forma construdas a
partir do mtodo de mnimos quadrados mveis (MLS).
No FEM, o processo de gerao da malha pode ser extremamente custoso e no
apresenta a facilidade de ser paralelizado. Alm disso, mtodos com malha nem sempre
so apropriados para quaisquer tipos de problemas, como aqueles em que a
configurao espacial muda com o tempo (e.g. fluidos) ou problemas em que a presena
de elementos degenerados so comuns.
Apesar do grande avano de mtodos tradicionais baseados em malha, existem
casos em que se justifica a utilizao de mtodos sem malha e a paralelizao de tais
mtodos os torna mais competitivos.
O MLPG se difere de outros mtodos sem malha baseados no mtodo de
Galerkin, pois a abordagem Petrov-Galerkin permite que as funes de teste e de forma
sejam diferentes. Esse procedimento torna possvel a soluo do problema global
atravs de integraes de vrios subdomnios locais, ao invs de se resolver uma nica
integrao sobre todo o domnio, como acontece no EFG (Element Free Galerkin). Cada
subdomnio pode ter qualquer tamanho ou forma geomtrica e o conjunto de
subdomnios deve cobrir completamente o domnio global.
Nos mtodos sem malha, a funo de aproximao pode ser definida usando
diferentes abordagens, como o mtodo de Mnimos Quadrados Mveis (MLS),
Reproducing Kernel Particle Method (RKPM), Funes de Base Radial (RBF),
aproximaes polinomiais, entre outras.
A abordagem Petrov-Galerkin, utilizada no MLPG, permite que as funes de
teste e de peso sejam diferentes. Para ilustrar o conceito do MLPG, considere um
domnio arbitrrio descrito por um conjunto de nos dispostos em seu interior e ao
longo de seu contorno . Considera-se como vlida em a seguinte forma fraca:
34
( ) ( )
onde o valor da funo ao longo do contorno , a funo de peso,
um parmetro utilizado pelo mtodo das penalidades para forar o valor de ser igual
ao valor conhecido em um contorno com condies de Dirichlet. O valor da funo
em um n k definido por:
Onde a funo de forma do n e o nmero de ns da vizinhana do n
k que so usadas para calcular a aproximao.
O suporte compacto da funo de peso W define um subdomnio fechado ao
redor de cada n, como ilustrado na figura a seguir:
Figura 4. 2: Representao do domnio.
Fonte: Fonseca, Alexandre R. et al., UFMG, 2008
Conseqentemente, a equao inicial pode ser resolvida localmente em cada
subdomnio , pela seguinte expresso:
( ) ( )
Nos metodos sem malha, a funo de aproximao (2) pode ser definida usando
diferentes abordagens, como o mtodo de Minimos Quadrados Moveis (MLS),
Reproducing Kernel Particle Method (RKPM), Funcoes de Base Radial (RBF),
aproximaes polinomiais, entre outras.
Algumas possveis funes que podem ser usadas para definir W, como a funo
degrau de Heaviside ou a funo de peso MLS. Assume-se que W definido pela
funo de Heaviside, i.e. W = 1, o que leva a:
( ) ( )
35
A funo de Heaviside permite a simplificao da funo da forma fraca local,
eliminando a necessidade de integraes no interior dos subdomnios, o que simplifica o
mtodo e diminui o custo computacional. Substituindo (2) em (4), aplicando o teorema
da divergncia e uma identidade vetorial, obtem-se o sistema linear Kx = f, onde x o
vetor de incognitas, e as matrizes Ke f so dadas por:
Resolvendo o sistema, obtm-se os valores de V em qualquer ponto dentro do
domnio atravs de (2).
4.2. SEP
Anlise de Redes Eltricas
Os sistemas eltricos de potncia nos tempos atuais so, na maioria das vezes,
sistemas complexos, formados a partir de sistemas regionais de mdio porte,
interligados uns aos outros, resultando numa grande rede eltrica, que pode conter
milhares de barras trifsicas e equipamentos, tais como geradores sncronos,
transformadores, autotransformadores, linhas de transmisso e cargas.
Para tratar esses equipamentos de uma forma interligada e dirigida para sistema
ser de grande porte, eles devem ser representados por seus modelos de circuito, no
domnio das fases ou das componentes simtricas, resultando em matrizes de
impedncia ou admitncia primitivas. A interligao destes equipamentos de maneira a
formar a rede eltrica tratada atravs de matrizes de incidncia, que descrevem como
cada um dos elementos est disposto na rede eltrica, dando total informao sobre a
sua topologia. Elas so essenciais para, entre outras funes, se determinar as
formulaes nodal e de lao de redes eltricas.
36
Na formulao nodal, existe a matriz de incidncia elemento-n , que uma
matriz de linhas e colunas que descreve como os elementos esto ligados aos ns
de um grafo orientado. Seus elementos so tais que:
{
J na formulao de lao, existe a matriz de incidncia elemento-lao , que
uma matriz cujo nmero de linhas o nmero de malhas possvesi de se obter em um
determinado grafo. Esta matriz possui colunas e descreve como os elementos de um
grafo esto dispostos numa determinada malha ou lao . Assim, seus elementos so
tais que:
{
As relaes tenso-corrente ou equaes primitivas dos elementos de
circuito podem ser apresentadas no formato de impedncia como:
em que a diferena de potencial entre os terminais da linha,
representa a soma das tenses das fontes existentes na linha, a corrente da
linha e a matriz de impedncias primitiva, que descreve os parmetros da
linha. As formulaes para a resoluo do sistema linear matricial so mostradas
a seguir:
[ ]
Na forma de admitncia, as relaes tenso-corrente so:
37
Que, ao invs da somas das tenses das fontes, so somadas as correntes
das fontes e os parmetros da linha so representados pela matriz admitncia .
As formulaes para a resoluo do sistema linear matricial so mostradas a
seguir:
[ ]
4. Concluses
Esse trabalho propiciou o amadurecimento das tcnicas de mtodos numricos
para sistemas lineares, bem como da programao na linguagem C++. Avaliou-se os
erro susceptveis, diferentes tipos de a preciso e verificou-se um alto custo
computacional dessa linguagem para precises maiores.
5. Referncias Bibliogrficas
CORREA, Sonia M. B. B. (2003). Probabilidade e Estatstica. Segunda
Edio. Belo Horizonte MG. Puc Minas Virtual. 116p.
BOLDRINI, C. (1986). lgebra Linear. 3 ed. Editora Harbra.
PEREIRA, Clever (2012). Redes Eltricas no domnio da frequncia. UFMG.
Belo Horizonte, MG.
SILVEIRA, Jony Laureano (2002). Modelagem numrica 3D de problemas de compatibilidade eletromagntica utilizando o mtodo TLM-TD. Tese de
doutorado. UFSC. Florianpolis, SC.
YEE K. S. Numerical solution of initial Boundary Value Problems involving Maxwells Equations in Isotropic Media. IEEE Trans. on Antennas and Propagation, New York, v. 14, n. 3, p. 302-307, May 1966.
AZEVEDO, Rayann P. de Alencar; ARAJO, Icaro B. de Queiroz; SANTOS, Eliel P. dos; FONSECA SILVA, Paulo H. da. Aplicao do mtodo das
diferenas finitas para soluo das equaes de Laplace e Poisson para
38
linhas de microfitas acopladas. Instituto Federal de Educacao, Cincia e
Tecnologia da Paraiba. Joo Pessoa, PB.
FONSECA, Alexandre Ramos ; MENDES, Miguel Lima ; MESQUITA, Renato Cardoso ; SILVA, Elson Jos da . Programao Paralela em Mtodos sem
Malha Aplicados a Problemas Eletromagnticos. In: MOMAG 2008 - 13
Simpsio Brasileiro de Microondas e Optoeletrnica - 8 Congresso Brasileiro de
Eletromagnetismo, 2008, Florianpolis. Anais do MOMAG 2008 - 13 Simpsio
Brasileiro de Microondas e Optoeletrnica - 8 Congresso Brasileiro de
Eletromagnetismo., 2008. p. 632-635.
FONSECA, Alexandre Ramos. Algoritmos eficientes em Mtodos sem Malha. Tese de doutorado. UFMG. Belo Horizonte, MG.
Top Related