线性和二次插值

一剑行天下 posted @ 2008年11月01日 19:18 in 数值分析 , 2100 阅读


 


#include<stdio.h>
main()
{
        float y1,y2,y3,x,x1,x2,x3;
        float l1,l2,l3,y;
        printf("下面是线性插值\n");
        printf("input two points x1 ,x2,:\n因为求0.54点的值,所以选点0.5和0.6  input:\n");
        scanf("%f,%f",&x1,&x2);
        printf("请输入对应的函数值y1,y2\n");
        scanf("%f,%f",&y1,&y2);
        printf("input x=\n");
        scanf("%f",&x);
        l1=(x-x2)/(x1-x2);
        l2=(x-x1)/(x2-x1);
        y=y1*l1+y2*l2;
        printf("线性插值结果y=ln(%f)=%f\n",x,y);
        printf("二次插值。请输入x1,x2,x3\n");
        scanf("%f,%f,%f",&x1,&x2,&x3);
        printf("input y1,y2,y3\n");
        scanf("%f,%f,%f",&y1,&y2,&y3);
        printf("input x=\n");
        scanf("%f",&x);
        l1=(x-x2)*(x-x3)/((x1-x2)*(x1-x3));
        l2=(x-x1)*(x-x3)/((x2-x1)*(x2-x3));
        l3=(x-x1)*(x-x2)/((x3-x1)*(x3-x2));
        y=y1*l1+y2*l2+y3*l3;
        printf("\n二次插值结果:ln(%f)=%f",x,y);

}

 


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter