数值分析四次实验

第一次:牛顿插值

//n次牛顿插值的算法
#include
#include

void main(void)
{
    double f[10][10],resx,resy;
    int n,i,j;
    double x[10] = {0.40,0.55,0.65,0.80,0.90};;
    f[0][0]=0.41075;
    f[1][0]=0.57815;
    f[2][0]=0.69675;
    f[3][0]=0.88811;
    f[4][0]=1.02652;
    //scanf("%d",&n);
    //scanf("%lf",&x[i]);
    //scanf("%lf",&f[i][0]);
    n=5;
    /*Calculate*/
    for(j=1; j<=n-1; j++)
    {
        for(i=j; i<=n-1; i++)
        {
            f[i][j]=(f[i][j-1]-f[i-1][j-1])/(x[i]-x[i-j]);
        }
    }
    /*Print*/
    printf("xi\t");
    printf("fxi     \t",j);
    for(j=1; j<=n-1; j++)
        printf("%d阶差商     \t",j);
    printf("\n");
    for(i=0; i<=n-1; i++)
    {
        printf("%0.2f\t",x[i]);
        for(j=0; j<=i; j++)
        {
            printf("c[%d][%d]=%.5f ",i,j,f[i][j]);
        }
        printf("\n");
    }
    /*Calculate for res*/
    resx=0.596;
    resy=0.0;
    for(i=0;ifor(j=0;j*=(resx-x[j]);
        }
        resy+=temp;
        printf("N_[%d](%.3f)=%.5f\n",i,resx,resy);
    }
    return 0;
}

第二次实验:龙贝格

#include
#include
#include

using namespace std;

#define P 0.00000001
#define e 2.71828183
#define MAXReTeat 10
#define a 0
#define b 1
#define b acos(-1)

double f(double x) { //被积函数
    //return 4.0/(1+x*x);
       return exp(x)*cos(x);
}


double Romberg() {
    int m,n,k;
    double y[MAXReTeat],h,eT,T,xk,s,q,S;
    h=b-a;
    y[0]=h*(f(a)+f(b))/2.0;//计算T1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               1(h)=1/2(b-a)(f(a)+f(b));
    m=1;n=1;
    eT=P+1;
    printf("              k             2^k           T(2^K)        S(2^K-1)        C(2^K-2)        R(2^K-3)\n");
    printf("%15d\t%15d\t%15.5f\n",m-1,(int)(pow(2,m-1)+1e-10),y[0]);
    while(eT>=P) {
        S=0.0;
        for(k=0; k0.5)*h;
            S+=f(xk);
        }
        printf("%15d\t%15d\t",m,(int)(pow(2,m)+1e-10));
        T=(y[0]+h*S)/2.0;
        printf("%15.5f\t",T);
        s=1.0;
        for(k=1; k<=min(4,m); k++) {
            s=4.0*s;// Pow(4,m)
            q=(s*T-y[k-1])/(s-1.0);//[pow(4,m)T`m`(h/2)-T`m`(h)]/[pow(4,m)-1]
            y[k-1]=T;
            if(k==1)printf("%15.5f\t",q);
            if(k==2)printf("%15.5f\t",q);
            if(k==3)printf("%15.5f\t",q);
            T=q;
            if(k==min(4,m))puts("");
        }
        eT=fabs(q-y[m-1]);
        y[m]=q;
        m=m+1;
        n*=2;
        h=h/2.0;
    }
    return q;
}
int main() {
    double result = Romberg();
    printf("龙贝格算法计算结果:%.7f",result);
    return 0;
}

高斯列主元消元法

c++

你可能感兴趣的:(数据库,数据库)