Você está na página 1de 6

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/228760637

UMA FERRAMENTA PARA A ANÁLISE DE CIRCUITOS ELÉTRICOS

Conference Paper · January 2003

CITATIONS READS
0 1,028

5 authors, including:

Pablo Souza Grigoletti Graçaliz Pereira Dimuro


Serviço Federal de Processamento de Dados Universidade Federal do Rio Grande (FURG)
9 PUBLICATIONS   9 CITATIONS    237 PUBLICATIONS   1,335 CITATIONS   

SEE PROFILE SEE PROFILE

Renata Hax Sander Reiser


Universidade Federal de Pelotas
178 PUBLICATIONS   864 CITATIONS   

SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Interval Mathematics and Wavelets View project

Pre-aggregation functions View project

All content following this page was uploaded by Renata Hax Sander Reiser on 17 May 2014.

The user has requested enhancement of the downloaded file.


UMA FERRAMENTA PARA A ANÁLISE DE CIRCUITOS ELÉTRICOS

José Ubirajara N. de Nunes1, Pablo S. Grigoletti2,


Graçaliz P. Dimuro, Luciano V. Barboza, Renata H. S. Reiser
Universidade Católica de Pelotas - UCPel
Rua Félix da Cunha, 412 - CEP 96010-000 - Pelotas / RS
{junnunez,pablogri,liz,lvb,reiser}@ucpel.tche.br

1. INTRODUÇÃO
Resumo. O projeto tem como objetivo
desenvolver um software para a análise de Um dos grandes problemas enfrentados
circuitos elétricos. Este programa servirá à pelos alunos do curso de Engenharia Elétrica é
concepção de software livre, sendo que o alto custo dos softwares utilizados. É
Python foi a linguagem escolhida para sua importante salientar também que existem
implementação. Foi desenvolvido um módulo poucos programas de qualidade baseados na
para a resolução de sistemas de equações filosofia de software livre, desenvolvidos para
lineares algébricas (SELA's). Este módulo foi a área de análise de circuitos elétricos.
implementado utilizando o método da Outros problemas enfrentados na área de
decomposição LU por possuir maior robustez computação numérica são os erros gerados
numérica minimizando, por exemplo, os erros pela incerteza dos dados de entrada, bem
de arredondamento ocasionados pelas como, erros oriundos de arredondamentos e
divisões por números muito pequenos. truncamentos. São esses processos que causam
Implementou-se também um módulo para a a perda da exatidão dos resultados
análise de circuitos elétricos, baseado na teoricamente esperados.
análise nodal. Atualmente, está em Por estes motivos, o objetivo geral do
desenvolvimento uma nova versão da Projeto onde está inserido este trabalho é
decomposição LU, utilizando técnicas desenvolver uma ferramenta computacional
intervalares para que os erros sejam para auxiliar na análise de circuitos elétricos,
automática e rigorosamente controlados. baseada na concepção de software livre, e
Como trabalhos futuros, serão desenvolvidos utilizando técnicas intervalares no controle dos
uma interface gráfica e uma versão web para erros de computação numérica. Este projeto
o sistema. recebe apoio financeiro do programa
CTINFO/CNPq e FAPERGS.
Palavras-chave: Análise de circuitos Em particular, este artigo descreve a
elétricos, Decomposição LU, Python primeira etapa deste Projeto. Esta consiste no
desenvolvimento de um software livre para
aplicação em análise de circuitos elétricos em
sua versão pontual.

1
Bolsista de Iniciação Científica PROBIC/FAPERGS
2
Bolsista de Iniciação Científica IC/CNPq
2. ANÁLISE DE CIRCUITOS corrente) se a corrente estiver chegando ao nó,
ELÉTRICOS e uma corrente negativa, se a corrente estiver
saindo do nó.
A análise de circuitos elétricos utiliza-se
fundamentalmente de métodos da Álgebra
Linear que podem exigir um grande esforço
computacional. As técnicas para análise de
circuitos mais conhecidas são: análise de
malhas e análise nodal, que se baseiam nas
Leis de Kirchhoff [1].
Estes métodos de análise geram sistemas
de equações lineares de n equações e n
Figura 1. Circuito elétrico sem fontes de
incógnitas, cuja solução estima os valores das
tensão.
incógnitas de um circuito elétrico, que podem
ser de dois tipos: tensão ou corrente.
Análise nodal com fontes de tensão. No
Ao percorrer as malhas de um circuito
método de análise nodal, a utilização de fontes
elétrico, obtém-se, como incógnitas, as tensões
de tensão nos circuitos elétricos introduz
sobre os elementos que compõe as malhas (Lei
equações vinculares. Quando a fonte de tensão
das Tensões de Kirchhoff). Por outro lado, se
estiver com um de seus terminais ligados a
for realizada uma análise das correntes que
referência (que é arbitrada), então se tem um
entram ou saem de um nó, têm-se, como
nó aparente. Quando esta não possui nenhum
incógnitas, as correntes que percorrem os
de seus terminais ligados à referência, então se
ramos do circuito (Lei das Correntes de
possui um supernó.
Kirchhoff).
Por motivos computacionais, foi escolhido
implementar o sistema utilizando a técnica de
análise nodal. Observa-se que é exigido muito
mais esforço computacional para identificar as
malhas de um circuito do que seus nós.
Nesta versão do software, os circuitos
analisados podem conter apenas resistores e
fontes independentes de corrente e de tensão.
Figura 2. Circuito elétrico com fontes de
2.1. Análise nodal tensão.

A análise nodal é um método de análise de 3. RESOLUÇÃO DE SELA'S


circuitos baseado na Lei das Correntes de
Kirchhoff. Nela deve-se escolher um ponto A análise nodal [1] é uma técnica de
como referência (ponto 0) e após arbitrar, aos análise de circuitos que gera um número de
demais nós, as respectivas tensões do circuito equações igual ao número de nós (incógnitas)
a serem calculadas. No lado esquerdo das menos um (nó de referência).
equações nodais, tem-se o somatório dos Sabe-se que no caso de sistemas n x n, a
produtos condutância x tensão. Do lado solução de um sistema do tipo Ax=b é dado
direito dessas equações tem-se uma corrente por x=A-1b, onde os valores encontrados para
positiva (proveniente de uma fonte de x, correspondem à solução do sistema. Porém
o cálculo da matriz inversa A-1 requer um escrever A=LU, onde L é uma matriz
grande esforço computacional, pelo número de triangular inferior unitária e U uma matriz
operações envolvidas e pela complexidade triangular superior.
dessas operações. Se Ax=b e A=LU então LUx=b e
Portanto, para a resolução de SELA's no considerando que Ux=y, obtém-se dois novos
aplicativo em desenvolvimento, foram sistemas lineares:
estudados alguns métodos, por exemplo,
eliminação de Gauss e decomposição LU. Ly=b (1)
Ux=y (2)
3.1. Eliminação de Gauss
A partir da solução da Eq. (1), são obtidos
Eliminação Gaussiana [2] é a técnica os componentes de y, e, portanto, com a
mais conhecida e mais usada para a resolução substituição do vetor y na Eq. (2), obtém-se a
de SELA's densos de pequeno a médio porte solução desta, encontrando os valores dos
(dimensão máxima 30). Este método consiste componentes do vetor x. A Eq. (1) é
de uma aplicação esquemática das solucionada por substituição direta e a Eq. (2)
propriedades básicas da álgebra linear. O por substituição inversa.
Método de Gauss transforma o sistema linear Na prática, na busca de soluções para
original num sistema linear equivalente, cuja minimizar a instabilidade numérica, deve-se
matriz dos coeficientes é triangular superior. A optar por uma modificação deste método,
resolução deste sistema equivalente é imediata. denominada Decomposição LUP [4]. O
O método divide-se em duas etapas, o que objetivo desta decomposição é encontrar três
torna a implementação mais fácil. A primeira matrizes L, U e P, com dimensão n x n, de
etapa é chamada de triangularização e modo que PA = LU, onde L é uma matriz
consiste em transformar a matriz dos triangular inferior unitária, U é uma matriz
coeficientes A numa matriz triangular superior, triangular superior e P é uma matriz de
mediante permutações e combinações lineares. permutação (inicialmente uma matriz
Observa-se que as operações realizadas sobre identidade).
a matriz A devem também ser aplicadas sobre Considerando um sistema do tipo Ax=b e
o vetor independente b. A segunda etapa do multiplicando ambos os membros da equação
método é conhecida como substituição inversa por uma matriz P, obtém-se PAx=Pb e se
e tem por objetivo o cálculo dos componentes PA=LU, então LUx=Pb. Considerando Ux=y,
do vetor x, solução de Ax=b, a partir da obtém-se:
solução imediata do último componente de x, e
Ly=Pb (3)
a substituição inversa nas equações anteriores.
Ux=y (4)
3.2. Decomposição LU Na Eq. (3), tem-se um sistema triangular
inferior e obtém-se a solução para o vetor y
A Decomposição LU [3] consiste na através de uma substituição direta. De posse
decomposição da matriz A em um produto de da solução para y, resolve-se o sistema da
duas matrizes triangulares e, em seguida, na Eq. (4). Este sistema é triangular superior e
solução de dois sistemas triangulares que dele obtém-se a solução para o vetor x através
fornecem a solução do sistema original. de uma substituição inversa.
Considerando um sistema do tipo Ax=b, e Na prática, observa-se que com o
sendo A uma matriz quadrada, então se pode pivotamento, a matriz A (matriz original) será
alterada em função das trocas de linhas, computação científica. No desenvolvimento do
portanto o vetor b também deveria ser analisador de circuitos elétricos foi utilizada
modificado para que a solução do sistema não sua biblioteca numérica.
se altere. É para resolver este problema que
existe a matriz P, para poder realizar no vetor 5. ESTUDO DE CASO
b todas as trocas de linha que ocorreram no
processo de decomposição da matriz A. A entrada de dados é feita a partir de um
Portanto, a decomposição LUP oferece arquivo texto especificando o tipo de elemento
uma maior estabilidade e robustez numérica na (resistor, fonte de tensão ou de corrente), a
resolução dos SELA's do que os métodos sua numeração, os terminais entre os quais o
anteriores (método de Gauss e decomposição elemento está conectado e o seu valor.
LU), permitindo o pivotamento parcial de Considere o exemplo da Fig. 3.
linhas e possui um esforço computacional
equivalente.

4. POR QUE USAR PYTHON?

Para a implementação, escolheu-se a


linguagem Python [5], por possuir estruturas
de dados de alto-nível eficientes e adotar uma
abordagem simples e efetiva para a
programação orientada a objetos. Sua sintaxe
elegante e tipagem dinâmica, em adição a sua
natureza interpretada, tornam Python ideal R 1 1 2 3
para scripting e para o desenvolvimento rápido R 2 2 0 2
de aplicações (RAD - Rapid Application R 3 2 3 3
R 4 3 0 2
Development) em diversas áreas e na maioria V 1 1 0 -17
das plataformas. O interpretador de Python e V 2 3 2 6
sua extensa biblioteca padrão estão disponíveis I 1 3 0 2
na forma de código fonte ou binário para a
maioria das plataformas, e podem ser Figura 3. Circuito elétrico e entrada de dados
distribuídos livremente. em arquivo texto para o exemplo.
Além disso, este interpretador é facilmente
extensível incorporando novas funções e tipos Cada linha do arquivo texto da Fig. 3 é
de dados implementados em C ou C++ (ou uma lista composta da seguinte forma:
[elemento,numeração,nó1,nó2,valor],
qualquer outra linguagem acessível a partir de
onde elemento pode ser resistor (R), fonte de
C), seja para desempenhar operações críticas
tensão (V) ou fonte de corrente (I);
em máxima velocidade, ou para vincular
numeração é o índice que identifica o
programas Python a bibliotecas que só estejam
elemento; nó1 e nó2 são os terminais entre os
disponíveis em formato binário.
quais o elemento está conectado; valor é o
Esta linguagem permite organizar programas
valor numérico do elemento.
em módulos que podem ser reutilizados em
Na saída, teremos como resposta, as
outros programas escritos em Python. Além
tensões nodais do circuito, que são as tensões
disso, a linguagem Python possui vários
de cada ponto (nó) do circuito em relação à
módulos desenvolvidos para a área de
referência (ponto 0). Neste exemplo, as
incógnitas são as tensões V1, V2 e V3. A programas comerciais utilizados na análise de
Fig. 4 apresenta o arquivo de saída, onde o circuitos elétricos. Para a implementação desta
vetor X consiste dos valores dessas tensões. interface, será utilizada a biblioteca gráfica
wxPython.
O elemento R1 é um resistor. Sendo o Python uma linguagem
Está entre os nós 1 e 2.
Possui valor 3 ohm(s). interpretada, com a utilização de uma
biblioteca especial, é possível compilar seus
O elemento R2 é um resistor. programas. Com o programa compilado, não
Está entre os nós 0 e 2.
Possui valor 2 ohm(s). existe a necessidade de ter a linguagem Python
e nem as bibliotecas utilizadas pelo aplicativo
O elemento R3 é um resistor. instaladas no computador. Neste contexto,
Está entre os nós 2 e 3.
Possui valor 3 ohm(s).
outro trabalho a ser desenvolvido futuramente
é disponibilizar o sistema em uma versão
O elemento R4 é um resistor. compilada.
Está entre os nós 0 e 3. Propõe-se também o desenvolvimento de
Possui valor 2 ohm(s).
uma versão para web, de tal forma que o
O elemento V1 é uma fonte de tensão. analisador possa ser utilizado principalmente
Está entre os nós 0 e 1. em cursos on-line. A versão web será uma
Possui valor 17 volt(s).
segunda alternativa para quem não possui a
O elemento V2 é uma fonte de tensão. linguagem Python instalada.
Está entre os nós 2 e 3.
Possui valor -6 volt(s).
8. REFERÊNCIAS
O elemento I1 é uma fonte de
corrente. [1] D. E. Johnson, J. L. Hilburn, J. R. Johnson,
Está entre os nós 3 e 0.
Possui valor 2 ampere(s).
Fundamentos de Análise de Circuitos
Elétricos, LTC, Rio de Janeiro: 1994, p. 1-90.
Vetor X:

[-17. -8. -2.]


[2] D. M. Claudio, J. M. Marins, Cálculo
Numérico Computacional: Teoria e Prática,
Figura 4. Arquivo texto de saída para o Atlas, São Paulo: 2000.
exemplo da Fig. 3.
[3] H. Anton, Álgebra Linear com Aplicações,
7. CONSIDERAÇÕES FINAIS Bookman, São Paulo: 2001, p. 321-332.

Os estudos desenvolvidos propiciaram a [4] T. H. Cormen, C. E. Leiserson, R. L.


implementação de uma versão inicial do Rivest, Algoritmos: Teoria e Prática, Campus,
sistema para a análise de circuitos elétricos. Rio de Janeiro: 2002, p. 585-596.
Como continuidade do trabalho, pretende-
se aplicar as técnicas da Matemática Intervalar [5] M. C. Brown, Python, McGraw-Hill
[6], para possibilitar o tratamento da incerteza Companies, s.l: 2001.
dos dados de entrada, com o controle rigoroso
e automático dos erros de computações [6] R. E. Moore, Methods and Applications of
numéricas. Interval Analysis, SIAM, Philadelphia: 1979.
Pretende-se desenvolver uma interface
gráfica para o software, semelhante as dos

View publication stats

Você também pode gostar