C语言实现变步长求积分算法
链接:https://blog.csdn.net/chen_dsir/article/details/71257631 博主详细介绍了复合梯形公式,
链接:https://wenku.baidu.com/view/b300c53deefdc8d376ee3228.html 详细介绍了变步长的目的,以及变换的方式
下面求解如下问题:
1、变步长:
由于多数情况下,并不知道步长设置为多少合适,所以我们可以设置一个初始步长,求解一次,再把步长变为原来的一半,依次接下去,直到达到我们所需的精度。
2、代码:
#include<stdio.h>
#include<math.h>#define left 1.0 //左端的值
#define right 3.0 //右端的值
#define precision 0.0001 //定义精度 double f(double x)
{double m=100/(x*x)*sin(10/x);return m;
}int main()
{int i;int step=100; //初始化步数double stepLength=(right-left)/step; //步长double T=f(left)+f(right); //积分的值 for(i=1;i<=step-1;i++) {double x=left+i*stepLength;T+=2*f(x);}T=stepLength/2*T; //符合梯形公式求解结果printf("初始步长得到的积分值:%lf 所分的区间个数:%d\n",T,step);//下面改变步长,来细化精度double T1=T+100;double T2=T;double H; //减小步长后得到的积分值 while(fabs(T1-T2)>precision/2) {T1=T2;step=step*2;stepLength=(right-left)/step; H=0;for(i=1;i<step;i++){H+=2*f(left+stepLength*i);}H=f(left)+f(right)+H;H=H*stepLength/2; T2=(T1+H)/2; //将上次一的积分结果和减小步长后的积分结果求均值 } printf("初始步长得到的积分值:%lf 所分的区间个数:%d\n",T2,step);}
3、结果:
4、验证:
C语言实现变步长求积分算法相关推荐
- VS2017/c语言-求积分算法
用c语言计算积分 一.积分计算原理 先把积分区域划分为n个曲边梯形,每个求值点为曲边梯形的两个底边中点,求得每个曲边梯形的面积即为积分值 用近似法求得积分:当n为无穷大时,可将该曲边梯形近似看成矩形, ...
- Romberg求积分算法
// Integral-romberg方法求积分.cpp : 定义控制台应用程序的入口点. // /* romberg方法求积分 方法也称为逐次分半加速法.它是在梯形公式,simpson公式和newt ...
- C++实现复化梯形公式求积分算法
1. 算法原理简介 步1 将积分区间2n等分; 步2 调用复化梯形公式: 2. 应用实例 取 n=10,利用复化梯形公式计算积分: 3. 程序代码 #include <iostream> ...
- 龙贝格求积分算法例题_数值分析实习作业之龙贝格求积
北京化工大学数值分析,龙贝尔求积, 实习题五:用龙贝格求积公式法计算习题五第一题积分,是结果尽可能准确(eps = 0.000001) 主程序: %习题五:用龙贝格求积公式计算下列积分 clear c ...
- C++实现复化辛普森公式求积分算法
1. 算法原理简介 步1 将积分区间 [a,b] 分成 n 等分,分点为 xk=a+kh(k=0,1,⋯,n),其中 h=(b-a)/n. 步2 记区间 [xk,x(k+1)] 的中点为 x(k+1/ ...
- 抛物线求积公式求积分算法matlab,基于Matlab的数值积分公式问题.doc
基于Matlab的数值积分公式问题 数值分析 学 号: 学 生 姓 名 :教 师 : 教师 2数值积分算法介绍............................................. ...
- 抛物线求积公式求积分算法matlab,数值计算实验报告---复合求积公式(梯形、抛物线、龙贝格)、导数求值(三点、四点、五点公式)...
----------------------个人作业,如果有后辈的作业习题一致,可以参考学习,一起交流,请勿直接copy ··复合抛物线公式: ··龙贝格公式: 四.实验内容 ------1 实验题目 ...
- c语言分桃分题设计思路,C语言实现的猴子分桃问题算法解决方案
本文实例讲述了C语言实现的猴子分桃问题算法.分享给大家供大家参考,具体如下: 问题: 海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份 ...
- matlab用辛普森公式求积分_数值计算实验9 数值积分实验
实验9 数值积分实验 成绩 实验类型:●验证性实验 ○综合性实验 ○设计性实验 实验目的:进一步熟练掌握变步长数值积分算法,提高编程能力和解决定积分问题的实践技能. 实验内容:用龙贝格积分算法计算 ...
最新文章
- 基于现有工程解读stm32的工程文件
- python继承父类的调用
- LinkedBlockingQueue的put,take方法
- 使用Spring WebFlux构建反应性REST API –第1部分
- centos7.2 安装poco
- 重新想象 Windows 8.1 Store Apps (85) - 警报通知(闹钟), Tile 的新特性
- react+redux+antd图书管理系统学习
- pytorch中的gather函数_Pytorch中Emdedding函数的解释及使用方法
- SQL Server中的计算列概述
- 没有用户的可用性测试
- Python学习笔记九:文件I/O
- 成考java_成考本科课程:《Java程序设计》
- Linux 日志查看命令journalctl
- NPOI实现Word表格新增一行
- webgame《天龙诀》完整网页游戏源码
- R语言条形图 bar chart
- win10和win7两个计算机相连,详解win10两台电脑网线直连的操作方法
- 英语四级计算机二级的微信推文,简明·实用 | 瞬间高大上的微信公众号推文制作...
- OUC离散数学II实验二(Python+Cpp)
- kingcms php 排序 标签,kingcms全部标签使用教程