Em engenharia elétrica geralmente usam-se a leis de Kirchhoff para estudar o comportamento estacionário (que não varia com o tempo ) de circuitos elétricos. Um outro problema importante envolve os circuitos que são transientes por natureza e em que ocorrem variações temporais súbitas. Tal situação ocorre depois do fechamento da chave da figura abaixo.
A duração desse período está intimamente ligada às propriedades de armazenamento do capacitor e do indutor. O fluxo da corrente através do resistor causa uma queda de voltagem (VR) dada por:
VR = iR
Onde i é a corrente e R é a resistência do resistor.
Um indutor “resiste” a variações na corrente, de modo que a queda de tensão VL através dele é:
A queda de tensão no capacitor VC depende da carga (q) nele:
Onde C é a capacitância.
A segunda lei de Kirchhoff afirma que a soma algébrica das quedas de voltagem em torno de um circuito fechado é zero. Depois que a chave é fechada, tem-se:
Entretanto, a corrente está relacionada com a carga por:
Portanto,
Trata-se de uma equação diferencial ordinária linear de segunda ordem. A solução é dada por:
Na qual t = 0, q = q0 =V0C e V é voltagem fornecida pela bateria. A equação (1) descreve a variação no tempo na carga do capacitor.
Um problema de projeto típico em engenharia ( elétrica, controle, computação) poderia envolver a determinação do resistor apropriado para dissipar energia a uma taxa específica , com valores conhecidos para L e C. Para esse Problema, suponha que a carga deve ser dissipada a 1% do seu valor original (q/q0 = 0,01) em t=0,05s, com L = 5 H e C = 10-3 F
PS: Use o método da Bissecção. O método de Newton-Raphson pode ser inconveniente em virtude do cálculo da derivada de (1) ser trabalhoso.
A variável implícita da equação é R.
Resolução:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main(){
int opcao = 0 ,k =0 ;
float x = 0, y = 0, p = 0, M = 0, Fy = 0, Fyy = 0, Fm = 0, aux =0 , aux1=0 , er = 0, e =0.;
opcao = 0;
while(opcao != 2){
printf("\n\n\t\t");
printf("************\n \n \t");
printf("MENU DE OPCOES");
printf("\n\n\t");
printf("1 - Inserir Chute para o metodo.");
printf("\n\n\t");
printf("2 - Sair");
printf("\n\n\t");
printf("Escolha Opcao: ");
scanf("%d", &opcao);
switch(opcao){
case 1:{
printf("\n\n\t\t");
printf("************\n \n \t");
printf( "Digite valor de A:" );
scanf( "%f", &x );
printf("\n\n\t");
printf( "Digite valor de B:" );
scanf( "%f", &y );
printf("\n\n\t");
printf( "Digite a precisao desejada:" );
scanf( "%f", &p );
printf("\n");
k=0;
do{
M = ( x + y ) / 2;
Fy = (pow(M_E,-0.005*x)*cos(sqrt(2000-0.01*pow(x,2))*(0.05)))-0.01;
Fm = (pow(M_E,-0.005*M)*cos(sqrt(2000-0.01*pow(M,2))*(0.05))) -0.01;
Fyy = (pow(M_E,-0.005*y)*cos(sqrt(2000-0.01*pow(y,2))*(0.05)))-0.01;
aux = Fy*Fm ;
aux1 = Fyy*Fm ;
if ( aux < 0 ){
y = M;
}
else if ( aux1 < 0){
x = M;
}
if (x > 447 || y > 447)
break;
if ( aux > 0 && aux1 > 0 ){
printf("\n\n\t");
printf(" Entre as variaveis A e B não possuem raizes .");
break ;
}
k++;
printf("\n\n\t");
printf( "iteracao = %d\n", k );
printf( "A = %.20f\nB = %.20f\n", x, y );
} while( y - x >= p || Fy >= p || Fyy >= p );
er = y - x ;
e = (y+x)/2;
if (er < 0)
er = er*-1;
printf("\nO erro e = %.20f\n", er);
printf( "A valor de R e: %.20f\n", e );
break;
}
case 2:{
printf("\n\n\t");
printf("Voce SAIU com SUCESSO");
printf("\n\n");
break;
}
default:{
printf("\n\n\t");
printf("Opcao INVALIDA");
printf("\n\n");
}
}
}
}
Um comentário:
Quais seria as raízes?
Postar um comentário