标题:拉格朗日插值的一个自编程序
取消只看楼主
hy1592808878
Rank: 1
等 级:新手上路
帖 子:7
专家分:5
注 册:2011-5-22
结帖率:0
已结贴  问题点数:20 回复次数:0 
拉格朗日插值的一个自编程序
特点:对插值节点数没有约束。
#include <stdio.h>
#include <malloc.h>
#include <conio.h>
void main()
{
    //................//
    //lagrange插值举例//
    //................//

    double *xi,*yi,x,y;//xi,yi为插值节点,x为插值点;
    int n;//n为插值区间数量;
    int i,j,k;
    double P;

    y=0.0;
    printf("请输入插值区间数量(n=):\n");
    scanf("%d",&n);
    xi=(double*)malloc((n+1)*sizeof(double));
    yi=(double*)malloc((n+1)*sizeof(double));
    printf("请输入节点xi值:\n");
    for(i=0;i<=n;i++)
    {
        printf("xi[%d]:  ",i);
        scanf("%lf",(xi+i));
        printf("yi[%d]:  ",i);
        scanf("%lf",(yi+i));
        printf("\n");
    }
    printf("请输入插值点值:\n");
    printf("x=");
    scanf("%lf",&x);
    printf("\n");
    //下面实现插值功能
    for(k=0;k<=n;k++)
    {
        P=1.0;
        for(j=0;j<=n;j++)
        {
            if(k!=j) P*=(x-*(xi+j))/(*(xi+k)-*(xi+j));
        }
        y+=P*(*(yi+k));
    }
    printf("插值点x上的值为(y=):%lf",y);
    free(xi);
    free(yi);
    getche();
搜索更多相关主题的帖子: double void include 
2011-05-22 18:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-340749-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047804 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved