Package: progbr
progbrA biblioteca AnyBoMath (progbr) e uma biblioteca para facilitar sua jornada em matematica, fornecendo diversas funcoes matematicas e ferramentas uteis.InstalacaoVocê pode instalar a biblioteca usando o pip:pip install progbrFuncoes DisponiveisAqui estao algumas das funcoes disponiveis na biblioteca:Funcao para Imprimirimportprogbrprogbr.printar("Ola, Mundo!")Funcao para Calcular o Fatorialimportprogbrresultado=progbr.fatorial(5)print(resultado)# Saida: 120Funcao para Calcular a Potênciaimportprogbrresultado=progbr.potencia(2,3)print(resultado)# Saida: 8Funcao para Calcular o Maximoimportprogbrresultado=progbr.valor_maximo(10,5,8,12)print(resultado)# Saida: 12Funcao para Calcular o Minimoimportprogbrresultado=progbr.valor_minimo(10,5,8,12)print(resultado)# Saida: 5Funcao para Calcular a Raiz Quadradaimportprogbrresultado=progbr.raiz_quadrada(16)print(resultado)# Saida: 4.0Funcao para Calcular a Exponencialimportprogbrresultado=progbr.exponencial(2)print(resultado)# Saida: 7.3890560989306495Funcao para Calcular o Valor de π (Pi)importprogbrresultado=progbr.PI()print(resultado)# Saida: 3.141592653589793Funcao para Calcular o Logaritmo Naturalimportprogbrresultado=progbr.logaritmo_natural(2)print(resultado)# Saida: 0.6931471805599453Funcao para Calcular o Valor Absolutoimportprogbrresultado=progbr.modulo(-5)print(resultado)# Saida: 5Funcao para Calcular o Logaritmo na Base 2importprogbrresultado=progbr.logaritmo_base2(8)print(resultado)# Saida: 3.0Funcao para Calcular o Piso de um Numeroimportprogbrresultado=progbr.piso(3.7)print(resultado)# Saida: 3Funcao para Arredondar um Numeroimportprogbrresultado=progbr.arredondamento(4.8)print(resultado)# Saida: 5Funcao para Calcular o Teto de um Numeroimportprogbrresultado=progbr.teto_do_numero(5.2)print(resultado)# Saida: 6ClasseEsperaA classeEsperafornece metodos para adicionar pausas ou atrasos em execucoes de codigo. Isso pode ser util quando você deseja adicionar atrasos entre a execucao de determinadas tarefas ou quando precisa esperar um certo periodo de tempo antes de prosseguir.Metodoespera_simportprogbr# Pausa por 5 segundosprogbr.Espera.espera_s(5)Metodoespera_mimportprogbr# Pausa por 3 minutosprogbr.Espera.espera_m(3)Metodoespera_himportprogbr# Pausa por 1 horaprogbr.Espera.espera_h(1)Metodoespera_dimportprogbr# Pausa por 2 diasprogbr.Espera.espera_d(2)Metodoespera_me28importprogbr# Pausa por 28 dias (aproximadamente 4 semanas)progbr.Espera.espera_me28(1)Metodoespera_me29importprogbr# Pausa por 29 dias (aproximadamente 4 semanas e 1 dia)progbr.Espera.espera_me29(1)Metodoespera_me30importprogbr# Pausa por 30 dias (aproximadamente 1 mês)progbr.Espera.espera_me30(1)Metodoespera_me31importprogbr# Pausa por 31 dias (aproximadamente 1 mês e 1 dia)progbr.Espera.espera_me31(1)Metodoespera_tr30importprogbr# Pausa por 90 dias (aproximadamente 3 meses)progbr.Espera.espera_tr30(1)Metodoespera_tr31importprogbr# Pausa por 93 dias (aproximadamente 3 meses e 1 dia)progbr.Espera.espera_tr31(1)Metodoespera_semimportprogbr# Pausa por 1 semana (aproximadamente 7 dias)progbr.Espera.espera_sem(1)Metodoespera_ano365importprogbr# Pausa por 1 ano (365 dias)progbr.Espera.espera_ano365(1)Metodoespera_ano366importprogbr# Pausa por 1 ano bissexto (366 dias)progbr.Espera.espera_ano366(1)Metodoespera_dec365importprogbr# Pausa por 10 anos (3650 dias)progbr.Espera.espera_dec365(1)Metodoespera_dec366importprogbr# Pausa por 10 anos bissextos (3652 dias)progbr.Espera.espera_dec366(1)Metodomilisegimportprogbr# Pausa por 500 milissegundos (0,5 segundos)progbr.Espera.miliseg(500)Metodoesperar_e_desligar_mimportprogbr# Espera 5 minutos e desliga o computadorprogbr.Espera.esperar_e_desligar_m(5)Metodoesperar_e_desligar_simportprogbr# Espera 10 segundos e desliga o computadorprogbr.Espera.esperar_e_desligar_s(10)Metodoesperar_e_reiniciar_mimportprogbr# Espera 5 minutos e reinicia o computadorprogbr.Espera.esperar_e_reiniciar_m(5)Metodoesperar_e_reiniciar_simportprogbr# Espera 10 segundos e reinicia o computadorprogbr.Espera.esperar_e_reiniciar_s(10)Metodosuspender_computadorimportprogbrprogbr.Espera.suspender_computadorClasse Aleator (Aleator)A classeAleatorfornece metodos para gerar numeros aleatorios e fazer escolhas aleatorias em uma lista.Metodoalea_inteiro_a_bimportprogbr# Gera um numero inteiro aleatorio entre a e b (inclusive)numero_aleatorio=progbr.Aleator.alea_inteiro_a_b(a,b)Metodoalea_inteiro_aimportprogbr# Gera um numero inteiro aleatorio entre 0 e a (exclusive)numero_aleatorio=progbr.Aleator.alea_inteiro_a(a)Metodoaleaimportprogbr# Gera um numero decimal aleatorio entre 0 e 1 (exclusive)numero_aleatorio=progbr.Aleator.alea()Metodoalea_numimportprogbr# Gera um numero decimal aleatorio seguindo uma distribuicao normal (media 0 e desvio padrao 1)numero_aleatorio=progbr.Aleator.alea_num()Metodoescolheimportprogbr# Escolhe um elemento aleatorio da lista de opcoesescolha_aleatoria=progbr.Aleator.escolhe(lista_de_opcoes)Classe Grafico (Grafico)A classeGraficofornece metodos para criar diferentes tipos de graficos usando a biblioteca Matplotlib.Metodografico_barraimportprogbr# Cria um grafico de barrasprogbr.Grafico.grafico_barra(x,y,eixox,eixoy,titulo,cor,legenda,tamanho_d_figura,salvar_como,xlimite,ylimite)Metodografico_dispersaoimportprogbr# Cria um grafico de dispersaoprogbr.Grafico.grafico_dispersao(x,y,eixox,eixoy,titulo,cor,marcador,tamanho_d_figura,salvar_como,xlimite,ylimite)Metodografico_pizzaimportprogbr# Cria um grafico de pizzaprogbr.Grafico.grafico_pizza(dados,tamanhos,titulo,cor,destaca,tamanho_d_figura,salvar_como)Metodografico_linhasimportprogbr# Cria um grafico de linhasprogbr.Grafico.grafico_linhas(x,y,titulo,eixox,eixoy,tamanho_d_figura,salvar_como)Metodografico_areaimportprogbr# Cria um grafico de areaprogbr.Grafico.grafico_area(x,y,titulo,eixox,eixoy,tamanho_d_figura,salvar_como)Metodografico_histogramaimportprogbr# Cria um histogramaprogbr.Grafico.grafico_histograma(valores,titulo,eixox,eixoy,tamanho_d_figura,salvar_como)Metodografico_boxplotimportprogbr# Cria um grafico de boxplotprogbr.Grafico.grafico_boxplot(dados,titulo,eixox,tamanho_d_figura,salvar_como)Metodosurface_plotimportprogbr# Cria um grafico de superficie 3Dprogbr.Grafico.surface_plot(x,y,z,titulo,eixox,eixoy,eixoz,tamanho_d_figura,salvar_como)Metodografico_contornoimportprogbr# Cria um grafico de contornoprogbr.Grafico.grafico_contorno(x,y,z,titulo,eixox,eixoy,tamanho_d_figura,salvar_como)Metodografico_polarimportprogbr# Cria um grafico polarprogbr.Grafico.grafico_polar(angulos,valores,titulo,tamanho_d_figura,salvar_como)A classeEquacaopossui métodos para resolver e explicar equações de primeiro e segundo grau.MétodoequacaoPrimeiroGrauEx(ouepgEx)Este método resolve e explica uma equação de primeiro grau na forma ax + b = c. Ele retorna a solução da equação e uma explicação passo a passo de como chegou a essa solução.Exemplo de uso:fromprogbrimportEquacaoresultado=Equacao.equacaoPrimeiroGrauEx(2,3,9)print(resultado)Saída:2x + 3 = 9  (x: 3.0), --EXPLICAÇÃO--, 2x + 3 = 9, 3 vai trocar de lado e vai no lado do 9, mais vai trocar de sinal, vai ficar 2x = 9 - (3), 2x = 6, x = 6/2, x = 3.0MétodoequacaoSegundoGrauEx(ouesgEx)Este método resolve e explica uma equação de segundo grau na forma ax^2 + bx + c = 0. Ele retorna as raízes reais da equação e uma explicação passo a passo de como chegou a essas raízes.Exemplo de uso:fromprogbrimportEquacaoresultado=Equacao.equacaoSegundoGrauEx(1,-5,6)print(resultado)Saída:A equação 1x² - 5x + 6 = 0 possui duas raízes reais:, x1 = 3.0, x2 = 2.0  --EXPLICAÇÃO--, delta = -5² - 4 * 1 * 6, Se delta < 0, a equação não possui raízes reais, Senão, as raízes são:, x = -5 / (2 * 1), x1 = (-5 + √1) / (2 * 1), x2 = (-5 - √1) / (2 * 1), x1 = 3.0, x2 = 2.0MétodoequacaoPrimeiroGrau(ouepg)Este método resolve uma equação de primeiro grau na forma ax + b = c e retorna a solução.Exemplo de uso:fromprogbrimportEquacaoresultado=Equacao.equacaoPrimeiroGrau(2,3,9)print(resultado)Saída:3.0MétodoequacaoSegundoGrau(ouesg)Este método resolve uma equação de segundo grau na forma ax^2 + bx + c = 0 e retorna as raízes reais.Exemplo de uso:fromprogbrimportEquacaoresultado=Equacao.equacaoSegundoGrau(1,-5,6)print(resultado)Saída:A equação possui duas raízes reais: x1 = 3.0, x2 = 2.0Observe que as funções com o sufixo "Ex" fornecem uma explicação detalhada do passo a passo da resolução, enquanto as funções sem esse sufixo retornam apenas a solução ou as raízes.Classes de Sistema OperacionalA classeSOfornece métodos para interagir com o sistema operacional, como manipulação de arquivos e diretórios, obter informações sobre a plataforma e outras funcionalidades relacionadas ao sistema.Métododiretorio_atualEste método retorna o diretório atual do sistema operacional.Exemplo de uso:diretorio_atual=SO.diretorio_atual()print(diretorio_atual)Saída:(/caminho/do/diretorio)Métodolista_arq_dirEste método lista os arquivos e diretórios presentes em um determinado caminho.Exemplo de uso:conteudo_caminho=SO.lista_arq_dir('/caminho/do/diretorio')print(conteudo_caminho)Saída:['arquivo1.txt', 'arquivo2.txt', 'diretorio1', 'diretorio2']Métodocriar_diretorioEste método cria um novo diretório com o nome fornecido.Exemplo de uso:SO.criar_diretorio('novo_diretorio')Métodoremover_arqEste método remove um arquivo do sistema.Exemplo de uso:SO.remover_arq('arquivo.txt')Métodoremover_dirEste método remove um diretório do sistema.Exemplo de uso:SO.remover_dir('diretorio')Métodoremover_dir_tdEste método remove um diretório e todo o seu conteúdo (subdiretórios e arquivos) do sistema.Exemplo de uso:SO.remover_dir_td('diretorio')Métodoeh_arquivoEste método verifica se o caminho fornecido corresponde a um arquivo.Exemplo de uso:resultado=SO.eh_arquivo('arquivo.txt')print(resultado)Saída:'arquivo.txt' É um arquivoMétodoeh_diretorioEste método verifica se o caminho fornecido corresponde a um diretório.Exemplo de uso:resultado=SO.eh_diretorio('diretorio')print(resultado)Saída:'diretorio' É um diretórioMétodoversao_pythonEste método retorna a versão do Python instalada no sistema.Exemplo de uso:versao=SO.versao_python()print(versao)Saída:Versão: 3.8.5Métodosistema_operacionalEste método retorna o nome do sistema operacional em que o código está sendo executado.Exemplo de uso:sistema=SO.sistema_operacional()print(sistema)Saída:LinuxMétodoplataformaEste método retorna informações detalhadas sobre a plataforma em que o código está sendo executado.Exemplo de uso:plataforma=SO.plataforma()print(plataforma)Saída:plataforma: ['L', 'i', 'n', 'u', 'x']Métodoexiste_arq_dirEste método verifica se um arquivo ou diretório existe no sistema.Exemplo de uso:resultado=SO.existe_arq_dir('arquivo.txt')print(resultado)Saída:Este Arquivo existeMétodomover_arq_dirEste método move um arquivo para um diretório específico.Exemplo de uso:resultado=SO.mover_arq_dir('arquivo.txt','destino')print(resultado)Saída:O Arquivo 'arquivo.txt' Foi movido pelo diretorio 'destino'Métodomostra_arq_direEste método exibe o conteúdo do diretório atual no sistema operacional. (No Windows, exibe o comandodir, no Linux exibe o comandols).Exemplo de uso:SO.mostra_arq_dire()(Será exibido o conteúdo do diretório atual no terminal ou prompt de comando)Métodocriar_arquivoEste método cria um novo arquivo com o nome fornecido e insere o conteúdo especificado.Exemplo de uso:SO.criar_arquivo('novo_arquivo.txt','Este é o conteúdo do arquivo.')Métodoadicionar_conteudo_arquivoEste método adiciona conteúdo a um arquivo existente.Exemplo de uso:SO.adicionar_conteudo_arquivo('arquivo_existente.txt','Este é o novo conteúdo do arquivo.')Métodoler_arquivoEste método lê o conteúdo de um arquivo e retorna como uma string.Exemplo de uso:conteudo=SO.ler_arquivo('arquivo.txt')print(conteudo)Métodoler_arquivo_linhas_listaEste método lê o conteúdo de um arquivo e retorna uma lista de linhas.Exemplo de uso:linhas=SO.ler_arquivo_linhas_lista('arquivo.txt')print(linhas)Métodoler_arquivo_linha_por_linhaEste método lê o conteúdo de um arquivo e imprime linha por linha no terminal.Exemplo de uso:SO.ler_arquivo_linha_por_linha('arquivo.txt')Métodoabrir_arquivoEste método abre um arquivo no sistema usando o programa padrão associado a esse tipo de arquivo.Exemplo de uso:SO.abrir_arquivo('documento.txt')Métodopesquisa_arqEste método pesquisa por arquivos com uma determinada extensão no diretório atual e retorna uma lista com os nomes dos arquivos encontrados.Exemplo de uso:arquivos_txt=SO.pesquisa_arq('txt')print(arquivos_txt)Métodoremover_td_arqEste método remove todos os arquivos com uma determinada extensão no diretório atual.Exemplo de uso:SO.remover_td_arq('txt')Métododiretorio_ctssdEste método copia todo o conteúdo de um diretório (incluindo subdiretórios e arquivos) para outro diretório de destino.Exemplo de uso:SO.diretorio_ctssd('/caminho/do/diretorio_origem','/caminho/do/diretorio_destino')Certifique-se de que tenha permissões suficientes no sistema para executar algumas dessas operações que envolvem criação, remoção ou movimentação de arquivos e diretórios.Classe TrigonometriaA classeTrigonometriacontem metodos para calcular funcoes trigonometricas e hiperbolicas, bem como arco trigonometrico.Metodosenoimportprogbr# Calcula o seno de um ângulo em radianosresultado=progbr.Trigonometria.seno(angle)print(resultado)Metodocossenoimportprogbr# Calcula o cosseno de um ângulo em radianosresultado=progbr.Trigonometria.cosseno(angle)print(resultado)Metodotangenteimportprogbr# Calcula a tangente de um ângulo em radianosresultado=progbr.Trigonometria.tangente(angle)print(resultado)Metodocosseno_hiperbolicoimportprogbr# Calcula o cosseno hiperbolico de um numeroresultado=progbr.Trigonometria.cosseno_hiperbolico(num)print(resultado)Metodoseno_hiperbolicoimportprogbr# Calcula o seno hiperbolico de um numeroresultado=progbr.Trigonometria.seno_hiperbolico(num)print(resultado)Metodotangente_hiperbolicaimportprogbr# Calcula a tangente hiperbolica de um numeroresultado=progbr.Trigonometria.tangente_hiperbolica(num)print(resultado)Metodoarco_cossenoimportprogbr# Calcula o arco cosseno de um numeroresultado=progbr.Trigonometria.arco_cosseno(num)print(resultado)Metodoarco_senoimportprogbr# Calcula o arco seno de um numeroresultado=progbr.Trigonometria.arco_seno(num)print(resultado)Metodoarco_tangenteimportprogbr# Calcula o arco tangente de um numeroresultado=progbr.Trigonometria.arco_tangente(num)print(resultado)Metodoarco_tangente2importprogbr# Calcula o arco tangente de um numero com dois argumentos (y, x)resultado=progbr.Trigonometria.arco_tangente2(y,x)print(resultado)Classe EstatisticaA classeEstatisticacontem metodos para realizar calculos estatisticos.Metodomediaimportprogbr# Calcula a media dos valores fornecidos como argumentosresultado=progbr.Estatistica.media(*args)print(resultado)Metodomedianaimportprogbr# Calcula a mediana dos valores fornecidos como argumentosresultado=progbr.Estatistica.mediana(*args)print(resultado)Metodomodaimportprogbr# Calcula a moda dos valores fornecidos como argumentosresultado=progbr.Estatistica.moda(*args)print(resultado)Metododesvio_padraoimportprogbr# Calcula o desvio padrao dos valores fornecidos como argumentosresultado=progbr.Estatistica.desvio_padrao(*args)print(resultado)Metododesvio_medioimportprogbr# Calcula o desvio medio dos valores fornecidos como argumentosresultado=progbr.Estatistica.desvio_medio(*args)print(resultado)Metodovarianciaimportprogbr# Calcula a variância dos valores fornecidos como argumentosresultado=progbr.Estatistica.variancia(*args)print(resultado)Metodocompararimportprogbr# Compara duas listas de valores e retorna a diferenca mediaresultado=progbr.Estatistica.comparar(a,b)print(resultado)Metodomedia_ponderadaimportprogbr# Calcula a media ponderada dos valores fornecidos e seus respectivos pesosresultado=progbr.Estatistica.media_ponderada(valores,pesos)print(resultado)Metodomedia_geometricaimportprogbr# Calcula a media geometrica dos valores fornecidos como argumentosresultado=progbr.Estatistica.media_geometrica(*args)print(resultado)Metodomedia_quadraticaimportprogbr# Calcula a media quadratica dos valores fornecidos como argumentosresultado=progbr.Estatistica.media_quadratica(*args)print(resultado)Metodointervalo_medioimportprogbr# Calcula o intervalo medio dos valores fornecidos como argumentosresultado=progbr.Estatistica.intervalo_medio(*args)print(resultado)Metodointervalo_medio_entre_dois_numerosimportprogbr# Calcula o intervalo medio entre dois numeros fornecidos como argumentosresultado=progbr.Estatistica.intervalo_medio_entre_dois_numeros(a,b)print(resultado)Metodoamplitudeimportprogbr# Calcula a amplitude dos valores fornecidos como argumentosresultado=progbr.Estatistica.amplitude(*args)print(resultado)Metodoquartisimportprogbr# Calcula os quartis dos valores fornecidos como argumentosresultado=progbr.Estatistica.quartis(*args)print(resultado)Metodoamplitude_interquartilimportprogbr# Calcula a amplitude interquartil dos valores fornecidos como argumentosresultado=progbr.Estatistica.amplitude_interquartil(*args)print(resultado)Metodocoeficiente_correlacaoimportprogbr# Calcula o coeficiente de correlacao entre duas listas de valores (x, y)resultado=progbr.Estatistica.coeficiente_correlacao(x,y)print(resultado)Metodoregressao_linearimportprogbr# Realiza a regressao linear entre duas listas de valores (x, y) e retorna os coeficientes (a, b)resultado=progbr.Estatistica.regressao_linear(x,y)print(resultado)Metodocoeficiente_variacaoimportprogbr# Calcula o coeficiente de variacao dos valores fornecidos como argumentosresultado=progbr.Estatistica.coeficiente_variacao(*args)print(resultado)Metodomedia_harmonicaimportprogbr# Calcula a media harmônica dos valores fornecidos como argumentosresultado=progbr.Estatistica.media_harmonica(*args)print(resultado)Metododistribuicao_frequenciaimportprogbr# Calcula a distribuicao de frequência para os dados fornecidosresultado=progbr.Estatistica.distribuicao_frequencia(dados,num_classes)print(resultado)Metodointervalo_confiancaimportprogbr# Calcula o intervalo de confianca dos dados fornecidos e nivel de confianca especificadoresultado=progbr.Estatistica.intervalo_confianca(dados,nivel_confianca)print(resultado)Metodocoeficiente_assimetriaimportprogbr# Calcula o coeficiente de assimetria dos valores fornecidos como argumentosresultado=progbr.Estatistica.coeficiente_assimetria(*args)print(resultado)Metodocurtoseimportprogbr# Calcula a curtose dos valores fornecidos como argumentosresultado=progbr.Estatistica.curtose(*args)print(resultado)Metodocoeficiente_correlacao_pearsonimportprogbr# Calcula o coeficiente de correlacao de Pearson entre duas listas de valores (x, y)resultado=progbr.Estatistica.coeficiente_correlacao_pearson(x,y)print(resultado)Metodoteste_timportprogbr# Realiza o teste t entre duas amostras e retorna o valor de tresultado=progbr.Estatistica.teste_t(amostra1,amostra2)print(resultado)Metodoteste_qui_quadradoimportprogbr# Realiza o teste qui-quadrado entre duas tabelas de frequência e retorna o valor de qui-quadradoresultado=progbr.Estatistica.teste_qui_quadrado(freq_obs,freq_esp)print(resultado)Metodoanalise_varianciaimportprogbr# Realiza a analise de variância (ANOVA) entre varias amostras e retorna o valor de Fresultado=progbr.Estatistica.analise_variancia(*args)print(resultado)Metodoteste_normalidadeimportprogbr# Realiza o teste de normalidade para uma amostra e nivel de significância alpharesultado=progbr.Estatistica.teste_normalidade(amostra,alpha=0.05)print(resultado)Metodoteste_homogeneidadeimportprogbr# Realiza o teste de homogeneidade para varias amostras e nivel de significância alpharesultado=progbr.Estatistica.teste_homogeneidade(*grupos,alpha=0.05)print(resultado)Classe CalculoA classeCalculocontem metodos para realizar diversos calculos matematicos.Metodonewton_raphsonimportprogbr# Calcula a raiz de uma funcao usando o metodo de Newton-Raphsonresultado=progbr.Calculo.newton_raphson(funcao,derivada,x0,tolerancia=1e-6,max_iter=100)print(resultado)Metododerivadaimportprogbr# Calcula a derivada de uma expressao em relacao a uma variavelresultado=progbr.Calculo.derivada(expressao,variavel)print(resultado)Metodointegral_definidaimportprogbr# Calcula a integral definida de uma expressao entre os limites dadoresultado=progbr.Calculo.integral_definida(expressao,variavel,limite_inferior,limite_superior)print(resultado)Metodointegral_indefinidaimportprogbr# Calcula a integral indefinida de uma expressao em relacao a uma variavelresultado=progbr.Calculo.integral_indefinida(expressao,variavel)print(resultado)Metodolimiteimportprogbr# Calcula o limite de uma expressao quando a variavel se aproxima de um pontoresultado=progbr.Calculo.limite(expressao,variavel,ponto)print(resultado)Metododerivada_parcialimportprogbr# Calcula a derivada parcial de uma expressao em relacao a varias variaveisresultado=progbr.Calculo.derivada_parcial(expressao,variaveis)print(resultado)Metodolaplaceimportprogbr# Calcula a transformada de Laplace de uma expressaoresultado=progbr.Calculo.laplace(expressao,variavel,s)print(resultado)Metodoinversa_laplaceimportprogbr# Calcula a inversa da transformada de Laplace de uma expressaoresultado=progbr.Calculo.inversa_laplace(expressao,s,t)print(resultado)Metodotransformada_fourierimportprogbr# Calcula a transformada de Fourier de uma expressaoresultado=progbr.Calculo.transformada_fourier(expressao,variavel,w)print(resultado)Metodoinversa_fourierimportprogbr# Calcula a inversa da transformada de Fourier de uma expressaoresultado=progbr.Calculo.inversa_fourier(expressao,w,t)print(resultado)Metodosoma_riemannimportprogbr# Calcula a soma de Riemann de uma expressao usando o metodo dos retângulosresultado=progbr.Calculo.soma_riemann(expressao,variavel,limite_inferior,limite_superior,numero_particoes)print(resultado)Metodoproduto_riemannimportprogbr# Calcula o produto de Riemann de uma expressao usando o metodo dos retângulosresultado=progbr.Calculo.produto_riemann(expressao,variavel,limite_inferior,limite_superior,numero_particoes)print(resultado)Metodolimite_lateralimportprogbr# Calcula o limite lateral de uma expressao quando a variavel se aproxima de um pontoresultado=progbr.Calculo.limite_lateral(expressao,variavel,ponto,lado='right')print(resultado)Metododerivada_numerica_progressivaimportprogbr# Calcula a derivada numerica progressiva de uma expressao em relacao a uma variavel em um pontoresultado=progbr.Calculo.derivada_numerica_progressiva(expressao,variavel,ponto,h=1e-6)print(resultado)Metododerivada_numerica_regressivaimportprogbr# Calcula a derivada numerica regressiva de uma expressao em relacao a uma variavel em um pontoresultado=progbr.Calculo.derivada_numerica_regressiva(expressao,variavel,ponto,h=1e-6)print(resultado)Metododerivada_numerica_centralimportprogbr# Calcula a derivada numerica central de uma expressao em relacao a uma variavel em um pontoresultado=progbr.Calculo.derivada_numerica_central(expressao,variavel,ponto,h=1e-6)print(resultado)Metodointegral_numerica_trapezioimportprogbr# Calcula a integral numerica usando o metodo dos trapeziosresultado=progbr.Calculo.integral_numerica_trapezio(expressao,variavel,limite_inferior,limite_superior,numero_particoes)print(resultado)Metodointegral_numerica_simpsonimportprogbr# Calcula a integral numerica usando a regra de Simpsonresultado=progbr.Calculo.integral_numerica_simpson(expressao,variavel,limite_inferior,limite_superior,numero_particoes)print(resultado)Metodoserie_taylorimportprogbr# Calcula a serie de Taylor de uma expressao em torno de um pontoresultado=progbr.Calculo.serie_taylor(expressao,variavel,ponto,ordem)print(resultado)Metodotransformada_laplaceimportprogbr# Calcula a transformada de Laplace de uma expressaoresultado=progbr.Calculo.transformada_laplace(expressao,variavel,s)print(resultado)Metodoinversa_transformada_laplaceimportprogbr# Calcula a inversa da transformada de Laplace de uma expressaoresultado=progbr.Calculo.inversa_transformada_laplace(expressao,variavel,t)print(resultado)Classe MatrizeA classeMatrizee uma classe para trabalhar com matrizes e realizar operacoes matriciais.Construtor__init__importprogbr# Criar uma matriz com os dados fornecidosdata=[[1,2],[3,4],[5,6]]matriz=progbr.Matrize(data)print(matriz)Metodo__str__importprogbr# Imprimir a matriz formatadadata=[[1,2],[3,4],[5,6]]matriz=progbr.Matrize(data)print(matriz)Metodo__add__importprogbr# Somar duas matrizesdata1=[[1,2],[3,4]]data2=[[5,6],[7,8]]matriz1=progbr.Matrize(data1)matriz2=progbr.Matrize(data2)resultado=matriz1+matriz2print(resultado)Metodo__sub__importprogbr# Subtrair duas matrizesdata1=[[1,2],[3,4]]data2=[[5,6],[7,8]]matriz1=progbr.Matrize(data1)matriz2=progbr.Matrize(data2)resultado=matriz1-matriz2print(resultado)Metodo__mul__importprogbr# Multiplicar uma matriz por outra matriz ou por um escalardata1=[[1,2],[3,4]]data2=[[5,6],[7,8]]escalar=2matriz1=progbr.Matrize(data1)matriz2=progbr.Matrize(data2)resultado1=matriz1*matriz2resultado2=matriz1*escalarprint(resultado1)print(resultado2)Metodotranspostaimportprogbr# Calcular a transposta de uma matrizdata=[[1,2],[3,4],[5,6]]matriz=progbr.Matrize(data)resultado=matriz.transposta()print(resultado)Metododeterminanteimportprogbr# Calcular o determinante de uma matriz quadradadata=[[1,2],[3,4]]matriz=progbr.Matrize(data)resultado=matriz.determinante()print(resultado)Metodoinversaimportprogbr# Calcular a matriz inversadata=[[1,2],[3,4]]matriz=progbr.Matrize(data)resultado=matriz.inversa(matriz)print(resultado)Metodocalcular_autovalores_autovetoresimportprogbr# Calcular os autovalores e autovetores de uma matrizdata=[[1,2],[3,4]]resultado_autovalores,resultado_autovetores=progbr.Matrize.calcular_autovalores_autovetores(data)print(resultado_autovalores)print(resultado_autovetores)Classe AlgebraLinearA classeAlgebraLinearcontem varias funcoes e metodos relacionados à algebra linear, incluindo operacoes matriciais, resolucao de sistemas de equacoes lineares, decomposicoes matriciais, interpolacao, ajuste de curvas, calculos de integrais, entre outros.Metodos Estaticosmultiplicar_matriz_por_escalar(matriz, escalar): Multiplica uma matriz por um escalar.dividir_matriz_por_escalar(matriz, escalar): Divide uma matriz por um escalar.multiplicar_matriz_por_vetor(matriz, vetor): Multiplica uma matriz por um vetor.resolver_sistema_linear(coeficientes, constantes): Resolve um sistema de equacoes lineares utilizando matrizes.matriz_inversa(matriz): Calcula a matriz inversa.potencia_matriz(matriz, potencia): Eleva uma matriz a uma potência inteira.decomposicao_LU(matriz): Realiza a decomposicao LU de uma matriz.fatoracao_QR(matriz): Realiza a decomposicao QR de uma matriz.decomposicao_cholesky(matriz): Realiza a decomposicao de Cholesky de uma matriz simetrica positiva definida.gauss_seidel(A, b, x0, max_iter=100, tolerancia=1e-10): Resolve um sistema de equacoes lineares usando o metodo de Gauss-Seidel.interpolar_polinomial(pontos): Realiza a interpolacao polinomial de um conjunto de pontos.regressao_linear(pontos): Realiza o ajuste de curvas por regressao linear a um polinômio.integracao_trapezio(funcao, limite_inferior, limite_superior, numero_trapezios): Calcula integrais definidas usando o metodo do trapezio.metodo_euler(derivada, condicao_inicial, intervalo, passo): Resolve equacoes diferenciais usando o metodo de Euler.eh_diagonalizavel(matriz): Verifica se uma matriz e diagonalizavel.diagonalizar_matriz(matriz): Diagonaliza uma matriz e retorna a matriz diagonal e a matriz de autovetores.sao_ortogonais(v1, v2): Verifica se dois vetores sao ortogonais.projecao_ortogonal(v, u): Calcula a projecao ortogonal do vetor v no vetor u.decomposicao_valores_singulares(matriz): Realiza a decomposicao em valores singulares de uma matriz.autovalores_generalizados(*args): Calcula os autovalores generalizados para o par de matrizes.decomposicao_espectral(matriz): Realiza a decomposicao espectral de uma matriz simetrica.interpolacao_polinomial(pontos): Realiza a interpolacao polinomial de um conjunto de pontos.ajuste_mmq(x, y, grau): Realiza o ajuste de curvas por minimos quadrados a um polinômio de grau 'grau'.decomposicao_svd(matriz): Realiza a decomposicao de valores singulares (SVD) de uma matriz.pseudo_inversa_moore_penrose(matriz): Calcula a pseudo-inversa de Moore-Penrose de uma matriz.determinante_vandermonde(vetor): Calcula o determinante de uma matriz de Vandermonde construida a partir de um vetor.produto_tensorial(*args): Calcula o produto tensorial de varias matrizes.norma_matricial(matriz, ordem=2): Calcula a norma matricial de uma matriz.matriz_cofatora(matriz): Calcula a matriz cofatora de uma matriz quadrada.traco_matriz(matriz): Calcula o traco de uma matriz (soma dos elementos da diagonal principal).decomposicao_schur(matriz): Calcula a Decomposicao de Schur de uma matriz.pseudoinversa_matriz(matriz): Calcula a pseudoinversa de uma matriz.exp_matriz_comutador(*matrizes): Calcula a exponencial do comutador de varias matrizes.decomposicao_jordan(matriz): Calcula a Decomposicao de Jordan de uma matriz.resolver_sistema_nao_linear(funcoes, valores_iniciais): Resolve um sistema de equacoes nao-lineares usando o metodo de Newton-Raphson.e_conexo(grafo): Verifica se um grafo e conexo.Geometria - Biblioteca de Funcoes GeometricasEsta e uma biblioteca de funcoes de geometria que lida com calculos no espaco 2D e 3D. Ela inclui varias formulas para calcular distâncias, areas, volumes, ângulos e outras propriedades geometricas de diferentes figuras e objetos.Aqui estao as principais funcoes da biblioteca:Funcoes para calcular distâncias:distancia_pontos_2D(x1, y1, x2, y2): Calcula a distância entre dois pontos no plano 2D.distancia_pontos_3D(x1, y1, z1, x2, y2, z2): Calcula a distância entre dois pontos no espaco 3D.Funcoes para calcular areas:area_triangulo_2D(a, b, c): Calcula a area de um triângulo no plano 2D usando a formula de Heron.area_triangulo_3D(a, b, c): Calcula a area de um triângulo no espaco 3D usando a formula de Heron.area_retangulo(base, altura): Calcula a area de um retângulo.area_quadrado(lado): Calcula a area de um quadrado.area_paralelogramo(base, altura): Calcula a area de um paralelogramo.area_trapezio(base_maior, base_menor, altura): Calcula a area de um trapezio.area_circunferencia(raio): Calcula a area de uma circunferência.area_circulo(raio): Calcula a area de um circulo.Funcoes para calcular volumes:volume_cubo(aresta): Calcula o volume de um cubo.volume_paralelepipedo(a, b, c): Calcula o volume de um paralelepipedo.volume_esfera(raio): Calcula o volume de uma esfera.volume_cilindro(raio_base, altura): Calcula o volume de um cilindro.volume_cone(raio_base, altura): Calcula o volume de um cone.volume_piramide(area_base, altura): Calcula o volume de uma pirâmide.volume_prisma_retangular(area_base, altura): Calcula o volume de um prisma retangular.volume_tetraedro_regular(aresta): Calcula o volume de um tetraedro regular.volume_esfera_superficie(area_superficie): Calcula o volume de uma esfera a partir de sua area superficial.Funcoes para calcular ângulos:angulo_entre_vetores_3D(vetor1, vetor2): Calcula o ângulo entre dois vetores no espaco 3D.angulo_entre_planos_3D(a1, b1, c1, a2, b2, c2): Calcula o ângulo entre dois planos no espaco 3D.Outras funcoes:raio_esfera_circunscrita_tetraedro_regular(aresta): Calcula o raio da esfera circunscrita a um tetraedro regular.raio_esfera_circunscrita_cubo(aresta): Calcula o raio da esfera circunscrita a um cubo.centro_massa_2D(pontos_x, pontos_y): Calcula o centro de massa de um conjunto de pontos no espaco 2D.centro_massa_3D(pontos_x, pontos_y, pontos_z): Calcula o centro de massa de um conjunto de pontos no espaco 3D.distancia_ponto_curva_2D(x_ponto, y_ponto, curva): Calcula a distância entre um ponto e uma curva no espaco 2D.distancia_ponto_segmento_2D(x_ponto, y_ponto, x1, y1, x2, y2): Calcula a distância entre um ponto e um segmento de reta no espaco 2D.sao_colineares_2D(x1, y1, x2, y2, x3, y3): Verifica se três pontos sao colineares no espaco 2D.formam_quadrilatero_convexo_2D(x1, y1, x2, y2, x3, y3, x4, y4): Verifica se quatro pontos formam um quadrilatero convexo no espaco 2D.circunferencia_circunscrita(triangulo): Calcula o centro e o raio da circunferência circunscrita a um triângulo no espaco 2D.equacao_circunferencia(ponto1, ponto2, ponto3): Calcula a equacao da circunferência circunscrita a um triângulo no espaco 2D.calcular_euler(v=None, f=None, a=None): Calcula o numero de vertices, faces e arestas de um poliedro.Lembre-se de importar a bibliotecaGeometriaantes de usar as funcoes.Exemplo de uso:fromprogbrimportGeometriadistancia=Geometria.distancia_pontos_2D(0,0,3,4)print(distancia)# Saida: 5.0area_circulo=Geometria.area_circulo(5)print(area_circulo)# Saida: 31.41592653589793volume_cubo=Geometria.volume_cubo(2)print(volume_cubo)# Saida: 8angulo=Geometria.angulo_entre_vetores_3D([1,0,0],[0,1,0])print(angulo)# Saida: 90.0Essa classe de criptografia em Python contem varios metodos para realizar diferentes tipos de cifras e operacoes de criptografia. Vou explicar brevemente cada um deles:Cifra de Cesar (criptografar/descriptografar):cifra_cesar_encrypt(texto, chave): Criptografa o texto usando a Cifra de Cesar, onde cada letra e deslocada "chave" posicoes à direita no alfabeto.cifra_cesar_decrypt(texto_cifrado, chave): Descriptografa o texto cifrado usando a Cifra de Cesar, realizando o deslocamento inverso.Cifra de Substituicao (criptografar/descriptografar):cifra_substituicao_encrypt(texto, chave): Criptografa o texto usando a Cifra de Substituicao, onde cada letra e substituida por outra letra do alfabeto, de acordo com a "chave" fornecida.cifra_substituicao_decrypt(texto_cifrado, chave): Descriptografa o texto cifrado usando a Cifra de Substituicao, revertendo a substituicao das letras.Cifra de Vigenere (criptografar/descriptografar):cifra_vigenere_encrypt(texto, chave): Criptografa o texto usando a Cifra de Vigenere, que e uma versao polialfabetica da Cifra de Cesar, onde cada letra e deslocada de acordo com a letra correspondente na "chave".cifra_vigenere_decrypt(texto_cifrado, chave): Descriptografa o texto cifrado usando a Cifra de Vigenere, revertendo os deslocamentos realizados com base na "chave".Cifra de Vernam (XOR one-time pad):cifra_vernam_encrypt(texto, chave): Criptografa o texto usando a Cifra de Vernam, tambem conhecida como one-time pad. Cada caractere do texto e combinado com o caractere correspondente da "chave" usando a operacao XOR.Nao ha metodo para descriptografar a Cifra de Vernam, a nao ser que a "chave" seja reutilizada, o que a tornaria insegura.Algoritmo de Transposicao (criptografar/descriptografar):transposicao_encrypt(texto, chave): Criptografa o texto usando o Algoritmo de Transposicao, onde as letras sao rearranjadas de acordo com a ordem especificada na "chave".transposicao_decrypt(texto_cifrado, chave): Descriptografa o texto cifrado usando o Algoritmo de Transposicao, rearranjando as letras na ordem original com base na "chave".Essa classe pode ser utilizada para realizar operacoes de criptografia e descriptografia em textos usando esses diferentes metodos. Porem, vale ressaltar que as cifras de Cesar, Substituicao e Vigenere sao cifras classicas e nao sao consideradas seguras para uso pratico na criptografia moderna, sendo mais utilizadas como exemplos educacionais. Ja a Cifra de Vernam e segura, mas requer que a "chave" seja tao longa quanto o texto original e seja mantida em segredo absoluto, o que a torna impraticavel para a maioria dos casos reais. Portanto, para uso em situacoes reais, e recomendavel usar algoritmos de criptografia modernos e bem estabelecidos.Exemplo 1: Cifra de CesarfromprogbrimportCriptografia# Criptografar usando Cifra de Cesartexto_original="criptografia"chave_cesar=3texto_cifrado_cesar=Criptografia.cifra_cesar_encrypt(texto_original,chave_cesar)print("Texto original:",texto_original)print("Texto cifrado (Cifra de Cesar):",texto_cifrado_cesar)# Descriptografar o texto cifradotexto_descriptografado_cesar=Criptografia.cifra_cesar_decrypt(texto_cifrado_cesar,chave_cesar)print("Texto descriptografado (Cifra de Cesar):",texto_descriptografado_cesar)Exemplo 2: Cifra de Substituicao# Criptografar usando Cifra de Substituicaotexto_original="criptografia"chave_substituicao="zyxwvutsrqponmlkjihgfedcba"# Mapeando 'a' para 'z', 'b' para 'y', etc.texto_cifrado_substituicao=Criptografia.cifra_substituicao_encrypt(texto_original,chave_substituicao)print("Texto original:",texto_original)print("Texto cifrado (Cifra de Substituicao):",texto_cifrado_substituicao)# Descriptografar o texto cifradotexto_descriptografado_substituicao=Criptografia.cifra_substituicao_decrypt(texto_cifrado_substituicao,chave_substituicao)print("Texto descriptografado (Cifra de Substituicao):",texto_descriptografado_substituicao)Exemplo 3: Cifra de Vigenere# Criptografar usando Cifra de Vigeneretexto_original="criptografia"chave_vigenere="segredo"texto_cifrado_vigenere=Criptografia.cifra_vigenere_encrypt(texto_original,chave_vigenere)print("Texto original:",texto_original)print("Texto cifrado (Cifra de Vigenere):",texto_cifrado_vigenere)# Descriptografar o texto cifradotexto_descriptografado_vigenere=Criptografia.cifra_vigenere_decrypt(texto_cifrado_vigenere,chave_vigenere)print("Texto descriptografado (Cifra de Vigenere):",texto_descriptografado_vigenere)Exemplo 4: Cifra de Vernam (XOR one-time pad)# Criptografar usando Cifra de Vernamtexto_original="criptografia"chave_vernam="chavealeatoria"# Deve ser tao longa quanto o texto original e mantida em segredotexto_cifrado_vernam=Criptografia.cifra_vernam_encrypt(texto_original,chave_vernam)print("Texto original:",texto_original)print("Texto cifrado (Cifra de Vernam):",texto_cifrado_vernam)# A Cifra de Vernam nao tem um metodo de descriptografia aqui, pois ela so seria segura com uma chave completamente aleatoria e secreta.Exemplo 5: Algoritmo de Transposicao# Criptografar usando Algoritmo de Transposicaotexto_original="criptografia"chave_transposicao="4321"# Alterando a ordem das colunastexto_cifrado_transposicao=Criptografia.transposicao_encrypt(texto_original,chave_transposicao)print("Texto original:",texto_original)print("Texto cifrado (Algoritmo de Transposicao):",texto_cifrado_transposicao)# Descriptografar o texto cifradotexto_descriptografado_transposicao=Criptografia.transposicao_decrypt(texto_cifrado_transposicao,chave_transposicao)print("Texto descriptografado (Algoritmo de Transposicao):",texto_descriptografado_transposicao)Exemplo 6: Verificando senha ou email hackeadasenha="exemplo_de_uma_senha"print(Criptografia.verificar_senha_hackeada(senha))email="seu_email@exemplo.com"print(Criptografia.verificar_email_comprometido(email))Se a resposta for 0, a senha ou o email nunca foi vazada, se não foi.Exemplo 7: Calcular hash1, hash256, hash224, hash384dados="exemplo"print(Criptografia.calcular_hash_sha1(dados))#calcular hash224print(Criptografia.calcular_hash_sha224(dados))#calcular hash256print(Criptografia.calcular_hash_sha256(dados))#calcular hash384print(Criptografia.calcular_hash_sha384(dados))Exemplo 8: Criptografar e Descriptografar mensagemmensagem="Eu to usando progbr"senha="exemplo"print(Criptografia.criptografar_mensagem_(mensagem,senha))# descriptografar mensagemiv=b'\x00'*16# Use um valor aleatorio para o IV em produçãosalt=os.urandom(16)# Gere um salt aleatório em produçãomensagem_cifrada=b'\x8d~\x0b\x01\xff\xd6\x8e\xa2\xe9\xc0\x08\xa1M\x15\x84'# Substitua pela mensagem cifrada realsenha="exemplo"mensagem_original=descriptografar_mensagem_(iv,salt,mensagem,senha)print("Mensagem original:",mensagem_original)Exemplo 9: gerar senha extremamente forte, e amdr(amadora)Se nao colocar nenhum parametro, vai ser 20 digitos por padrao, e nao pode ser menor que 20 se for colocar manualmenteprint(Criptografia.gerar_senha_extremamente_forte(20))# OUTPUT : -✭颷Ϟ␌♪Ỡ±∇BϚ%Љ0ỎÑd颩<ӘDiferente da senha de maior ou igual a 20 digitos, a senha amadora ainda é forte mas pode ser maior ou igual a 3print(Criptografia.gerar_senha_extremamente_forte__amdr(4))# OUTPUT : \A8cGerar Token de autenticacao# Defina o tamanho do token em bytes (recomendado usar pelo menos 32 bytes para segurança adequada)tamanho_token=4print(Criptografia.gerar_token_autenticacao(tamanho_token))# OUTPUT : cb7cb886# Criar um objeto TOTP com a chave secreta fornecidaprint(Criptografia.gerar_codigo_totp_ch("exemplo"))# OUTPUT : 493538#gerar um codigo de totp atraves de um qrcodeprint(gerar_codigo_totp_qr_cd(caminho_imagem_qr_code))#converter um hex key para base32 bprint(converter_hex_para_base32(hex_key))Lembrando que as chaves utilizadas nesses exemplos sao apenas ilustrativas e nao devem ser usadas em um cenario real de criptografia. Alem disso, as cifras de Cesar, Substituicao e Vigenere sao consideradas inseguras para uso pratico em sistemas reais. Para aplicacoes reais, e importante utilizar algoritmos de criptografia modernos e bem estabelecidos, como AES, RSA, que serao em progbr em breve.Classe de Analise CombinatoriaArranjo Simples (Permutacao)arranjo(n, k): Este metodo calcula o numero de arranjos simples de "n" elementos tomados "k" a "k". Em outras palavras, e a permutacao de "n" elementos em grupos de "k".Combinacao (Binômio)combinacao(n, k): Este metodo calcula o coeficiente binomial, tambem conhecido como combinacao, de "n" elementos tomados "k" a "k". Representa o numero de maneiras de escolher "k" elementos diferentes de um conjunto de "n" elementos.Combinacao com Repeticaocombinacao_repeticao(n, k): Este metodo calcula o numero de combinacoes com repeticao de "n" elementos tomados "k" a "k". Essa combinacao permite que elementos sejam escolhidos mais de uma vez, diferentemente da combinacao simples.Permutacao com Repeticaopermutacao_repeticao(lista): Este metodo calcula o numero de permutacoes com repeticao de uma lista de elementos. Ou seja, quantas maneiras diferentes podemos organizar os elementos da lista, levando em conta que ha elementos repetidos.Permutacao Circularpermutacao_circular(n): Este metodo calcula o numero de permutacoes circulares de "n" elementos, tambem conhecido como arranjo circular. Nesse tipo de permutacao, a ordem e importante, mas a rotacao e considerada como uma unica permutacao.Numeros de Stirling de Segunda Especienumeros_stirling_segunda(n, k): Este metodo calcula os numeros de Stirling de segunda especie, que contam o numero de maneiras de particionar um conjunto de "n" elementos em "k" subconjuntos nao vazios e distintos.Numeros de Stirling de Primeira Especienumeros_stirling_primeira(n, k): Este metodo calcula os numeros de Stirling de primeira especie, que contam o numero de permutacoes de "n" elementos com "k" ciclos disjuntos.Coeficiente Multinomialmultinomial(*args): Este metodo calcula o coeficiente multinomial, que generaliza o coeficiente binomial para mais de dois conjuntos. Recebe uma sequência de argumentos representando os tamanhos dos conjuntos.Numero de Bellnumero_bell(n): Este metodo calcula o numero de Bell, que representa o numero de maneiras de particionar um conjunto de "n" elementos em subconjuntos nao vazios e distintos.Numero de Derivacoesnumero_derivacoes(n): Este metodo calcula o numero de derivacoes de "n" elementos, que sao permutacoes de "n" elementos sem ponto fixo, ou seja, onde nenhum elemento permanece em sua posicao original.Coeficiente Binomial Generalizadocoeficiente_binomial_generalizado(n, k, m): Este metodo calcula o coeficiente binomial generalizado, que e uma generalizacao do coeficiente binomial para combinar elementos de três conjuntos diferentes.Numero de Derangementsnumero_derangement_biblioteca(n): Este metodo calcula o numero de derangements de "n" elementos usando uma biblioteca externa. Derangement e uma permutacao em que nenhum elemento permanece em sua posicao original.Triângulo de Pascaltriangulo_pascal(n): Este metodo gera o triângulo de Pascal com "n + 1" linhas, onde cada numero representa o coeficiente binomial correspondente.Numeros Harmônicosnumeros_harmonicos(n): Este metodo calcula a soma dos primeiros "n" numeros harmônicos, onde o numero harmônico "H(n)" e a soma de "1/i" para cada "i" de 1 a "n".Numero de Fibonaccifibonacci(n): Este metodo calcula o "n"-esimo numero da sequência de Fibonacci, onde cada numero e a soma dos dois numeros anteriores na sequência (exemplo: 0, 1, 1, 2, 3, 5, 8, ...).Numero de Lucaslucas(n): Este metodo calcula o "n"-esimo numero da sequência de Lucas, que e uma sequência similar à sequência de Fibonacci, mas com valores iniciais diferentes (exemplo: 2, 1, 3, 4, 7, 11, ...).Numeros de Catalannumeros_catalao(n): Este metodo calcula o "n"-esimo numero de Catalan, que aparece em varias situacoes de contagem, como sequências de parênteses corretamente aninhados.Sequência de Fareysequencia_farey(n): Este metodo gera a sequência de Farey de ordem "n", que e a sequência de todas as fracoes irracionais e racionais em ordem crescente, dentro do intervalo [0, 1].Numero de Particoesnumero_particoes(n): Este metodo calcula o numero de particoes de um inteiro "n", ou seja, o numero de maneiras distintas de escrever "n" como a soma de inteiros positivos.Exemplo de uso dos metodos da classe de Analise Combinatoria# Criando uma instância da classefromprogbrimportAnalise_Combinatoriaanalise_comb=Analise_Combinatoria()# Exemplo de Arranjo Simples (Permutacao)n=5k=3arranjo_resultado=analise_comb.arranjo(n,k)print(f"Arranjo de{n}elementos tomados{k}a{k}:{arranjo_resultado}")# Resultado: 60# Exemplo de Combinacao (Binômio)n=7k=2combinacao_resultado=analise_comb.combinacao(n,k)print(f"Combinacao de{n}elementos tomados{k}a{k}:{combinacao_resultado}")# Resultado: 21# Exemplo de Permutacao com Repeticaolista=[1,2,2,3]permutacao_repeticao_resultado=analise_comb.permutacao_repeticao(lista)print(f"Numero de permutacoes com repeticao da lista{lista}:{permutacao_repeticao_resultado}")# Resultado: 12# Exemplo de Numero de Belln=4numero_bell_resultado=analise_comb.numero_bell(n)print(f"Numero de Bell para n={n}:{numero_bell_resultado}")# Resultado: 15# Exemplo de Numeros de Stirling de Primeira Especien=5k=2stirling_primeira_resultado=analise_comb.numeros_stirling_primeira(n,k)print(f"Numeros de Stirling de primeira especie para n={n}, k={k}:{stirling_primeira_resultado}")# Resultado: 40# Exemplo de Coeficiente Multinomialn1,n2,n3=5,3,2multinomial_resultado=analise_comb.multinomial(n1,n2,n3)print(f"Coeficiente multinomial para n1={n1}, n2={n2}, n3={n3}:{multinomial_resultado}")# Resultado: 60# Exemplo de Numeros Harmônicosn=5numeros_harmonicos_resultado=analise_comb.numeros_harmonicos(n)print(f"Soma dos primeiros{n}numeros harmônicos:{numeros_harmonicos_resultado}")# Resultado: 2.283333333333333# Exemplo de Numero de Fibonaccin=8fibonacci_resultado=analise_comb.fibonacci(n)print(f"O{n}-esimo numero de Fibonacci:{fibonacci_resultado}")# Resultado: 21# Exemplo de Numero de Lucasn=5lucas_resultado=analise_comb.lucas(n)print(f"O{n}-esimo numero de Lucas:{lucas_resultado}")# Resultado: 11# Exemplo de Sequência de Fareyn=5farey_sequence=analise_comb.sequencia_farey(n)print(f"Sequência de Farey de ordem{n}:{farey_sequence}")# Resultado: [0, 1, 1/2, 1/3, 2/3, 1/4, 3/4, 1/5, 2/5, 3/5, 4/5, 1]Classe de ProbabilidadeA classeProbabilidadee uma implementacao de metodos matematicos relacionados à probabilidade, um ramo da matematica que estuda a incerteza e a aleatoriedade. A classe oferece diversas funcoes para calcular probabilidades de eventos e operacoes probabilisticas com base em formulas e conceitos da teoria da probabilidade.Metodos e Funcionalidades PrincipaisProbabilidade de um Evento SimplesO metodoprobabilidade_evento_simples(evento_favoravel, espaco_amostral)calcula a probabilidade de um evento ocorrer em um espaco amostral finito, onde oevento_favoravele o numero de casos em que o evento ocorre, e oespaco_amostrale o numero total de casos possiveis.Probabilidade ComplementarO metodoprobabilidade_complementar(probabilidade_evento)calcula a probabilidade de o evento complementar ocorrer, ou seja, a probabilidade de que o evento nao ocorra. Ele e util quando a probabilidade de um evento acontecer e conhecida e queremos calcular a probabilidade de ele nao ocorrer.Probabilidade Conjunta de Eventos IndependentesO metodoprobabilidade_conjunta_independentes(probabilidade_evento1, probabilidade_evento2)calcula a probabilidade de dois eventos independentes ocorrerem simultaneamente. Eventos independentes sao aqueles em que a ocorrência de um nao influencia na probabilidade do outro acontecer.Probabilidade Conjunta de Eventos DependentesO metodoprobabilidade_conjunta_dependentes(probabilidade_evento1, probabilidade_evento2_dado_evento1)calcula a probabilidade de dois eventos dependentes ocorrerem simultaneamente. Eventos dependentes sao aqueles em que a ocorrência de um afeta a probabilidade do outro acontecer.Probabilidade da Uniao de Eventos Mutuamente ExclusivosO metodoprobabilidade_uniao_mutuamente_exclusivos(probabilidade_evento1, probabilidade_evento2)calcula a probabilidade da uniao de dois eventos mutuamente exclusivos, ou seja, a probabilidade de que ao menos um dos eventos ocorra.Probabilidade da Uniao de Eventos Nao Mutuamente ExclusivosO metodoprobabilidade_uniao_nao_mutuamente_exclusivos(probabilidade_evento1, probabilidade_evento2, probabilidade_intersecao)calcula a probabilidade da uniao de dois eventos nao mutuamente exclusivos, levando em conta a probabilidade da intersecao desses eventos.Probabilidade CondicionalO metodoprobabilidade_condicional(probabilidade_evento1, probabilidade_evento2_dado_evento1)calcula a probabilidade de um evento ocorrer, dado que outro evento ja ocorreu. Ele e util para calcular a probabilidade de eventos que sao dependentes.Teorema de BayesO metodoteorema_bayes(probabilidade_evento1, probabilidade_evento2_dado_evento1, probabilidade_evento2)aplica o teorema de Bayes para calcular a probabilidade de um evento A ocorrer, dado que o evento B ocorreu. e um conceito fundamental em probabilidade condicional.Probabilidade de Intersecao de Eventos IndependentesO metodoprobabilidade_intersecao_independentes(probabilidade_evento1, probabilidade_evento2)calcula a probabilidade da intersecao de dois eventos independentes, ou seja, a probabilidade de ambos os eventos ocorrerem.Probabilidade de Intersecao de Eventos DependentesO metodoprobabilidade_intersecao_dependentes(probabilidade_evento1, probabilidade_evento2_dado_evento1)calcula a probabilidade da intersecao de dois eventos dependentes, ou seja, a probabilidade de ambos os eventos ocorrerem.Variaveis AleatoriasA classe tambem possui metodos para lidar com variaveis aleatorias discretas e continuas, permitindo calcular suas esperancas matematicas, variâncias e desvios padrao.Essa classe e uma ferramenta util para calculos probabilisticos em Python, podendo ser usada para solucionar problemas em estatistica, teoria das probabilidades e outras areas relacionadas. Ela fornece uma implementacao simples e direta dos conceitos e formulas mais comuns utilizados no estudo da probabilidade.Exemplo de uso dos metodos da classe de Probabilidade# Criando uma instância da classefromprogbrimportProbabilidadeprobabilidade=Probabilidade()# Exemplo de Probabilidade de um Evento Simplesevento_favoravel=3espaco_amostral=10probabilidade_evento_simples_resultado=probabilidade.probabilidade_evento_simples(evento_favoravel,espaco_amostral)print(f"Probabilidade de um evento simples:{probabilidade_evento_simples_resultado}")# Resultado: 0.3# Exemplo de Probabilidade Complementarprobabilidade_evento=0.7probabilidade_complementar_resultado=probabilidade.probabilidade_complementar(probabilidade_evento)print(f"Probabilidade complementar:{probabilidade_complementar_resultado}")# Resultado: 0.3# Exemplo de Probabilidade Conjunta de Eventos Independentesprobabilidade_evento1=0.4probabilidade_evento2=0.3probabilidade_conjunta_independentes_resultado=probabilidade.probabilidade_conjunta_independentes(probabilidade_evento1,probabilidade_evento2)print(f"Probabilidade conjunta de eventos independentes:{probabilidade_conjunta_independentes_resultado}")# Resultado: 0.12# Exemplo de Probabilidade Conjunta de Eventos Dependentesprobabilidade_evento1=0.4probabilidade_evento2_dado_evento1=0.2probabilidade_conjunta_dependentes_resultado=probabilidade.probabilidade_conjunta_dependentes(probabilidade_evento1,probabilidade_evento2_dado_evento1)print(f"Probabilidade conjunta de eventos dependentes:{probabilidade_conjunta_dependentes_resultado}")# Resultado: 0.08# Exemplo de Probabilidade da Uniao de Eventos Mutuamente Exclusivosprobabilidade_evento1=0.6probabilidade_evento2=0.4probabilidade_uniao_mutuamente_exclusivos_resultado=probabilidade.probabilidade_uniao_mutuamente_exclusivos(probabilidade_evento1,probabilidade_evento2)print(f"Probabilidade da uniao de eventos mutuamente exclusivos:{probabilidade_uniao_mutuamente_exclusivos_resultado}")# Resultado: 1.0# Exemplo de Probabilidade da Uniao de Eventos Nao Mutuamente Exclusivosprobabilidade_evento1=0.6probabilidade_evento2=0.4probabilidade_intersecao=0.2probabilidade_uniao_nao_mutuamente_exclusivos_resultado=probabilidade.probabilidade_uniao_nao_mutuamente_exclusivos(probabilidade_evento1,probabilidade_evento2,probabilidade_intersecao)print(f"Probabilidade da uniao de eventos nao mutuamente exclusivos:{probabilidade_uniao_nao_mutuamente_exclusivos_resultado}")# Resultado: 0.8# Exemplo de Probabilidade Condicionalprobabilidade_evento1=0.6probabilidade_evento2_dado_evento1=0.2probabilidade_condicional_resultado=probabilidade.probabilidade_condicional(probabilidade_evento1,probabilidade_evento2_dado_evento1)print(f"Probabilidade condicional:{probabilidade_condicional_resultado}")# Resultado: 0.3333333333333333# Exemplo do Teorema de Bayesprobabilidade_evento1=0.6probabilidade_evento2_dado_evento1=0.2probabilidade_evento2=0.5teorema_bayes_resultado=probabilidade.teorema_bayes(probabilidade_evento1,probabilidade_evento2_dado_evento1,probabilidade_evento2)print(f"Teorema de Bayes:{teorema_bayes_resultado}")# Resultado: 0.24# Exemplo de Probabilidade de Intersecao de Eventos Independentesprobabilidade_evento1=0.4probabilidade_evento2=0.3probabilidade_intersecao_independentes_resultado=probabilidade.probabilidade_intersecao_independentes(probabilidade_evento1,probabilidade_evento2)print(f"Probabilidade de intersecao de eventos independentes:{probabilidade_intersecao_independentes_resultado}")# Resultado: 0.12# Exemplo de Probabilidade de Intersecao de Eventos Dependentesprobabilidade_evento1=0.4probabilidade_evento2_dado_evento1=0.2probabilidade_intersecao_dependentes_resultado=probabilidade.probabilidade_intersecao_dependentes(probabilidade_evento1,probabilidade_evento2_dado_evento1)print(f"Probabilidade de intersecao de eventos dependentes:{probabilidade_intersecao_dependentes_resultado}")# Resultado: 0.08# Exemplo da Regra da Multiplicacao para Eventos Independentesprobabilidade_eventos=[0.4,0.3,0.2]regra_multiplicacao_independentes_resultado=probabilidade.regra_multiplicacao_independentes(probabilidade_eventos)print(f"Regra da multiplicacao para eventos independentes:{regra_multiplicacao_independentes_resultado}")# Resultado: 0.024# Exemplo da Regra da Multiplicacao para Eventos Dependentesprobabilidade_eventos_dado_evento_anterior=[0.3,0.2]regra_multiplicacao_dependentes_resultado=probabilidade.regra_multiplicacao_dependentes(probabilidade_eventos_dado_evento_anterior)print(f"Regra da multiplicacao para eventos dependentes:{regra_multiplicacao_dependentes_resultado}")# Resultado: 0.06Python 3.xAs bibliotecas NumPy, SciPy, Matplotlib sao utilizadas em alguns metodos.ContribuicaoSe você deseja contribuir, sinta-se à vontade para abrir uma solicitacao de pull ou relatar problemas.LicencaEsta classe esta licenciada sob a Licenca MIT.ContatoSe você tiver alguma duvida ou precisar de suporte, entre em contato comigo em:Email:bidjorys@exemplo.com