/* Programa riemann.calc Assunto: Somas de Riemann Descrição: cálculo de integrais aprox por somas de Riemann palavras chave: Riemann, integral, varredura por Tarcisio Praciano Pereira - C para matemáticos Sobral, Dezembro de 2005 - UeVA */ define limpa_janela() { system("clear"); } ## read funcao.calc para alterar a equação global funcao = "funcao.calc" define f(x) { return power(x,5)*cos(x) + power(x,2) + sin(x) + 1; } define entrada_float(msg, x) { printf("%s %f ",msg, x); scanf("%f", x); return(x); } define entrada_inteira(msg, x) { printf("%s %d ",msg, x); scanf("%d", x); return(x); } define apeteco2() { local temporario; printf("%s","================================================= "); printf("%c%c%c%c%c\n",7,7,7,7,7); printf(" Aperte para continuar "); scanf("%f", temporario); return temporario; } define apetecof() { local temporario; printf("%s","================================================= "); printf("%c%c%c%c%c\n",7,7,7,7,7); printf(" Aperte para terminar "); scanf("%c", temporario); return temporario; } define sim_nao(){ local teste; printf("sim ou não ? "); scanf("%c", teste); return(teste); } define Riemann(inicio, fim, delta) { local soma=0,x=inicio; while (x <= fim) { soma = soma + f(x); x = x + delta; } return (soma*delta); } define noticia() { printf("Este programa calcula aproximadamente a integral de uma função \n"); printf("definida no programa. Edite a equacao para calcular outras inte- \n"); printf("grais. O programa tem valores padrao que voce pode usar simples-\n"); printf("mente dando em todas as perguntas. Eh um bom meio de ver\n"); printf("como o programa funciona, um primeiro exemplo. \n"); apeteco2(); printf("O programa calcula integrais usando somas de Riemann uniformes, quer \n"); printf("dizer que o passo na particao eh sempre o mesmo, ou que os subinter-\n"); printf("valos tem todos a mesma medida: (b-a)/n \n"); printf("Para obter mais precisao, de um valor maior para n - mas observe \n"); printf("que a demora serah maior no calculo com grandes valores de n. \n"); printf("Experimentando voce vai ver que a partir de um certo ponto voce terah\n"); printf("atingido a precisao maxima do programa. \n"); apeteco2(); printf("Este programa foi feito com o gcc em ambiente Debian/Gnu/Linux \n"); printf("sendo distribuido sob GPL. \n"); printf("Autor: prof. Tarcisio Praciano-Pereira - Matematica - UeVA \n"); printf("Sobral - Ceara - tarcisio@member.ams.org \n"); apeteco2(); system("clear"); } define main() { local inicio=0, fim=1, delta; /* extremos do intervalo de integração*/ local n = 100; local resposta=0; limpa_janela(); printf("Voce deseja ler uma informacao sobre o programa ? \n"); printf("A resposta padrao para esta pergunta é \"n\" - nao - de .\n"); resposta = sim_nao(); if (resposta) noticia(); printf("Você deseja alterar a equação da função ?"); resposta = sim_nao(); if (resposta) { system("joe funcao.calc") ;} if (resposta) { read $funcao; } printf("De a todas as perguntas para calcular a integral \n"); printf("no intervalo [0,1] - ou forneca os extremos que desejar. \n"); apeteco2(); printf("Intervalo [a,b] onde a integral vai ser calculada\n"); inicio = entrada_float(" a = ", inicio); fim = entrada_float(" b = ", fim); printf(" Precisao no calculo - numero de nos na particao \n"); n = entrada_inteira(" n = ", n); delta = (fim-inicio)/n; /* calcula delta */ printf("O valor aproximado da integral eh %f \n", Riemann(inicio,fim,delta)); apetecof(); limpa_janela(); return(0); } main() quit;