Pesquisar neste blog

08/02/2018

Algoritmo Método da Bisseção C/C++ / Java

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <cstdlib>
using namespace std;

float funcao(float var){

return (pow(var, 3))-2*var;
}

int main(){
float a, b, aux, Erro = 0.01, iteracoes, xm, xx, Errox, Raiz;
int i= 0, k, j;
double fa, fx, fax;

    printf("\t\t\tALGORITMO DA BISSECCAO\n\n");
    printf("\t\t\tAlunos: Henrique, Dhejck");

printf("\n\n\tDigite o intervalo A: ");
scanf("%f", &a);
printf("\n\tDigite o intervalo B: ");
scanf("%f", &b);

//calculando a quantidade de iterações de acordo com a formula
iteracoes = (log10(b-a)-log10(Erro))/log10(2);
printf("\n\tNumero de Interacoes = %.1f \n\n", iteracoes);


printf("\nITERACOES: A(n) B(n)   X(m)     Erro   F(a)   F(xm)     F(a).F(xm)");
for(int i=i+1; i <= iteracoes +1; i++){
k = i+0;
xm = (a+b)/2;

Errox = b-a;

printf("\nIteracao: %d   %.4f   %.4f    %.4f    %.4f    %.2f %.2f   %.2f", i, a, b, xm, Errox, fa= funcao(a), fx= funcao(xm), fax= funcao(a) * funcao(xm));

if(funcao(a)* funcao(xm) < 0){
a = a;
b = xm;
}
else{
a = xm;
b = b;
}
}

printf("\n\n\tRAIZ = [%.4f]: apos %d Iteracoes com 4 casas decimais\n\n\n", xm, k);
printf("\n\n\Q1= %f", funcao(a));
//printf("\n\nFunc = %.5f\n\n",func(a));

system("PAUSE");
return (0);
}

EM LINGUAGEM JAVA

package trabalho.pkg2.bissecao;
import java.io.PrintStream;
import static java.lang.Math.log10;
import static java.lang.Math.pow;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
     
        double a, b, xm, Erro= 0.01, iteracoes, Errox;
        double fa, fxm;
        int i = 0, k = 0, cont = 0;
     
        System.out.println("\tALGORITMO DA BISSECÇÃO:");
        System.err.println("\tAlunos: Henrique\n");
     
        System.out.printf("Digite o intervalo A: ");
        a = input.nextDouble();
     
        System.out.printf("Digite o intervalo B: ");
        b = input.nextDouble();
     
        xm = (a+b)/2;
     
        iteracoes = (((log10(b-a))- log10(Erro)) / log10(2));
        System.out.printf("\nNúmero de iteracoes = %.1f \n",iteracoes);
     
        System.err.println("\tIterações: A(n)    B(n)      X(n)      Erro(n)    f(a)     F(xm)");
     
        if(xm == 0){
            System.out.println("Raiz = 0 ou possui mais de 1 raiz");
        }else{
            for(i= i+0; i <= iteracoes +1; i++){
                k = i+0;
                xm = (a+b)/2;
                Errox = b-a;
             
                System.out.printf("\nIterações: %d    %.2f       %.2f      %.2f      %.2f       %.2f    %.2f", i, a, b, xm, Errox, fa= funcao(a), fxm=funcao(a)*funcao(xm));
             
                if(funcao(a)* funcao(xm) < 0){
                    a = a;
                    b = xm;
                }else{
                    a = xm;
                    b = b;
                }
            }
        }
        System.err.println("Raiz = "+xm+" após "+k+" iterações:\n");
    }
    public static double funcao(double x){
        return pow(x, 3)-2*x;
    }
}





20/01/2018

Torre de Hanoi em C/C++

Biblioteca iStack.h


#ifndef ISTACK_H_
#define ISTACK_H_

#define SIZE 10

typedef struct iStack {
    int elements[SIZE];
    int top;
    int id;
}iStack;

void init(iStack *stack, int id);
void push(iStack *stack, int element);
int pop(iStack *stack);
int top(iStack *stack);
int isEmpty(iStack *stack);
int isFull(iStack *stack);
int size(iStack *stack);
int capacity(iStack *stack);
void show(iStack *stack);

void init(iStack *stack, int id) {
    stack->top = -1;
    stack->id = id;
}

void push(iStack *stack, int element) {
    if (!isFull(stack)) {
        stack->top++;
        stack->elements[stack->top]=element;
    } else
        printf("Push not allowed: stack is full.\n");
}

int pop(iStack *stack) {
    if (!isEmpty(stack)) {
        stack->top--;
        return stack->elements[stack->top+1];
    } else {
        printf("Pop not allowed: stack is empty.\n");
        return -1;
    }
}

int top(iStack *stack) {
    return isEmpty(stack)?-1:stack->elements[stack->top];
}

int isEmpty(iStack *stack) {
    return stack->top==-1;
}

int isFull(iStack *stack) {
    return stack->top==SIZE-1;
}

int size(iStack *stack) {
    return stack->top+1;
}

int capacity(iStack *stack) {
    return SIZE;
}

void show(iStack *stack) {
    while (!isEmpty(stack)) {
        printf("%d\n", pop(stack));
    }
}

#endif

Arquivo principal Main

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "iStack.h"


int hanoi(int qtd, iStack *origem, iStack *aux, iStack *destino);

int main(){
iStack pilha1, pilha2, pilha3;
int qtd, aux, i=0;

init(&pilha1, 1);
init(&pilha2, 2);
init(&pilha3, 3);

printf("TORRE DE HANOI\n");
printf("Digite o numero de discos: ");
scanf("%d", &qtd);
aux = qtd;
while(aux > 0){
push(&pilha1, aux);
aux --;
}
hanoi(qtd, &pilha1, &pilha2, &pilha3);
}

int hanoi(int qtd, iStack *origem, iStack *aux, iStack *destino){
int topoOrigem;

if(qtd==1){
topoOrigem = pop(origem);
push(destino, topoOrigem);
printf("\n%d para %d", origem->id, destino->id);
} else {
hanoi(qtd-1, origem, destino, aux);
hanoi(1, origem, aux, destino);
hanoi(qtd-1, aux, origem, destino);
}
}

/*

//OUTRO MÉTODO:
void mover(int num, iStack *origem, iStack *destino, iStack *aux) {
push(destino,pop(origem));

if (num == 1) {
        printf("\nDisco %d:   %d -> %d", num, origem->id, destino->id);
} else {
mover(num-1,origem, aux, destino);
printf("\nDisco %d:   %d -> %d", num, origem->id, destino->id);
mover(num-1, aux, destino, origem);
}
}

int main() {
int discos, i, aux;
iStack torres[3];

init(&torres[0],1);
init(&torres[1],2);
init(&torres[2],3);

printf("Digite o numero de discos: ");
scanf("%d", &discos);
aux = discos;

for(i=0; i<aux; i++){
push(&torres[0], discos);
discos--;
}

mover(size(&torres[0]), &torres[0], &torres[2], &torres[1]);
}*/


24/11/2017

Registro em C++ / C

Considerando os registros de 10 funcionários com os campos matrícula, nome e salário, desenvolver um algoritmo que utilize subprogramas e apresente um menu para a execução das seguintes etapas: 
a) Cadastrar os registros;
b) Apresentar um relatório dos funcionários em ordem alfabética; 
c) Apresentar um relatório onde conste a média dos salários dos funcionários;
d) Mostrar os funcionários que recebem acima de um determinado valor fornecido pelo usuário. Esse valor deve compreender o maior e o menor salário registrado dos funcionários.

Resolução:

#include <stdio.h>
#include <stdlib.h>
#include <cstdlib>
#include <iostream>
#include <string>


using namespace std;

struct ficha
{
    int matricula;
    string nome;
    float salario;
};

const int tam=3;

ficha empresa[tam];//variavel global

void cadastro()
{
    cout<<"Digitar o registro de funcionários \n";
    for (int i=0;i<tam;i++){
        cout<<"\nMatricula "; cin>>empresa[i].matricula;
        cout<<"\nNome "; cin>>empresa[i].nome;
        cout<<"\nSalario "; cin>>empresa[i].salario;
    }
 
}

void ordena()
{
    ficha aux;
    for(int i=0; i<tam-1;i++)
        for(int j=(i+1);j<tam;j++)
        { 
            if(empresa[i].nome>empresa[j].nome)
            {
                aux=empresa[i];
                empresa[i]=empresa[j];
                empresa[j]=aux;
            }
        }
}

void ordenasalario()
{
    ficha aux;
    for(int i=0; i<tam-1;i++)
        for(int j=(i+1);j<tam;j++)
        { 
            if(empresa[i].salario>empresa[j].salario)
            {
                aux=empresa[i];
                empresa[i]=empresa[j];
                empresa[j]=aux;
            }
        }
}

void listar1()
{
    ordena();
    for(int i=0;i<tam;i++)
    {
        cout<<"\nMatricula "<<empresa[i].matricula;
        cout<<"\nNome "<<empresa[i].nome;
        cout<<"\nSalario "<<empresa[i].salario;
        cout<<"\n";
    }
}

float mediasalarios()
{
    float soma=0;
    for(int i=0;i<tam;i++){
          soma=soma+empresa[i].salario;
    }
    return(soma/tam);
}

void listarsalario()
{
    float salario;
    ordenasalario();
    float maiorsalario=empresa[tam-1].salario;
    float menorsalario=empresa[0].salario;
    cout<<"Qual é o salário base para listagem?";
    cin>>salario;
    if(salario>=menorsalario && salario<=maiorsalario)
    {
        for(int i=0;i<tam;i++){
            if (empresa[i].salario>salario){
              cout<<"\nMatricula "<<empresa[i].matricula;
              cout<<"\nNome "<<empresa[i].nome;
             cout<<"\nSalario "<<empresa[i].salario;
             cout<<"\n";
            }
        }
    }
    else
        cout<<"O salário fornecido não compreende o maior e o menor salário pago";
         
}

void buscar(){
string pesq;
printf("\n\nDigite o nome a ser pesquisado: ");
cin>>pesq;
for(int i=0; i<tam; i++){
if(pesq == empresa[i].nome){
cout<<"\nAhcei : ";
cout<<"\nNome: "<<empresa[i].nome;
cout<<"\nMatricula: "<<empresa[i].matricula;
cout<<"\nSalario: "<<empresa[i].salario;
}
}
}
   

void menu()
{
    int op=1;
    while (op!=5){
        cout<<"\nSelecione a opcao ";
        cout<<"\n 1.Cadastrar funcionarios ";
        cout<<"\n 2.Listar funcionarios em ordem alfabetica ";
        cout<<"\n 3.Listar media dos salarios ";
        cout<<"\n 4.Listar funcionario por base no salario especifico";
        cout<<"\n 5.Buscar ";
        cout<<"\n 6. SAIR \n\n";
        cin>>op;
        switch(op)
        {
                case 1: cadastro();
             
                break;
                case 2: listar1();
                break;
                case 3: cout<<"A média dos salários é R$ "<<mediasalarios();
                break;
                case 4:listarsalario();
                break;
                case 5: buscar();
                break;
                case 6: cout<<"Obrigado\n\n";
                break;
        }
    }
}

int main(int argc, char** argv) {

 
    menu();
    return 0;
}

21/09/2017

ELETRICIDADE APLICADA EA06


EXERCÍCIOS RESOLVIDOS DE ANÁLISE NODAL E ANÁLISE DE MALHAS

1)Usando a análise nodal, calcule V1, V2 e i no circuito abaixo. Resposta: V1=4V, V2=36V e i=4A.


















Resolução
Simulador EasyEDA





















LKC em V1
4 + i = 7 + i1
i - i1 = 3
OHM
1/8(V2 - V1) - 1/4(V1-0) = 3
V2 - V1 - 2V1 = 24
V2 - 3V1 = 24                            (1)

LKC em V2
7 = i + i2
OHM
1/8(V2 - V1 + 1/12)(V2 - 0) = 7

(3V2 - 3V1 + 2V2)/24 = 7
5V2 - 3V1 = 168                     (2)

(2) - (4)
5V2 - 3V1 = 168
-V2 + 3V1 = - 24
4V2 = 144
V2 = 36V

De (1)
36 - 3V1 = 24
V1= 4V

i = (36 - 4)/8 = 4A

Simulador EveryCircuit


























2) Repita o exercício anterior utilizando a análise de malha.

LKT em II
4(i2 - i1) + 8(i2 - i3) + 12i2 = 0
4(i2 - 4) + 8(i2 - i3) + 12i2 = 0
4i2 - 16 + 8i2 - 56 + 12i2 = 0
24i2 = 72
i2 = 3A

V1 = 4(i1 - i2) = 4(4-3) = 4V
V2 - V1 = 8(i3 - i2)
V2 - 4 = 8(7 - 3)
V2 = 36V

i = i3 - i2 = 7 - 3 = 1A

3) Usando a análise nodal, calcule V1, V2 e V3 no circuito abaixo. Resposta: V1= 24V,  V2= - 4V e V3=20V.
Resolução
Simulador EasyEDA


LKC em Va
5 + 6 = i1 + i3
OHM
(Va - Vb ) /4

(Va - Vb) /4 + Va - 0)/4 = 11    (1)

LKC em Vb
i1 = 5 + i2 + 3
OHM
(Va - Vb) / 4 = Vb / 2 + 8       (2)

Va = 20V
Vb = - 4V
V1 = Va - Vb = 20 - (- 4) = 24V

V2 = Vb - 0 = - 4 = - 4V
Vb = Va - 0 = 20 V
Simulador EveryCircuit


4) Repita o exercício anterior utilizando a análise de malha.

i2 - i3 = 5      (1)
i3 - i4 = 6      (2)
i1 = 3

LKT
2(i1 - i3) - 4i2 - 4i4 = 0
3 - i3 - 2i2 - 2i4 = 0
2i2 + 2i4 + i3 = 3           (3)

(1) + (2) 
i2 - i4 = 11                     (4)

(1) + (3)
3i2 + 2i4 = 8                (5)

2(4) + (5)
2i2 - 2i4 = 22
3i2 + 2i4 = 8

5i2 = 30
i2 = 6A

De (4) 
6 - i4 = 11  => i4 = - 5A

De(2)
i3 - (-5) = 6  => i3 = 1A

V1 = 4i2 = 4 . 6 = 24V
V2 = 2(i3 - i1) = 2(1-3) = - 4V

LKT em i4
4i4 + V3 = 0
V3 = - 4i4 = - 4 . (-5) = 20V


5) Usando análise nodal, calcule v no circuito abaixo, se o elemento “desconhecido” é uma fonte independente de tensão de 4V com terminal positivo na parte superior. Resposta: v= 20V.

Resolução
Simulador EasyEDA

LKC emV1
i2 = i3 + i

OHM
(V2 - V1) /6 = (V1 - V3) /3 + (V1 - 0)/4

(2V2 - 2V1) /12 = (4V1 - 4V3 + 3V1) /12
2V2 - 2V1 = 4V1 - 4V3 + 3V1

- 9V1 + 2V2 + 4V3 = 0         (1)
V2 - V3 = 24                        (2)
V3 - 0 = 4
V3 = 4V

De (2)
V2 - 4 = 24  => V2 = 28V

D2 (1)
- 9V1 + 2 . 28 + 4 . 4 = 0
V1 = 8V

V = V2 - V1 = 28 - 8 = 20V




6) Repita o exercício anterior utilizando a análise de malha.

LKT em i2
4(i2 - i1) + 3(i2 - i1) + 3(i2 - i3) + 4 = 0   (1)

LKT em i1
-30 + 8i1 + 6(i1 - i3) + 4(i1 - i2) = 0     (2)

LKT em i3
3(i3 - i2) + 6(i3 - i1) + 24 = 0     (3)

i2 = -i  (4)

Resolvendo; Logo:

i = 7/4A  ; i1 = 1/4A ;  i2 = - 7/4A ;  i3 = - 37/12A

V = 6(i1 - i3) = 6[1/4 - (- 37/12) ] = 20V



7) Repita o exercício 5, se o elemento “desconhecido” é uma fonte independente de corrente de 7A
apontando para cima. Resposta: V = 26V.

Resolução:
Simulador EasyEDA

Por análise de malha
LKT  em i2
- 30 + 8i2 + 6(i2 - i3) + 4(i2 - i1) = 0    (1)

LKT em i3
3(i3 - i1) + 6(i3 - i2) + 24 = 0      (2)

Resolvendo, temos que:

i1 = - 7A
i2 = - 2A
i3 = -19/3 A

V = 6(i2 - i3) = 6[ - 2 - ( -19/3)] = 26V


8) Usando a análise de malhas, calcule i1 e i2 no circuito abaixo, se R1=2Ω, R2=4Ω, R3=3Ω, vg1=9V e vg2=-5V. Resposta: i1=3A, i2=2A.


LKC em i1

i1 . 2 + 3(i1 - i2) + i1 . 3 = 9
8i1 + i1.2 - 3i2 = 9

LKC em i2

4.i2 + 3(i2 - i1) = - 5
- 3.i1 + 7.i2 = -5

i1 = 3A
i2 = 2A
Simulador EveryCircuit

9) Repita o exercício anterior utilizando a análise nodal.


LKC em I3
I1 = I2 + I3
(V1 - V3)/2 = (V3 - V2)/4 + 3 - 0)/3  (1)

V1 - 0 = 9 = 9V

V2 - 0 = - 5 = - 5V

Logo; V3 = 3V

i1 = (V1 - V3)/2 = (9 - 3) / 2 = 3A

i2 = V3 - V2) / 4 = (3 - - 5) / 4 = 2A


10) Usando a análise de malhas, calcule i1 e i2 no circuito abaixo, se o elemento x é uma fonte de tensão independente de 6V, com terminal positivo na parte superior. Resposta: i1=2A, i2=1A.



Resolução:
LKT no sentido horário na malha 1
 2i1 + 3(i1 - i2) = 16 - 9
5i1 - 3i2 = 7


LKT no sentido horário na malha 2
 6i2 + 3i2 - 3i1) = 9 - 6
 -3i1 + 9i2 = 3

Resolvendo em álgebra
 3.L1 + 5.L2
36.i2 = 36
i2 = 1A

5i1 - 3 . 1 = 7
i1 = 2A



11) Repita o exercício anterior utilizando a análise nodal.
Simulador EasyEDA
Resolução:
LKC em V1
i1 = i2 + i3   OHM  (V3 - V1)/2 = (V1 - V2) /6 + i3  (1)

V1 - V4 = 9  (2)
V4 - 0 = 3i3  (3)

(2) + (3) 
V1 = 9 + 3i3
i3 = (V1 - 9) / 3 (4)

(4) em (1)
(V3 - V1) /2 = (V1 - V2) /6 + (V1 - 9) /3  (5)

V3 - 0 = 16
V3 = 16V

V2 - 0 = 6 = 6V

De (5) temos;

V1 = 12V

i1 = (V3 - V1) /2 = (16 - 12 ) /2 = 2A

i2 = (12 - 6) / 6 = 1A



12) Usando a análise de malhas, calcule i1 no circuito abaixo. Resposta: i=2A .










Resolução:

LKT na malha 2
4(i2 - i1) + 3i2 + 5i(i2 - i3) = 0
- 4i1 + 12i2 - 5i3 = 0

i1 = 11A  e  i3 = 4A

- 4(11) + 12i2 - 5(4) = 0
i2= 2A

i2 = i = 2A

V= 3 . 2 = 6V
i = 6 / 3 = 2A
Simulador EveryCircuit











13) Repita o exercício anterior utilizando a análise nodal.

Resolução
Simulador EasyEDA

















LKC em V1

11 = i + i1     OHM   (V1 - V2) /3 + (V1 - 0)/4 = 11    (1)

LKC em V2

i + 4 = i2    OHM   (V1 - V2) /3 + 4 = (V2 - 0) /5    (2)

V1 = 35V
V2 = 30V

i = (V1 - V2) /3 = (36 - 30) /3 = 2A


14) No circuito abaixo, considere R1= 4Ω, R2 = 6Ω, R3 = 2Ω, ig1 = 4A,e ig2 = 6A e vg3 = 52V. Mantendo i2 e i3 como indicado e trocando i1 para uma corrente de laço no sentido horário que passa através de R1, R2 e R3 e vg3, empregue a análise de malha para encontrar a potência entregue a R3 (note que neste caso a corrente em e R3 é i1 + i3). Resposta: 18W.


i2 = - 4A   e  i3 = 6A

LKT em ABCD
4(i1 - i2) + 6(i1 + i3 - i2) + 2(i1 + i3) - 52 =  0
12i1 - 10i2 + 8i3 = 52
12i1 = - 36
i1 = -3A

P = R . i . i = 2(-3 . -3) = 18W

Simulador EveryCircuit


15) Usando a análise nodal, calcule V1 e V2 no circuito abaixo. Resposta: V1=40V, V2=24V.











Simulador EasyEDA














LKC em x     12 = i1 + i3    OHM   (Va - 0)/4 + Va - Vb) /8 = 12  (1)

LKC em y    i3 + 2 = i2      OHM  (Va - Vb) /8 + 2 = (Vb - 0) /6   (2)

Va = 40V     V1 = Va - 0 = 40 = 40V
Vb = 24V    V2 = Vb - 0 = 24 = 24V
Simulador EveryCircuit
















16) Repita o exercício anterior utilizando a análise de malha.

i1 = 12A
i3 - i2 = 2  (1)

LKT em ABCD
4(i2 - i1) + 8i2 + 6i3 = 0
- 4i1 + 12i2 + 6i3 = 0

i1 = 12A
i2 = 2A
i3 = 4A

V1 = 4(i1 - i2) = 4(12 - 2) = 40V
V2 = 6i3 = 6 . 4 = 24V


17) Usando a análise nodal, calcule i1 e i2 no circuito abaixo. Resposta: i1= 2A, i2= 4A.














Simulador EasyEDA























LKC em V1    6 = i1 + i3 + 5
i1 + i3 = 1        OHM  V1 /4 + (V1 - V2) /8 = 1

LKC em V2

i3 + 5 = i2
OHM    (V1 - V2) /8 + 5 = V2 /4

V1 = 8V
V2 = 16V

i1 = V1 / 4 = 8/4 = 2A

i2 = V2 /4 = 16/4 = 4A
Simulador EveryCircuit


























18) Repita o exercício anterior utilizando a análise de malha.

i3 = 6A
i4 = i2   (1)
i5 = 5A

LKT em i4
4(i4 - i3) + 8(i4 - i5) + 4i4 = 0 (2)

(1) em (2)
i1 = i3 - i4 = 6 - 4 = 2A


19) Usando a análise nodal, calcule i no circuito abaixo. Resposta: i=3A.












Simulador EasyEDA
























LKC em V3
10 = i1 + i2      OHM     (V3 - V2) /3  + (V3 - V4) /6 = 10

LKC em V2
i1 = i + i3         OHM    (V3 - V2) /3 = (V2 - V4) /2 + V2/4

LKC em X
i + i2 = i4       OHM (V2 - V4) /2 + (V3 - V4) /6 = V4 /3

V2 = 27V
V3 = 45V
V4 = 24V

i = (27 - 21) /2 = 3A
simulador EveryCircuit


























20) Repita o exercício anterior utilizando a análise de malha.

i1 = 10A

LKT em i2
3(i2 - i1) + 6i2 + 2(i2 - i3) = 0

LKT em i3

9(i3 - i1) + 2(i3 - i2) + 3i3 = 0

i2 = 4A
i3 = 7A

i = 7 - 4 = 3A

21) Usando a análise nodal, calcule i no circuito abaixo. Resposta: i=2A.






LKC em V1
1 = i1 + i + i2     OHM    (V1 - V3) /4 + (V1 - V2) /2 + V1 /4 = 1

LKC em V2
i = 1 + i3 + i4   OHM (V1 - V2) /2 = 1

(V1 - V2) /2 = 1 + 2 - 0) /4 + (V2 - V4) /4
V4 - 0 = 8 = 8V
V3 - 0 = 24 = 24V

V1 = 10V
V2 = 6V
V3 = 24V
V4 = 8V

i = (V1 - V2) /2 = (10 - 6) /2 = 2A
simulador EveryCircuit

22) Repita o exercício anterior utilizando a análise de malha.

i2 = -1A

LKT em i1
4i1 + 4(i1  - i3) = 24
8i1 - 4i3 = 24

LKT em i3
4(i3 - i1) + 2(i3 - i2) + 4(i3 - i4) = 0
- 4i1 - 2i2 + 10i3 - 4i4 = 0

LKT em i4
4(i4 - i3) + 4i4  = - 8
- 4i3 + 8i4 = -8

Resolvendo por algebra
i1 = 7A
i3 = 1A
i4 = - 1/2

i = i3 - i2 = 1 - (-1) = 2A

23) Usando a análise nodal, calcule v no circuito abaixo. Resposta: v= 20V.


















LKC em A
18x10-3 = i1 + i2 + i3   OHM   (V2 - 0) /4x103 + V2 - V3) /12x103 + (V2 - V1) /6103 = 18x 10-3

LKC em B i3 + i2 + 6x10-3 = i4      
OHM         (V2 - V4) /6x103 + (V2 - V3) /12x10+ 6x103 = ((V3 - 0) /4x103

V4 - V3 = 9
V2 = 58V
    V4 = 47V
    V = V2 - V3 = 58 - 38 = 20V
Simulador EveryCircuit



















24) Repita o exercício anterior utilizando a análise de malha.

i1 = 18x10-3 A
i4 = - 6x10-3

LKT em i2
[6i2 + 12(i2 - i3)]103 = -12

LKT em i3
[ 4(i3 - i3) + 12(i3 - i2) + 4(i3 - i4) ]103 = 0

i1 = 9 / 500 = 0,018A
Va - 0 = 4(i1 - i3)103 = 4(9/500 - 7/2000)103 = 58V

i2 = 11/600 A

i3 = 7 / 200 A
Vb - 0 = 4(i3 - i4)103= 4[7/200 - ( -3/500) ] 103

i4 = -3/500A
Vb = 38V

V = Va - Vb = 58 - 38 = 20V


25) Resolva o circuito abaixo, se as fontes de corrente de 2A, 3A e 7A são substituídas por fontes de tensão de, respectivamente, 17V, 4V e 16V, sendo o terminal positivo a parte superior de cada uma delas.


2i1 + 4(i1 - i2) = - 4
6i1 - 4i2 = - 4

4(i2 - i1) + 2(i2 - i4) = 17
- 4i1 + 6i2  - 2i4 = 17

6i3 + 8(i3 - i4) = 4
14i3 - 8i4 = 4

8(i4 - i3) + 2(i4 - i2) + 6i4 = - 16
- 2i2 - 8i3 + 16i4 = -16

Resolvendo por algebra

i1 = 2A        i2 = 4A
i3 = 0A        i4 = - 1/2A

V = 4(i2 - i1) = 4(4 - 2) = 8V
Simulador EveryCircuit

26) Calcule v usando o método (nodal ou de malhas) que requer o menor número de equações.

















Por analise de Malha
i1 = 2A
i4 = - 3A

LKT em i2
6(i2 - i1) + 2i2 + 6(i2 - i3) + 4(i2 - i4) = 0
- 12i1 + 18i2 - 6i3 - 4i4 = 0

LKT em i3
3(i3 - i4) + 6(i3 - i2) = - 12
- 6i2 + 9i3 - 3i4 = -12

Algebra
i1 = 2A
i2 = - 1A
i3 = - 3A
i4 = - 3A

V = 4(i2 - i4) = 4(-1 + 3) = 8V
Simulador EveryCircuit














02/09/2017

ELETRÔNICA DIGITAL

Desenhe o gráfico do sinal de saída admitindo que os sinais de entradas estão indicadas na figura:









Solução:

07/08/2017

Ordenação de Matriz em Linguagem C

#include <stdio.h>
#include <stdlib.h>
#define DIM 3 // TAMANHO DE CADA LINHA : para alterar o tamanho
//da matriz é só redefinir

/*Autor: Henrique
Data de Criação: 05/08/2017
Objetivo: Criar uma matriz Ordenada por Linha*/

//Função para ordenar de forma crescente
void OrdenacaoCrescente(int Mat[DIM]){
int i, j, aux;
for (i = 0; i < DIM-1; i++){
for (j = 0; j < DIM-1; j++){

if (Mat[j] > Mat[j+1]){
aux = Mat[j];
Mat[j] = Mat[j+1];
Mat[j+1] = aux;
}
}
}
for (i = 0; i <DIM; i++){//imprimindo a linha de forma ordenada
printf("%3d ", Mat[i]);
}
}

void OrdenaDecrescente(int Mat[DIM]){
int i, j, aux;
for (i = 0; i < DIM-1; i++){
for (j = 0; j < DIM-1; j++){

if (Mat[j] < Mat[j+1]){
aux = Mat[j];
Mat[j] = Mat[j+1];
Mat[j+1] = aux;
}
}
}
for (i = 0; i < DIM; i++){//Imprimindo a linha de forma decrescente
printf("%3d ", Mat[i]);
}
}


int main(){
int i, Matriz[DIM], Matriz2[DIM], Matriz3[DIM];

printf("DIGITE OS RESPECTIVOS VALORES INTEIROS PARA A MATRIZ \n\n");
for (i = 0; i < DIM; ++i){//Recebendo os valores para a Matriz da 1° linha
printf("Matriz de Posicao [1][%d]: ", (i+1));
scanf("%d", &Matriz[i]);
}
for(i = 0; i < DIM; ++i){//Recebendo os valorees para a Matriz da 2° linha
printf("\tMatriz de Posicao [2][%d]: ",(i+1));
scanf("%d", &Matriz2[i]);
}
for(i = 0; i < DIM; i++){//Receendo os valores para a Matriz da 3° linha
printf("\t\tMatriz de Posicao [3][%d]: ",(i+1));
scanf("%d", &Matriz3[i]);
}

system("cls");//Limpando a tela dos dados inseridos
printf("\n* * * * MATRIZ GERADA * * * *\n");
for(i = 0; i < DIM; i++){// Imprimindo a matriz de linha 1
printf("%3d ",Matriz[i]);
}
printf("\n");
for(i = 0; i < DIM; i++){// Imprimindo a matriz de linha 2
printf("%3d ", Matriz2[i]);
}
printf("\n");
for(i = 0; i < DIM; i++){// Imprimindo a matriz de linha 3
printf("%3d ", Matriz3[i]);
}


//Chamando a função crescente para cada etapa da linha
printf("\n\n---- MATRIZ DE ORDENACAO CRESCENTE ------\n");
OrdenacaoCrescente(Matriz);
printf("\n");
OrdenacaoCrescente(Matriz2);
printf("\n");
OrdenacaoCrescente(Matriz3);

//Chamando a função decrescente para cada etapa da linha
printf("\n\n---- MATRIZ DE ORDENACAO DECRESCENTE-----\n");;
OrdenaDecrescente(Matriz);
printf("\n");
OrdenaDecrescente(Matriz2);
printf("\n");
OrdenaDecrescente(Matriz3);

printf("\n\n");
return EXIT_SUCCESS;
}

04/08/2017

Ordenação Vetor em Linguagem C

#include <stdio.h>
#include <stdlib.h>
#define SIZE 5// tamanho do vetor

void troca(int X[], int i, int j){
int aux;
aux = X[i];
X[i] = X[j];
X[j] = aux;
}

int particao(int X[], int p, int r){
int pivo, i, j;
pivo = X[(p+r)/2];
i = p-1;
j = r +1;;
while(i < j){
do{
j = j -1;
}
while(X[j] > pivo);
do
{
i = i +1;
}
while(X[i] < pivo);
if(i < j){
troca(X, i, j);
}
}
return j;
}

void quicksort(int X[], int p, int r){
int q;
if(p < r){
q = particao(X, p, r);
quicksort(X, p, q);
quicksort(X, q+1, r);
}
}


int main (void){
int X[10];
int i;

for(i = 0; i <= SIZE; i++){
printf("Digite o numero da posicao [%d]: ",(i+1));
scanf("%d", &X[i]);
}

printf("\nOrdenando de forma crescente: \n");
quicksort(X, 0, SIZE);


for(i = 0; i <= SIZE; i++){
printf("%d ",X[i]);
}

printf("\n\n");
return EXIT_SUCCESS;
}