首页 > 编程语言 >(计算机数值分析)龙贝格算法C语言版

(计算机数值分析)龙贝格算法C语言版

时间:2024-11-04 19:16:05浏览次数:3  
标签:R2 S2 S1 T2 T1 算法 C2 C语言 龙贝格

#1024程序员节|征文#

计算机数值分析课上作业。

在讲完了复化梯形公式T,复化辛甫生公式S和科特斯公式C之后,观察他们的公式发现存在一个关系。即:

(I-T2n)/I-Tn = 1/4,(I-S2n)/(I-Sn) = 1/16,(I-C2n)/(I-Cn) = 1/64

于是得到以下关系:Sn = 3/4T2n - 1/3Tn
                                   Cn = 16/15S2n - 1/15Sn

由此得到龙贝格公式:Rn = 64/63C2n - 1/63Cn

运用龙贝格公式可以将收敛速度缓慢的梯形公式迅速收敛。

一下就例题展示。

如果仅使用复化梯形公式计算积分值,需要用变步长方法二分10次才能得到结果。但是如果我们使用龙贝格公式的话,能加速计算,大大降低时间和运算成本。

然后我们仅需要使用二分3次的数据,通过3次加速就获得了二分10次才能求得的结果。

以下是c语言源代码呈现:

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
long double Value(double x)
{
    return sin(x)/x;
}

int main(void) {
    int a=1, b=1,k=1;
    double h=1,x=1;
    long double e=1,S=1,S1=1,S2=1,T1=1,T2=1,C1=1,C2=1,R1=1,R2=1;
    printf("请输入a,b,e:");
    scanf("%d%d%Lf", &a, &b, &e);
    h = b - a;
    T1 = (1 + Value(b)) * (h / 2);
    printf("T1的值为:%.7Lf\n",T1);
    k = 1;
    S = 0;
    x = a + h / 2;
    while (x < b)
    {
    S += Value(x);
    x += h;
    }
    T2 = T1/2+(h/2)*S;
    S2 = T2 + 1/3*(T2-T1);
    if(k==1){
        k += 1;
        h = h/2;
        T1 = T2;
        S1 = S2;
        S = 0;
        x = a + h / 2;
        while (x < b)
        {
            S += Value(x);
            x += h;
        }
        T2 = T1/2+(h/2)*S;
        S2 = T2 + (T2-T1)/3;
    }
    C2 = S2 + (S2 - S1)/15;
    if(k==2)
    {
        C1 = C2;
        k += 1;
        h = h/2;
        T1 = T2;
        S1 = S2;
        S = 0;
        x = a + h / 2;
        while (x < b)
        {
            S += Value(x);
            x += h;
        }
        T2 = T1/2+(h/2)*S;
        S2 = T2 + (T2-T1)/3;
        C2 = S2 + (S2-S1)/15;
    }
    R2 = C2 + (C2 - C1)/63;
    if(k==3)
    {
        R1 = R2;
        C1 = C2;
        k += 1;
        h = h/2;
        T1 = T2;
        S1 = S2;
        S = 0;
        x = a + h / 2;
        while (x < b)
        {
            S += Value(x);
            x += h;
        }
        T2 = T1/2+(h/2)*S;
        S2 = T2 + (T2-T1)/3;
        C2 = S2 + (S2-S1)/15;
        R2 = C2 + (C2 - C1)/63;
    }
    while(abs(R2 - R1) >= e)
    {
        R1 = R2;
        C1 = C2;
        k += 1;
        h = h/2;
        T1 = T2;
        S1 = S2;
        S = 0;
        x = a + h / 2;
        while (x < b)
        {
            S += Value(x);
            x += h;
        }
        T2 = T1/2+(h/2)*S;
        S2 = T2 + (T2-T1)/3;
        C2 = S2 + (S2-S1)/15;
        R2 = C2 + (C2 - C1)/63;
    }
    printf("R2的值为:%.7Lf",R2);
    return 0;
}

运行之后输入:0 1 1
出现以下结果:

对照给出的数据表:
​​​​​​​

发现计算出的值恰好是数值表中给出的值。

标签:R2,S2,S1,T2,T1,算法,C2,C语言,龙贝格
From: https://blog.csdn.net/2301_80165810/article/details/143233816

相关文章

  • UsingAI-算法实习生(数学方向)一面面经分享(10分钟):
    题目:1.继承和封装的特性2.Python中的多线程是真的多线程吗?是怎么实现的3.l1和l2正则化的对比(深度,收敛速度)4.神经网络的学习因子过大会导致什么5.卷积神经网络的核函数是越大越好的吗6.对于很大的数据集,怎样提高决策树的效率7.什么是模型过拟合,又怎么处理8.k值分类以文......
  • (算法)分割等和⼦集————<动态规划>
    1.题⽬链接:416.分割等和⼦集2.题⽬描述:3.解法(动态规划):算法思路:先将问题转化成我们「熟悉」的题型。如果数组能够被分成两个相同元素之和相同的⼦集,那么原数组必须有下⾯⼏个性质:        i.所有元素之和应该是⼀个偶数;        ii.数组中最⼤的......
  • (算法) ⽬标和————<动态规划>
    1.题⽬链接:494.⽬标和2.题⽬描述: 3.解法(动态规划):算法思路:本题可以直接⽤「暴搜」的⽅法解决。但是稍微⽤数学知识分析⼀下,就能转化成我们常⻅的「背包模型」的问题。设我们最终选取的结果中,前⾯加+号的数字之和为a,前⾯加-号的数字之和为b,整个数组的总和......
  • NSET or MSET算法--原理解析
    1.背景NSET/MSET是一种非线性的多元预测诊断技术,广泛应用于系统状态估计、故障诊断和预测等领域;相比于传统的线性模型和方法,NSET/MSET能够更好地处理非线性系统,并提供更准确的预测和诊断能力。在早期,MSET融合了模式识别技术和序贯概率比检验方法,主要应用于核电厂信号验证、......
  • 简单介绍机器学习与深度学习以及相关算法
    机器学习算法线性回归解释:线性回归是一种简单的预测算法,它通过寻找输入变量和输出变量之间的线性关系来进行预测。例子:假设你想预测一个房子的价格,可以根据房子的面积(输入)和价格(输出)画一条直线,线性回归就是找到这条最合适的直线。逻辑回归解释:尽管名字中有“回归”,逻......
  • 【算法设计】
    二分治策略2.1最大子数组问题分治算法分治法是一种将问题分解成子问题递归解决的算法思想,用于求解连续最大子数组问题非常合适。该问题的目标是找到数组中连续子数组的最大和。算法解释分解:将数组划分为左右两个子数组,分别求解左右子数组的最大子数组和。合并:最大子数......
  • 烟雾检测识别智慧矿山一体机水仓水位异常识别针对环境不安全因素的算法保障
    在现代矿业生产中,安全始终是最为关键的议题之一。为了提升矿山的安全监管水平,降低生产风险,智慧矿山一体机应运而生。这款设备融合了最新的人工智能技术,为矿山提供了一个全面、高效、智能化的安全解决方案。以下是对智慧矿山一体机的详细介绍,包括其产品特性、环境不安全因素的识别......
  • C语言链表深入解析:实现与应用
    ###标题:C语言链表深入解析:实现与应用---####正文:链表是计算机科学中重要的数据结构,因其灵活性和动态性而被广泛使用。本文将探讨链表的基本概念、实现方法以及一些常见的操作,帮助你全面掌握这一基础数据结构。---###一、链表概述链表由一系列节点组成,每个节点包含数据......
  • 越界检测视频分析网关视频智能分析网关周界入侵检测算法:智能安防的新高度
    在当今数字化和智能化快速发展的时代,安全监控系统正经历着一场技术革命。越界检测视频分析网关周界入侵检测算法,作为这场革命的前沿技术之一,正逐渐改变我们对安全监控的认知和实践。本文将详细介绍这一算法的技术特点、应用场景及其在提升安防效率和准确性方面的重要性,展示它是如......
  • 智慧园区算法视频分析服务器烟雾识别智慧园区安防视频监控及动态布控预警方案
    智慧园区安防视频监控及动态布控预警方案是一种综合性的安全管理解决方案,智慧园区算法视频分析服务器通过结合视频监控技术、人工智能算法、大数据分析等技术,实现对工厂区域内人、车、物的全面监控和管理。一、需求和目标1、系统建设目标:目标是构建一个重点区域的动态人脸识别......