Ir para conteúdo
Fórum Script Brasil
  • 0

Math.h


frw

Pergunta

5 respostass a esta questão

Posts Recomendados

  • 0

Não achei nenhuma função para fazer integral na Math.h . Se você puder falar com que m te passou esta informação pode ser uma ajuda muito boa.

Procurei na internet também e achei esta página com as funções de math.h mas nenhuma delas se refere a integral de uma função:

http://www.cs.unibo.it/~montreso/doc/C/cor...000000000000000

Editado por rafaelbortoletto
Link para o comentário
Compartilhar em outros sites

  • 0

aí eu tive que fazer um programa que que calcula a integral da funcao sqrt(1-x^2) , para isso eu não usei a biblioteca math porque eu escrevi x^2 da forma x*x, então não precisei da biblioteca math.h. O programa quando iniciado perguntao qual é o valor inicial e qual é o final e depois em quatas subdivisoes voce quer que ele faca.

Vou colocar o programa aqui e a biblioteca que eu tinha que usar, que é uma diferente. não é a stdlib.h, é uma biblioteca que eu tenho que usar na facul, vo colocar ela tambem.


#include "iolib.h" //biblioteca que tem que estar na mesma pasta do arquivo.

double f (double x){
return sqrt(1-x*x); //pra mudar a funcao mude ela aqui
}

double integraltrapezio(double x0 , double xn , int n){
int i;
double integral=0.0;
double dx=(xn*x0)/n ;
for ( i=0; i<n ; i++) { double xi=x0+i*dx;
double xj=x0+(i+1)*dx ;
double area = dx*(f(xi)+f(xj))/2;
integral=integral+area; }
return integral;
}

int main(void){
int n ;
double x0 , xn ;
double valor ;
writestring("Entre com o limited o intervalo( x0 e xn ) : ");
x0 = readdouble();
xn = readdouble();
writestring("Entre com o numero de subdivisoe s : ");
n = readint();
valor =integraltrapezio(x0, xn, n);
writestring("Valor da integral = ");
writedouble(valor) ;
return 0;
}
[/codebox]

a iolib.h :

[codebox]/* iolib.h
** Biblioteca auxiliar de entrada e saída
** ICC - PUC-Rio - 2007
*/


#ifndef IOLIB_H
#define IOLIB_H

#include <stdio.h>

/******************************
** Funções para leitura de dados entrados via teclado
*/

/* Captura um valor inteiro */
int readint (void);

/* Captura um valor real (tipo float) */
float readfloat (void);

/* Captura um valor real (tipo double) */
double readdouble (void);

/* Captura um valor de um caractere simples que não seja um 'branco' */
char readchar (void);

/* Captura um valor de um caractere simples, incluindo 'brancos' */
char readanychar (void);

/* Captura um valor de uma cadeia de caracteres, sem espaços 'brancos'.
O segundo parâmetro indica número máximo de caracteres a ser capturado.
*/
void readword (char s[], int nmax);

/* Captura um valor de uma cadeia de caracteres, até o fim da linha,
incluindo caracteres 'brancos'.
O segundo parâmetro indica número máximo de caracteres a ser capturado.
*/
void readline (char s[], int nmax);


/******************************
** Funções para escrita de dados na tela
*/

/* Escreve um valor inteiro */
void writeint (int x);

/* Escreve um valor real (tipo float) */
void writefloat (float x);

/* Escreve um valor real (tipo double) */
void writedouble (double x);

/* Escreve um caractere simples */
void writechar (char x);

/* Escreve uma cadeia de caracteres (sem pular linha) */
void writestring (char s[]);

/* Escreve uma linha de texto (acrescenta caractere de mudança de linha) */
void writeline (char s[]);

/* Escreve um caractere de mudança de linha (pula linha) */
void newline (void);


/****************************
** Funções de entrada e saída para arquivos
*/

/* Tipo que representa um arquivo */
typedef FILE* FHANDLE;

/* Abre um arquivo para leitura, dado o nome do arquivo.
Se ocorrer erro na abertura do arquivo, o programa é abortado.
*/
FHANDLE fopenreadfile (char filename[]);

/* Abre um arquivo para escrita, dado o nome do arquivo.
Se ocorrer erro na abertura do arquivo, o programa é abortado.
*/
FHANDLE fopenwritefile (char filename[]);

/* Fecha um arquivo previamente aberto */
void fclosefile (FHANDLE f);

/* Verifica se o final do arquivo foi alcançado, desprezando
eventuais caracteres 'brancos'
*/
int fisend (FHANDLE f);

/* Captura próximo valor inteiro do arquivo */
int freadint (FHANDLE f);

/* Captura próximo valor real (tipo float) do arquivo */
float freadfloat (FHANDLE f);

/* Captura próximo valor real (tipo double) do arquivo */
double freaddouble (FHANDLE f);

/* Captura o próximo caractere simples do arquivo,
desprezando eventuais 'brancos'
*/
char freadchar (FHANDLE f);

/* Captura o próximo caractere simples do arquivo,
incluindo eventuais 'brancos'
*/
char freadanychar (FHANDLE f);

/* Captura próxima cadeia de caracteres sem 'brancos' do arquivo
O terceiro parâmetro indica número máximo de caracteres a ser capturado.
*/
void freadword (FHANDLE f, char s[], int nmax);

/* Captura próxima cadeia de caracteres do arquivo, até o fim da linha.
O terceiro parâmetro indica número máximo de caracteres a ser capturado.
*/
void freadline (FHANDLE f, char s[], int nmax);

/* Escreve valor inteiro no arquivo */
void fwriteint (FHANDLE f, int x);

/* Escreve valor real (tipo float) no arquivo */
void fwritefloat (FHANDLE f, float x);

/* Escreve valor real (tipo double) no arquivo */
void fwritedouble (FHANDLE f, double x);

/* Escreve caractere simples no arquivo */
void fwritechar (FHANDLE f, char x);

/* Escreve cadeia de caracteres no arquivo */
void fwritestring (FHANDLE f, char s[]);

/* Escreve caractere de nova linha no arquivo (muda de linha) */
void fnewline (FHANDLE f);

#endif

agora para ela funcionar voce tem que colocar o arquivo iolib.c no mesmo projeto que o arquivo integrais.c,

ai vai a iolib.c :

/* iolib.c
** Biblioteca auxiliar de entrada e saída
** ICC - PUC-Rio - 2007
*/

#include "iolib.h"
#include <stdlib.h>

int readint (void)
{
return freadint(stdin);
}

float readfloat (void)
{
return freadfloat(stdin);
}

double readdouble (void)
{
return freaddouble(stdin);
}

char readchar (void)
{
return freadchar(stdin);
}

char readanychar (void)
{
return freadanychar(stdin);
}

void readword (char s[], int nmax)
{
freadword(stdin,s,nmax);
}

void readline (char s[], int nmax)
{
freadline(stdin,s,nmax);
}

void writechar (char x)
{
fwritechar(stdout,x);
}

void writeint (int x)
{
fwriteint(stdout,x);
newline();
}

void writefloat (float x)
{
fwritefloat(stdout,x);
newline();
}

void writedouble (double x)
{
fwritedouble(stdout,x);
newline();
}

void writestring (char s[])
{
fwritestring(stdout,s);
}

void writeline (char s[])
{
writestring(s);
newline();
}

void newline (void)
{
fnewline(stdout);
}

FHANDLE fopenreadfile (char filename[])
{
FHANDLE f = fopen(filename,"rt");
if (f == NULL) {
fprintf(stderr,"Erro na abertura do arquivo de leitura: %s\n",filename);
exit(1);
}
return f;
}

FHANDLE fopenwritefile (char filename[])
{
FHANDLE f = fopen(filename,"wt");
if (f == NULL) {
fprintf(stderr,"Erro na abertura do arquivo de escrita: %s\n",filename);
exit(1);
}
return f;
}

void fclosefile (FHANDLE f)
{
fclose(f);
}

int fisend (FHANDLE f)
{
char c;
if (fscanf(f," %c",&c)!=1)
return 1;
ungetc(c,f);
return 0;
}

char freadchar (FHANDLE f)
{
char v;
if (fscanf(f," %c",&v) != 1) {
fprintf(stderr,"Erro na leitura do 'char'.\n");
exit(1);
}
return v;
}

char freadanychar (FHANDLE f)
{
char v;
if (fscanf(f,"%c",&v) != 1) {
fprintf(stderr,"Erro na leitura do 'char'.\n");
exit(1);
}
return v;
}

int freadint (FHANDLE f)
{
int v;
if (fscanf(f,"%d",&v) != 1) {
fprintf(stderr,"Erro na leitura do 'int'.\n");
exit(1);
}
return v;
}

float freadfloat (FHANDLE f)
{
float v;
if (fscanf(f,"%g",&v) != 1) {
fprintf(stderr,"Erro na leitura do 'float'.\n");
exit(1);
}
return v;
}

double freaddouble (FHANDLE f)
{
double v;
if (fscanf(f,"%lg",&v) != 1) {
fprintf(stderr,"Erro na leitura do 'double'.\n");
exit(1);
}
return v;
}

void freadword (FHANDLE f, char s[], int nmax)
{
char fmt[BUFSIZ];
sprintf(fmt,"%%%ds",nmax-1);
if (fscanf(f,fmt,s) != 1) {
fprintf(stderr,"Erro na leitura do 'string'.\n");
exit(1);
}
}

void freadline (FHANDLE f, char s[], int nmax)
{
char fmt[BUFSIZ];
sprintf(fmt," %%%d[^\n]%%1*[\n]",nmax-1);
if (fscanf(f,fmt,s) != 1) {
fprintf(stderr,"Erro na leitura do 'string'.\n");
exit(1);
}
}

void fwritechar (FHANDLE f, char x)
{
fprintf(f,"%c",x);
}

void fwriteint (FHANDLE f, int x)
{
fprintf(f,"%d ",x);
}

void fwritefloat (FHANDLE f, float x)
{
fprintf(f,"%.20g ",x);
}

void fwritedouble (FHANDLE f, double x)
{
fprintf(f,"%.20g ",x);
}

void fwritestring (FHANDLE f, char s[])
{
fprintf(f,"%s ",s);
}

void fwriteline (FHANDLE f, char s[])
{
fwritestring(f,s);
fnewline(f);
}

void fnewline (FHANDLE f)
{
fprintf(f,"\n");
}

[/codebox]

Po é isso, espero que eu tenha ajudado... ;)

Falow

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...