/* Programa riemann.c Assunto: Somas de Riemann Condicionantes: para compilar gcc -Wall -oprog -lm riemann.c a biblioteca ambiente.h deve estar no mesmo diretorio Programa sem erros 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 */ #include #include #include "ambiente.h" float Riemann(float inicio, float fim, float delta); float f(float x); void noticia(); int main(void) { float inicio=-3, fim=3, delta; // extremos do intervalo de integração int n = 100; int resposta=0; limpa_janela(); quatrolinhas(); printf("Voce deseja ler uma informacao sobre o programa ? \n"); printf("A resposta padrao para esta pergunta eh \"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 valores 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); } float Riemann(float inicio, float fim, float delta) { float soma=0,x=inicio; while (x <= fim) { soma = soma + f(x); x = x + delta; } //return (soma*delta); return (soma*delta); } // esta eh a funcao cuja integral estah sendo calculada float f(float x) { return (pow(x,2)/5.0); // x ao quadrado <<< troque aqui a equacao } void noticia() { printf("Este programa calcula aproximadamente a integral de uma funcao \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(); limpa_janela(); }