Romberg법

언어/Coding 2015. 12. 22. 02:52

#include <stdio.h>

#include <stdlib.h>

#define _USE_MATH_DEFINES

#include <math.h>

#define f(x) log10(1+x)*sin(10*x) //함수 나중에 바꿔줘야 함

double T[20],R[20][20],h[20],a,b;

int n;


int main() {

        double sum;

        int i,k,j;

        printf("구간 값 a(적분 밑에 있는 값):");        scanf("%lf",&a);

        //printf("구간 값 b:"); //scanf("%lf",&b);

        b=2*M_PI;

        //printf("b:%lf\n",b);

        printf("구하고자 하는 R(n,n)에서의 n : ");      scanf("%d",&n);


        h[1]=b-a;

        printf("h[1]:%lf\n",h[1]);

        printf("f(b):%lf\n",f(b));

        printf("log(1+2PI):%lf\n",log(1+b));

        T[1]=h[1]/2*(f(a)+f(b));

        printf("T[1]:%lf\n",T[1]);

        R[1][1]=T[1];

        printf("R[1][1]:%lf\n",R[1][1]);

        for(i=2;i<=n;i++)

        {

                h[i]=h[i-1]*0.5;

                printf("h[%d]:%lf\n",i,h[i]);

                sum=0;

                for(k=1;k<=pow(2,i-2);k++)

                {

                        sum=sum+f(a+(2*k-1)*h[i]);

                }

                T[i]=0.5*T[i-1]+h[i]*sum;

                printf("T[%d]:%lf\n",i,T[i]);

R[i][1]=T[i];

                //printf("R[%d][1]:%lf\n",i,R[i][1]);

                for(j=2;j<=i;j++)

                {

                        R[i][j]=((pow(4,j-1)*R[i][j-1])-R[i-1][j-1])/(pow(4,j-1)-1);

                        //printf("first:%lf\n",pow(4,j-1)*R[i][j-1]);

                        //printf("second:%lf\n",R[i-1][j-1]);

                        //printf("pow(4,j-1):%lf\n",pow(4,j-1)-1);

                        //printf("R[%d][%d]:%lf\n",i,j,R[i][j]);

                }

                //printf("h[3]:%lf\t R[3][1]:%lf\n",h[3],R[3][1]);

        }

        printf("R11:%lf\n",R[1][1]);

        printf("R31:%lf\t R21:%lf\n",R[3][1],R[2][1]);

        printf("R32:%lf \t R22:%lf\n",R[3][2],R[2][2]);

        printf("n값에서의 R[n][n]:%lf\n",R[n][n]);

}



'언어 > Coding' 카테고리의 다른 글

할선법  (0) 2015.12.22
가상 위치법  (0) 2015.12.22
simpson 1/3 공식  (0) 2015.12.22
거듭제곱  (0) 2015.12.22
역 거듭제곱  (0) 2015.12.22
Posted by 知彼知己百戰不殆
,