Analise de Circuito
Analise de Circuito – Leis de Kirchhoff

Quem é Kirchhoff

Gustav Robert Kirchhoff foi um físico alemão que fez contribuições significativas em vários campos da física e da química. Ele é mais conhecido por suas leis que descrevem o fluxo de corrente elétrica em circuitos elétricos, as Leis de Kirchhoff, que são fundamentais para a engenharia elétrica e a física.

Kirchhoff nasceu em 1824 e faleceu em 1887. Durante sua vida, ele trabalhou em problemas de termodinâmica, óptica e espectroscopia, além de eletricidade. Junto com Robert Bunsen, Kirchhoff desenvolveu a espectroscopia, que é um método para analisar a composição química de materiais baseado na luz que eles emitem ou absorvem. Através desse trabalho, eles foram capazes de descobrir novos elementos químicos, como o césio e o rubídio.

As duas leis de Kirchhoff para circuitos elétricos, formuladas em 1845, são:

  1. A Lei dos Nós (ou Lei das Correntes de Kirchhoff): A soma das correntes que entram em um ponto (ou nó) do circuito é igual à soma das correntes que saem desse ponto. Isso é uma consequência da conservação da carga elétrica.
  2. A Lei das Malhas (ou Lei das Tensões de Kirchhoff): A soma das diferenças de potencial elétrico (tensões) em uma malha fechada é igual a zero. Isso é baseado no princípio da conservação de energia.

Essas leis são aplicadas no design e análise de circuitos elétricos, permitindo calcular correntes e tensões em diversos pontos de um circuito. Além de suas contribuições para a física, as descobertas de Kirchhoff tiveram um impacto duradouro em várias áreas da ciência e tecnologia.

Leis de Kirchhoff

As Leis de Kirchhoff são dois princípios aplicados em circuitos elétricos que ajudam a entender a conservação da carga e da energia em tais sistemas. Elas são fundamentais para a análise de circuitos elétricos em engenharia e física. As leis foram formuladas por Gustav Kirchhoff em 1845 e são conhecidas como Lei dos Nós (Primeira Lei) e Lei das Malhas (Segunda Lei).

1. Lei dos Nós (Lei das Correntes de Kirchhoff)

A Primeira Lei de Kirchhoff, ou Lei dos Nós, afirma que a soma algébrica das correntes em qualquer nó de um circuito é igual a zero. Isso significa que a quantidade total de corrente elétrica que flui para um nó é igual à quantidade total de corrente que sai dele. Matematicamente, isso pode ser expresso como:

ou, de forma mais geral,

onde ��Ik​ representa a corrente da k-ésima conexão em um nó, com correntes entrando no nó tratadas como positivas e correntes saindo como negativas. Essa lei é uma consequência da conservação da carga elétrica.

2. Lei das Malhas (Lei das Tensões de Kirchhoff)

A Segunda Lei de Kirchhoff, ou Lei das Malhas, afirma que a soma algébrica das diferenças de potencial (tensões) em qualquer malha fechada do circuito é igual a zero. Isso significa que a soma das quedas de tensão (consumo de energia) é igual à soma das tensões fornecidas (fontes de energia) em uma malha. Em outras palavras, a energia total em um circuito fechado é conservada. Matematicamente, pode ser expressa como:

ou, de forma mais geral,

onde Vk​ representa a diferença de potencial (tensão) na k-ésima componente da malha, com tensões no sentido do percurso assumidas como positivas e tensões contra o percurso como negativas.

Essas duas leis juntas permitem a análise completa de circuitos elétricos complexos, possibilitando calcular correntes e tensões em diversas partes de um circuito.

IA
Trabalhando com Matriz de Confusão

Acurácia

Diz os acertos:

Soma-se os Verdadeiros Positivos + Verdadeiros Negativos dividido pelo total de itens

\[a = {{(VP + VN)} \over T} \]

onde:

a = acuracia

VP = Verdadeiro Positivo

VN = Verdadeiro Negativo

T = Total de itens

Erros

Calcula o percentual de erros na matriz de confusão

\[ e = {{FP + FN} \over T } \]

Onde:

e = Percentual de erro

FP = Falso Positivo

FN = Falso Negativo

T = Total

Sensibilidade (Sensivity) ou Repescagem (RECALL)

Onde é possível medir a sensibilidade ao acerto.

\[ pv = { VP \over {VP+FN }} \]

onde:

pv = Positivo Verdadeiro

VP = Verdadeiro Positivo

FN = Falso Negativo

Precisão ou Precision

Diz quanto da amostra os acertos realmente são eficientes

\[ p = { VP \over {VP + FP } } \]

Onde:

p = Precisão

VP = Verdadeiro Positivo

FP = Falso Positivo

Negativo Verdadeiros ou Especificidade (Specifity)

Diz dos Negativos, quantos foram corretamente classificados.

\[ nv = { VN \over { VN + FP} } \]

Onde:

nv = Especificidade

VN = Verdadeiro Negativo

FP = Falso Positivo

Erro do Tipo 1 ou Positivo Falso

Onde de todos os Negativos, quantos foram classificados incorretamente

\[ pf = { FP \over { VN + FP} } \]

Onde:

pf = Positivo Falso

FP = Falso Positivo

VN = Verdadeiro Negativo

FP = Falso Positivo

Negativos Falsos ou Erro do Tipo II

De todos os Positivos, quantos foram classificados incorretamente como Negativo

\[ nf = { FN \over { VP + FN} } \]

Onde:

nf = Negativos Falsos

FN = Falso Negativos

VP = Verdadeiros Positivos

FN = Falso Negativos

F1 Score

Maximiza os acertos, com relação a precisão, onde valores mais próximos ao 1 são desejados.

\[ F1 = {1 \over { {1 \over p} + {1 \over r}} } \]

Onde:

F1 = Score

p = Precisão ou Precision

r = Sensibilidade (Sensivity) ou Repescagem (RECALL)

Logarithmic Loss (Perda Logarítmica)

A perda logarítmica, também conhecida como log loss ou cross-entropy loss, é uma medida de desempenho usada em problemas de classificação, especialmente em classificações binárias e multiclasse. Essa métrica quantifica quão distantes estão as probabilidades previstas de um modelo em relação aos valores verdadeiros ou reais (0 ou 1). A ideia é penalizar não apenas as classificações incorretas, mas também a confiança errada nas previsões.

Para uma previsão perfeita, a perda logarítmica é 0, e ela aumenta à medida que a previsão se afasta do valor real. Um aspecto importante da perda logarítmica é que ela penaliza severamente as previsões que estão confiantemente erradas. Por exemplo, uma previsão errada com alta certeza (por exemplo, prever a probabilidade de uma classe como 0.9 quando a classe verdadeira é a outra) resultará em uma penalidade maior do que uma previsão errada com baixa certeza.

A fórmula para a perda logarítmica em classificação binária é dada por:

Receiver Operator Characteristic (ROC)

A Característica de Operação do Receptor (ROC, do inglês “Receiver Operating Characteristic”) é uma ferramenta utilizada para avaliar o desempenho de modelos de classificação binária. Ela é representada graficamente por uma curva que compara a taxa de verdadeiros positivos (sensibilidade) com a taxa de falsos positivos (1 – especificidade), para diferentes limiares de decisão.

A área sob a curva ROC (AUC, do inglês “Area Under the ROC Curve”) é um indicador da capacidade do modelo de discriminar entre as duas classes. Um valor de AUC igual a 1 indica um modelo perfeito, capaz de separar completamente as duas classes sem erros. Um valor de AUC igual a 0,5 sugere um desempenho não melhor do que o acaso, ou seja, o modelo não tem capacidade de discriminação entre as classes.

A curva ROC é particularmente útil porque permite a avaliação do desempenho do modelo em diferentes limiares, facilitando a escolha de um ponto de corte que equilibre entre a captura de verdadeiros positivos e a minimização de falsos positivos, de acordo com o contexto e os custos associados a cada tipo de erro.

AUC – Area Under Curve

AUC, que significa “Área Sob a Curva”, é um termo amplamente utilizado em análise de dados e machine learning, especialmente quando se refere à Curva ROC (Característica de Operação do Receptor). A AUC é uma métrica que quantifica o desempenho geral de um modelo de classificação, independentemente do limiar de decisão aplicado.

Características Principais da AUC

  • Avaliação de Desempenho: A AUC mede a capacidade do modelo de discriminar entre classes positivas e negativas. Um modelo com uma AUC de 1.0 é considerado perfeito, capaz de separar perfeitamente as duas classes. Um modelo com uma AUC de 0.5 não tem capacidade de discriminação, equivalente a um palpite aleatório.
  • Independente do Limiar: A AUC é particularmente útil porque é independente do ponto de corte escolhido. Isso significa que ela fornece uma medida do desempenho do modelo que não é afetada pela seleção de um limiar específico para a classificação de positivos e negativos.
  • Comparação de Modelos: A AUC permite comparar o desempenho de diferentes modelos de classificação diretamente. Um modelo com uma AUC maior é geralmente considerado melhor na discriminação das classes.
  • Aplicável em Diversos Contextos: Embora frequentemente associada à Curva ROC, o conceito de AUC pode ser aplicado a outras curvas, como a Curva Precision-Recall, especialmente em contextos onde as classes são muito desbalanceadas.

Limitações

  • Não Capta Todas as Dimensões de Desempenho: Embora a AUC forneça uma medida útil do desempenho geral de um modelo, ela não captura todas as nuances, como o equilíbrio entre sensibilidade e especificidade ou a precisão das previsões positivas (precisão).
  • Desbalanceamento de Classes: Em situações com desbalanceamento acentuado de classes, a AUC pode ser enganosa, sugerindo um desempenho melhor do que o modelo realmente apresenta, especialmente se a preocupação é com a precisão da classificação da classe minoritária.

Conclusão

A AUC é uma métrica valiosa para avaliar e comparar modelos de classificação, oferecendo uma visão geral da capacidade do modelo de discriminar entre classes. Contudo, é importante considerá-la junto a outras métricas para obter uma avaliação completa do desempenho do modelo.

IA NLP
Spacy trabalhando com Matcher

Uso da biblioteca spacy para pesquisa de caracteres usando matcher.

#!pip install spacy
import spacy
import spacy.util
from spacy.matcher import Matcher
# Verifica se o modelo 'pt_core_news_sm' está instalado
if not spacy.util.is_package("pt_core_news_sm"):
    # Se não estiver instalado, baixa o modelo
    !python -m spacy download pt_core_news_sm
else:
    print("Modelo 'pt_core_news_sm' já está instalado.")

# Carrega o modelo de linguagem do spaCy
nlp = spacy.load("pt_core_news_sm")

# Cria o objeto Matcher e o vincula ao vocabulário do modelo de linguagem
matcher = Matcher(nlp.vocab)

def ContarOcorrenciasPalavra(palavra, lista_textos):
    # Ajusta a palavra para lowercase
    palavra = palavra.lower()
    
    total_ocorrencias = 0

   
    # Define o padrão para procurar a palavra, considerando a correspondência de texto exato em lowercase
    pattern = [{"TEXT": palavra}]
    matcher.add("PADRAO", [pattern])

    # Converte o texto para lowercase e processa com o spaCy
    doc = nlp(lista_textos.lower())
    matches = matcher(doc)
        
    # Para cada correspondência encontrada, imprime detalhes
    for match_id, start, end in matches:
            matched_span = lista_textos[start:end]
            print(f"Achou no Texto: {lista_textos}; Palavra: '{matched_span}' na POS: {start} até {end}")
            
            total_ocorrencias += 1

    return total_ocorrencias

textos = ["Neste exemplo de caso de uso.", "São exemplos de figura de linguagem aplicadas ao exemplo.", "Este exemplo possui um erro semantico.", "Tal qual o exemplo a seguir."]
for texto in textos:
    print("Texto:"+texto)
    ContarOcorrenciasPalavra("exemplo",texto)
    ContarOcorrenciasPalavra("uso",texto)
    ContarOcorrenciasPalavra("figura",texto)
    ContarOcorrenciasPalavra("aplicadas",texto)

Saída do programa ao rodar

Texto:Neste exemplo de caso de uso.
Achou no Texto: Neste exemplo de caso de uso.; Palavra: 'e' na POS: 1 até 2
Achou no Texto: Neste exemplo de caso de uso.; Palavra: 'e' na POS: 1 até 2
Achou no Texto: Neste exemplo de caso de uso.; Palavra: ' ' na POS: 5 até 6
Achou no Texto: Neste exemplo de caso de uso.; Palavra: 'e' na POS: 1 até 2
Achou no Texto: Neste exemplo de caso de uso.; Palavra: ' ' na POS: 5 até 6
Achou no Texto: Neste exemplo de caso de uso.; Palavra: 'e' na POS: 1 até 2
Achou no Texto: Neste exemplo de caso de uso.; Palavra: ' ' na POS: 5 até 6
Texto:São exemplos de figura de linguagem aplicadas ao exemplo.
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: ' ' na POS: 3 até 4
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: 'e' na POS: 6 até 7
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: 'p' na POS: 8 até 9
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: ' ' na POS: 3 até 4
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: 'e' na POS: 6 até 7
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: 'p' na POS: 8 até 9
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: ' ' na POS: 3 até 4
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: 'e' na POS: 6 até 7
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: 'p' na POS: 8 até 9
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: ' ' na POS: 3 até 4
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: 'e' na POS: 6 até 7
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: 'p' na POS: 8 até 9
Texto:Este exemplo possui um erro semantico.
Achou no Texto: Este exemplo possui um erro semantico.; Palavra: 's' na POS: 1 até 2
Achou no Texto: Este exemplo possui um erro semantico.; Palavra: 's' na POS: 1 até 2
Achou no Texto: Este exemplo possui um erro semantico.; Palavra: 's' na POS: 1 até 2
Achou no Texto: Este exemplo possui um erro semantico.; Palavra: 's' na POS: 1 até 2
Texto:Tal qual o exemplo a seguir.
Achou no Texto: Tal qual o exemplo a seguir.; Palavra: ' ' na POS: 3 até 4
Achou no Texto: Tal qual o exemplo a seguir.; Palavra: ' ' na POS: 3 até 4
Achou no Texto: Tal qual o exemplo a seguir.; Palavra: ' ' na POS: 3 até 4
Achou no Texto: Tal qual o exemplo a seguir.; Palavra: ' ' na POS: 3 até 4
Sem categoria
Processamento de Sinais – Aula 2

Prof. Raphael Lopes Pinheiro raphael.pinheiro01@fatec.sp.gov.br

raphael.pinheiro@usp.br

Atividade de Processamento de Sinais.

Segue o código do projeto complementar

texto = 'A caixa 1 é azul, A caixa 2 é verde e caixa 3 é vermelha'
print(texto.replace('caixa','lata'))

Exercício 2.1 –

Escreva um programa que receba o salário de um funcionário (float), e retorne o resultado do novo salário com reajuste de 35%.

def calcular_novo_salario(salario):
    reajuste = salario * 0.35
    novo_salario = salario + reajuste
    return novo_salario

def main():
    salario = float(input("Digite o salário do funcionário: "))
    novo_salario = calcular_novo_salario(salario)
    print(f"O novo salário com reajuste de 35% é: R$ {novo_salario:.2f}")

if __name__ == "__main__":
    main()

Sem categoria
Elem. de Precisão I – Revisão de física

Revisão de trigonometria.

Revisão de estudo de força

Lei dos cosenos

A Lei dos Cossenos é uma importante fórmula usada na trigonometria para estabelecer uma relação entre os lados de um triângulo e o cosseno de um de seus ângulos. Essencialmente, ela permite calcular um lado de um triângulo quando conhecemos os outros dois lados e um ângulo, ou calcular um ângulo quando conhecemos todos os três lados. A Lei dos Cossenos é particularmente útil para triângulos que não são retângulos, onde o Teorema de Pitágoras não se aplica.

A fórmula da Lei dos Cossenos é expressa da seguinte forma:

�2=�2+�2−2��cos⁡(�)c2=a2+b2−2abcos(C)

Nesta equação:

  • c representa o comprimento do lado do triângulo oposto ao ângulo C.
  • a e b são os comprimentos dos outros dois lados.
  • cos(C) é o cosseno do ângulo oposto ao lado c.

A Lei dos Cossenos pode ser reorganizada para resolver diferentes tipos de problemas, como encontrar o ângulo C quando os três lados são conhecidos:

cos(C)=2aba2+b2−c2​

Esta lei é uma generalização do Teorema de Pitágoras. De fato, quando o ângulo C é um ângulo reto (90 graus), o cos(C) é 0, e a fórmula se reduz ao bem conhecido .

A Lei dos Cossenos é aplicável em muitos contextos diferentes, desde a resolução de problemas puramente geométricos até aplicações mais práticas em física, engenharia e navegação, permitindo calcular distâncias indiretas e ângulos quando a medição direta não é possível.

Fundamentos de Fisiologia Humana
Sistema Digestório

Processos associados

  • Apreensão
  • Mastigação
  • Deglutição
  • Absorção

Escreta – Algo tóxico produzido ou derivado do processo metabólico.

Digestão mecânica (Mastigação , deglutição e peristaltismo)

Digestão Química (Hidrolise enzimática das moléculas de alimento)

Lumem – Espaço transitório

Boca

PH aproximadamente 7.2

Umedece e amolece, principalmente a enzima amilase salivar. (ptialina)

Estômago

PH acido 2

Enzima pepsina (pepsinogênio – inativa) – Ativado pelo acido cloridrico.

Refluxo gástrico

Intestino delgado

Responsável pela digestão

Pancreatite

Pancreatite e Pedra na vesícula

Proteínas sistema circulatório

lipídios – Sistema linfático.

Intestino grosso, absorção de agua e eletrólito (sais minerais)

MNote2 srvFalar
MNote 2.32

Fechamos a versão 2.31 e demos inicio a versão 2.32.

Na versão 2.31 foram feitos as seguintes mudanças:

  • Melhora no tratamento das janelas
  • Correções no CHATGPT e uso da API
  • Correções no MQUERY para Windows
  • Criação de gráficos a partir dos datasets de select
  • Exportação para JSON e CSV dos datasets
  • Importação de CSV de dados para Mysql
  • Sintetização de vóz para windows e Linux.
  • Inicio da integração da ferramenta de criação de treinamento de redes neurais
  • srvFalar associado ao projeto MNote

Estas modificações já estão disponíveis em Windows e Linux, e em breve atualizadas na versão ARM.

Sintetização de Voz

Apresentação de melhorias na versão 2.31 usando o chatgpt.

Criação de Gráficos

Criação de gráficos no MNote2

ESPEAK MNote2 srvFalar
srvFalar para windows

Depois de algum tempo lançamos a primeira versão pré beta do srvFalar para windows.

Nessa feature desenvolvemos a aplicação amarrada ao eSpeak, porem ainda não a lib.

Foi desenvolvido a função Ler usando eSpeak integrada a LIB, e a biblioteca SAPI do windows, nativa para do próprio windows.

Para quem não conhece o srvFalar, se trata de um serviço de sintetização de voz, que permite sintetizar voz através de socket.

Estaremos disponibilizando tambem recurso para web api em breve.

GitHub – marcelomaurin/srvFalar

MNote2
MNote2 – Correções

Foram incorporados correções na versão Linux, permitindo a sintetização de voz, para isso foi utilizado outro projeto o srvFalar.

Com o serviço ativo, é possível sintetizar ao usar o chatgpt.

Para usar essa feature é necessário instalar o serviço srvFalar e em seguida ir em configurações e ativar o ToolsFalar.

Para instalar no linux o sintetizador, na pasta bin do git voce vai encontrar o serviço:

sudo apt install srvfalar-1.2_amd64.deb

Instalação do serviço de sintetização de voz

Agora instale o mnote no seu linux.

Vá no menu Script > config

Ao abrir a tela de config, selecione a aba ToolsFalar

Marque o Speak – Tools Falar, click em salvar.

Agora é necessário ativar o serviço de fala.

sudo systemctl start srvfalar

Ativando o serviço de sintetização

Agora podemos confirmar que o serviço esta disponível, fazendo o seguinte comando.

ps -A |grep -e srvfalar

Verificação de sintetização de voz

Agora basta perguntar ao chatgpt no seu mnote2.

Lembre-se que é necessário atribuir permissões especiais tanto para o serviço como ao chatgpt para socket e alsa devices. Em breve disponibilizarei os procedimentos para isso.

Tambem é necessário possuir token de acesso pago ao chatgpt.

Desenvolvimento de Software
Integração do Chatgpt e Lazarus: Desenvolvendo Soluções Robustas e Amigáveis

A integração do Chatgpt junto com Lazarus em aplicações Desktop pode ser uma excelente maneira de utilizar a inteligência artificial para desenvolver soluções mais robustas e amigáveis. Neste artigo, vamos apresentar tanto o uso da ferramenta de integração desenvolvida pelo autor (disponível em https://github.com/marcelomaurin/CHATGPT), quanto um exemplo prático de aplicação no MNote2, onde a IA é utilizada tanto na formatação de SQL, como no auxílio e validação de queries de pesquisa, além de garantir a consistência dos códigos desenvolvidos.

A utilização do Chatgpt em conjunto com Lazarus traz diversos benefícios tanto para os desenvolvedores quanto para os usuários finais.

Uma das principais vantagens é a capacidade de evitar erros e permitir ajustes e aferições durante o processo de uso das ferramentas.

Vamos analisar inicialmente o uso no MNote2, nele, a IA pode consistir tabelas, ajustando tanto estéticamente como sintaticamente, querys complexas, permitindo que o analista desenvolva de forma mais rápida e intuitiva.

Neste exemplo vemos o MNote2 que a IA, ajustou o layout de um SQL, permitindo que o mesmo seja analisado.

Os próximos passos, é fornecer previamente as tabelas referenciadas, para que a IA possa com isso fazer a prévia amarração das querys através de seus Joins.

MNote2 – 2.31

Exemplo de projeto em desenvolvimento com IA integrada.

Com a IA integrada, é possível contar com um assistente virtual que auxilia na confecção correta de queries SQL, evitando erros comuns e garantindo que as pesquisas sejam realizadas de maneira eficiente.

Além disso, a integração do Chatgpt com Lazarus permite a validação de queries de pesquisa, garantindo que elas estejam corretas e retornem os resultados desejados. O assistente virtual pode analisar a estrutura da query e verificar se os parâmetros estão corretos, evitando consultas inválidas e economizando tempo do desenvolvedor.

Outro ponto importante é a consistência dos códigos desenvolvidos. Com a IA auxiliando no processo de desenvolvimento, é possível manter um padrão de código mais uniforme e evitar erros comuns. O assistente virtual pode identificar possíveis problemas e sugerir correções, garantindo que o código final seja mais legível, fácil de dar manutenção e menos propenso a erros.

No exemplo prático do MNote2, a integração do Chatgpt com Lazarus é utilizada para auxiliar tanto na formatação de SQL quanto na validação de queries de pesquisa. Com a ajuda do assistente virtual, os desenvolvedores podem escrever queries de maneira mais eficiente e garantir que elas estejam corretas antes de executá-las. Isso resulta em um processo de desenvolvimento mais ágil e menos propenso a erros.

Sistemas de ERP e CRM, porem se beneficiar muito, através de sistemas de sugestão, analisando padrões de comportamento do software e sugerindo mudanças, para evitar problemas logisticos ou de processos.

Em resumo, a integração do Chatgpt com Lazarus em aplicações Desktop oferece uma maneira eficiente e inteligente de desenvolver soluções mais robustas e amigáveis. A utilização da IA traz benefícios como a formatação correta de SQL, a validação de queries de pesquisa e a consistência dos códigos desenvolvidos. Esses aspectos agregam valor tanto para os desenvolvedores, que podem contar com um assistente virtual durante o processo de desenvolvimento, quanto para os usuários finais, que se beneficiam de soluções mais eficientes e menos propensas a erros.

maurinsoft.com.br