/* Programa trapesio.calc Assunto: Regra do trapésio Descrição: cálculo de integrais aprox pela regra do trapésio palavras chave: Riemann, integral, varredura por Tarcisio Praciano Pereira - C para matemáticos Sobral, Dezembro de 2005 - UeVA */ define limpa_janela() { system("clear"); } define f(x) { /*return(power(x,5)*cos(x) + power(x,2) + sin(x) + 1);*/ /* troque a equação*/ return(power(x,2)); } define entrada(msg, x) { printf("%s %f ",msg, x); scanf("%f", x); return(x); } define entrada(msg, x) { printf("%s %f ",msg, x); scanf("%f", 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("%c", 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 Trapesio(inicio, fim, delta) { local soma=0,x=inicio; while (x < fim) { soma = soma + (f(x) + f(x+delta)); x = x + delta; } return (0.5*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 a regra do trapésio, e partição uniforme \n"); printf("quer 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() { /* extremos do intervalo de integração*/ local inicio=0.0, fim=1.0, delta=0.01; local n; 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("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"); local inicio = entrada(" a = ", inicio); local fim = entrada(" b = ", fim); printf(" Precisao no calculo - numero (inteiro) de nós na partição \n"); local n = entrada(" n = ", n); delta = (fim-inicio)/n; /* calcula delta */ printf("O valor aproximado da integral eh %f \n", re(Trapesio(inicio,fim,delta))); apetecof(); limpa_janela(); return(0); } printf("Rode main() \n"); main() quit;