Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   To caculate the Integrate by C Language (http://www.go4expert.com/forums/caculate-integrate-c-language-t24333/)

wdliming 1Jan2011 09:16

To caculate the Integrate by C Language
 
To caculate the Integrate by C Language
Code:

/*
*To achieve a particular function,To integrate f(x) = x; which is rom low to up
*sum=( (up-low)/n)*(f(x0)+f(x1)+...+f(x(n-1)) )
or sum=( (up-low)/n)*(f(x1)+f(x2)+...+f(x(n)) )
*Method:Fixed step quadrature;
*Date:                        2010-11-28
*modification:        2010-12-31 usage modification : else -> switch
*Version:                0.1.6
*Author:                wdliming
*description:        Using modular programming method
*/
#include <stdio.h>
#include <math.h>

double Integrate(double low,double up,        unsigned long int n,int F_Ch);
//double Func_Chioce(double x, int F_Ch);
void Start();

void Start()
{       
        printf("                                Mini Integrate\n");
        printf("                                  LiMing\n");
        printf("                                version 0.1.5\n");
        printf("Funcion 1:        f(x)=x;\n");
        printf("Funcion 2:        f(x)=x*x;\n");
        printf("Funcion 3:        f(x)=exp(x);\n\n");
        printf("Please input a number to select a funcion to integrate:\n");
}

double Integrate(double low,double up, unsigned long int N,int F_Ch)
{
        double temp=0;
        double sum=0;
        double temp_1=0;
        if( ((low>-100)&&(low<100)) && ( (up>-100)&&(up<100)) && (low != up) )
        {
        /*First,low and up is between -100 and 100;Second,low != up;Third,up>low*/
                printf("low=%lf,up=%lf.\n",low,up);
               
                if( (N>0)&&(N<429467295) )
                {
                        printf("N=%ld\n",N);
                                temp=(up-low)/N;
                        printf("temp=(up-low)/N=%lf\n",temp);
                        unsigned long int i;//counter i;
                        switch(F_Ch)
                        {
                                case 1:
                                        for(i=1;i<=N;i++)
                                        {
                                                temp_1=low+temp*i;
                                                sum = sum + temp_1;//This statement is very important!
                                        }sum *= temp;                                       
                                        break;
                                       
                                case 2:
                                        for(i=1;i<=N;i++)
                                        {
                                                temp_1=low+temp*i;
                                                sum = sum + pow(temp_1,2);//This statement is very important!
                                        }sum *= temp;
                                        break;
                                       
                                case 3:
                                        for(i=1;i<=N;i++)
                                        {
                                                temp_1=low+temp*i;
                                                sum = sum + exp(temp_1);//This statement is very important!
                                        }sum *= temp;
                                        break;
                        }
                        /*if(F_Ch==1)
                        {
                                for(i=1;i<=N;i++)
                                {
                                        temp_1=low+temp*i;
                                        sum = sum + temp_1;//This statement is very important!
                                }
                                sum *= temp;
                        }
                        else if(F_Ch==2)
                        {
                                for(i=1;i<=N;i++)
                                {
                                        temp_1=low+temp*i;
                                        sum = sum + pow(temp_1,2);//This statement is very important!
                                }
                                sum *= temp;
                        }
                        else if(F_Ch==3)
                        {
                                for(i=1;i<=N;i++)
                                {
                                        temp_1=low+temp*i;
                                        sum = sum + exp(temp_1);//This statement is very important!
                                }
                                sum *= temp;
                        }*/
                        //printf("Successful!The result of integral is:%lf\n\n",sum);
                }       
                else if(N<0)
                {
                        printf("Failed!The number you input is illegal!\n");
                        printf("continue!\n");
                }
                else
                {
                        printf("Failed!The number you input is too big!\n");
                        printf("continue!\n");
                }
        }
        else
        if( low == up )
        {
                printf("Successful!sum=%lf\n",sum=0);
                printf("continue!Input the two Real Number a(low) and b(up) again: low,up.\n\n");                       
        }
        else
        {
                printf("Failed!The number(s) you input is(are) too big!\n");
                printf("continue input the two Real Number a(low) and b(up) again: low,up.\n\n");
        }
        return sum;
}

int main()
{
       
        double low=0;
        double up=0;       
        double sum=0;
        int F_Ch=0;
        Start();
        while(scanf("%d",&F_Ch))
        {
                if(F_Ch>0&&F_Ch<4)
                {
                        printf("Selece Function %d;\n\n",F_Ch);
                       
                        printf("Input the two Real Number a(low) and b(up) to \ndefine the area that you want to integral: low,up.\n");
                        printf("for example:0,2\n\n");
                       
                        scanf("%lf,%lf",&low,&up);
                        printf("Input a number 'N':");
                        unsigned long int N;
                        scanf("%ld",&N);
                        sum=Integrate(low,up,N,F_Ch);
                        printf("Successful!The result of integral is:%lf\n\n",sum);
                }
                else
                {
                        printf("error!\n");
                }
        }
        return 0;
}

Welcome to give some constructive suggestions!Thank you!


All times are GMT +5.5. The time now is 00:54.