Nevilleアルゴリズム

3385 ワード

Nevilleアルゴリズムは数値解析である点の補間を計算する時に、やはりいいです.
#include <stdio.h>
#include <math.h>
#include <string.h>
void main()
{  
    double x=2;
    double x0[]={0,1,3};
    double y0[]={1,3,2};
    int i,j,n;
    double dx[3],d[3][3],p1[3],p2[1];
    n=sizeof(x0);
    for(i=0;i<=2;i++)
        for(j=0;j<=2;j++)
            d[i][j]=x0[i]-x0[j];
        for(i=0;i<=2;i++)
        dx[i]=x-x0[i];
    for(i=0;i<=1;i++)
        p1[i]=(dx[i]*y0[i+1]-dx[i+1]*y0[i])/d[i][i-1];
    p2[0]=(dx[0]*p1[1]-dx[2]*p1[0])/d[2][0];
    printf("        %d       x=%lf     
%lf
"
,n/sizeof(double)-1,x,p2[0]); } /* Neville's , 。 , , 。 */
クラスメートの誕生日が同じ日になる確率を計算するコードを添付します.主に小数点以下の分母による大きな丸め誤差と優れた計算順序による減少誤差と計算速度の増大の利便性を体得する.
#include <stdio.h>
void main()
{double s=1;
int i,n=60;
    for(i=365;i>=365-n+1;i--)
    {
        s=s*i/365;
    }
printf("     %d%lf
"
,n,1-s); }