计算方法实验:用拉格朗日插值法计算插值问题

  • 实验内容

用牛顿插值法计算插值问题(+小实验 6) (大实验见 p316,实验 5 函数插值(2),要求用 MATLAB 和 C 语言完成)

【小实验 6】 问题描述 Huffman 树在编码中有着广泛的应用。在这里,我们只关心 Huffman 树的构造过 程。 给出一列数{pi}={p0, p1, …, pn-1},用这列数构造 Huffman 树的过程如下: 1. 找到{pi}中最小的两个数,设为 pa 和 pb,将 pa 和 pb 从{pi}中删除掉,然后将 它们的和加入到{pi}中。这个过程的费用记为 pa + pb。 2. 重复步骤 1,直到{pi}中只剩下一个数。 在上面的操作过程中,把所有的费用相加,就得到了构造 Huffman 树的总费用。 本题任务:对于给定的一个数列,现在请你求出用该数列构造 Huffman 树的总费用。 例如,对于数列{pi}={5, 3, 8, 2, 9},Huffman 树的构造过程如下: 1. 找到{5, 3, 8, 2, 9}中最小的两个数,分别是 2 和 3,从{pi}中删除它们并将和 5 加 入,得到{5, 8, 9, 5},费用为 5。 2. 找到{5, 8, 9, 5}中最小的两个数,分别是 5 和 5,从{pi}中删除它们并将和 10 加入, 得到{8, 9, 10},费用为 10。 3. 找到{8, 9, 10}中最小的两个数,分别是 8 和 9,从{pi}中删除它们并将和 17 加入, 得到{10, 17},费用为 17。 4. 找到{10, 17}中最小的两个数,分别是 10 和 17,从{pi}中删除它们并将和 27 加 入,得到{27},费用为 27。 5. 现在,数列中只剩下一个数 27,构造过程结束,总费用为 5+10+17+27=59。 输入格式 输入的第一行包含一个正整数 n(n<=100)。接下来是 n 个正整数,表示 p0, p1, …, pn1,每个数不超过 1000。 输出格式 输出用这些数构造 Huffman 树的总费用。 样例输入 5 5 3 8 2 9 样例输出 59

  • 实验程序

#include<stdio.h>

void paixu(int a[], int n);

int main()

{

    int i, n, a[100], b[100], sum = 0;

    scanf_s("%d", &n);

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

        scanf_s("%d", &a[i]);

    paixu(a, n);

    for (i = 0; i < n - 1; i++)

    {

        sum += a[i] + a[i + 1];

        a[i + 1] = a[i] + a[i + 1];

        a[i] = 0;

        paixu(a, n);

    }

    printf("%d", sum);

    return 0;

}

void paixu(int a[], int n)

{

    int i, j, temp;

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

    {

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

        {

             if (a[i] >= a[j])

             {

                 temp = a[i];

                 a[i] = a[j];

                 a[j] = temp;

             }

        }

    }

}

  • 实验结果分析及实验感想

牛顿插值法利用差商的概念,在给定的数据点上构造一个多项式函数,使得这个函数在给定的数据点上取值等于所给的数据值。与拉格朗日插值法相比,牛顿插值法具有承袭性的优势,即在增加额外的插值点时,可以利用之前的运算结果以降低运算量。相比上一次实验,可以看出一般情况下牛顿插值法计算更简便,在计算量小的时候可以选择用其来解决问题

  • 23
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值