二重积分的C语言实现
想到求二重积分,我们可能第一下想到的是先对其中的一个变量进行积分,同时将另外一个变量看成常数,之后再对第二个变量进行积分,笔者高中的教材上就这这么写的。
但是对于计算机来说,实现不定积分是一件很困难的事情,于是这条“人类的方法”在计算机上面就行不通了,但是别急,我们可别忘了积分最原始的定义——分割 、 求和 、 取极限
我们先来复习一下二重积分的定义:
对于一重积分的情况,请参见https://blog.csdn.net/weixin_42612337/article/details/82829351
当然,这里面影响定积分的精度的主要因素就是N的大小,N越大,计算结果越接近真实值, 但同时,N越大,计算时间也就越长。
下面是C代码:
//
// main.c
// double_integral
//
// Created by Wayne on 2018/9/29.
// Copyright © 2018 Wayne. All rights reserved.
//#include <stdio.h>
#include <math.h>long double function(long double x , long double y); //这里声明被积函数int main(void)
{unsigned long long N = 1000000000; //强烈建议把N取小一点 , 十亿实在算的太慢了unsigned long long i , j;long double V;long double a , b , c , d;scanf("%Lf %Lf %Lf %Lf" , &a , &b , &c , &d);for (j = 0 ; j <= N ; j++){for (i = 0 ; i <= N ; i++){V += ((b - a) * (d - c) / (N * N)) * function((a + ((b - a) / N) * i) , (c + ((d - c) / N) * j));}}printf("%Lf\n" , V);return 0;
}long double function(long double x , long double y) //这里定义被积函数
{long double z = x + y; //我们取 f(x,y) = x + y 这个简单的情形为例return z;
}
下面是终端运行的情况,注意在这里笔者取了两个积分区间,其中
,
对于至于为什么不取上面代码里面的十亿,看第四段。
对于D1:(真实值应该是20.625)
对于D2:(真实值应该是1)
由于笔记本电脑运算能力导致的运算时间的限制,我不得不降低了精读,如果使用更加专业的工具,或许就能在提高精度的同时提高速度了。
二重积分的C语言实现相关推荐
- 学习笔记——利用CC++语言计算二重积分
二重积分定义如下(来源百度百科) 以z=xy在区域0<=y<=1,0<=x<=y內的二重积分为例,经计算理论值为:0.125,下面用C语言实现二重积分的离散计算 #includ ...
- c语言编求二重积分_如何用C语言求二重定积分?
展开全部 按二重积分的定义做. 我的这32313133353236313431303231363533e59b9ee7ad9431333330333631个出错,一起讨论下吧: #include #i ...
- c语言编求二重积分_c语言实现二重积分
二重积分的表达形式 其中积分区域为:x=1 y=1 y=-4/5*x+29/5 积分函数为: f(x,y)=1 #include <stdio.h> #include & ...
- R语言(二) 多种蒙特卡洛法计算一二重积分
目录 蒙特卡洛积分的基本思想 一.内置函数+平均值法 二.对偶变量法 三.控制变量法 四.重要性抽样法 蒙特卡洛积分的基本思想 考虑可积函数g(x)g(x)g(x),现要计算∫abg(x)dx\int ...
- c语言分母多项乘积怎么算,C++编程 用梯形求积公式求解定积分∫3lnxdx积分区间为(1,2, C语言,用梯形法编程求定积分x^3+x/2+1的值...
问题标题 C++编程 用梯形求积公式求解定积分∫3lnxdx积分区间为(1,2, C语言,用梯形法编程求定积分x^3+x/2+1的值 2019-8-16来自ip:15.179.13.64的网友咨询 浏 ...
- Go语言的错误异常处理机制及其应用
一.背景 在日常编写golang程序或阅读别人的golang代码时,我们总会看到如下的一堆代码块: xx, err = func(xx) if err != nil {//do sth. to tac ...
- Go 知识点(19)— Go 语言中的野指针
野指针是一种指向内存位置是不可知的指针,一般是由于指针变量在声明时没有初始化所导致的.在 Go语言中,布尔类型的零值为 false,数值类型的零值为 0,字符串类型的零值为 "", ...
- gcc 自动识别的文件扩展名,gcc/g++ -x 选项指定语言,不同 gcc 版本 -std 编译选项支持列表
对于执行 C 或者 C++ 程序,需要借助 gcc(g++)指令来调用 GCC 编译器. 对于以 .c 为扩展名的文件,GCC 会自动将其视为 C 源代码文件 对于以 .cpp 为扩展名的文件,GCC ...
- OpenCV 笔记(07)— Mat 对象输出格式设置(Python 格式、CSV 格式、NumPy 格式、C 语言格式)
首先是下面代码中将要使用的 r 矩阵的定义.需要注意,我们可以通过用 randu 函数产生的随机值来填充矩阵, 需要给定一个上限和下限来确保随机值在期望的范围内. Mat r = Mat(2, 3, ...
最新文章
- AI一分钟|阿里成立“罗汉堂”;vivo微信人脸识别支付下半年商用
- 保护模式及其编程——8086系统寄存器和系统指令
- Educational Codeforces Round 13 E. Another Sith Tournament 状压dp
- linux搭建ca服务器搭建,linux下安装EJBCA 搭建私有CA服务器
- rxjs的map和switchMap在SAP Spartacus中的应用 -将高阶Observable进行flatten操作
- 使用Task简化Silverlight调用Wcf
- 基于Docker搭建Jumpserver堡垒机操作实践
- 网路游侠:铱迅软件版WEB应用防火墙试用
- [Coci2015]Divljak
- DTCMS插件的制作实例电子资源管理(三)前台模板页编写
- livedata mvvm_Android MVVM LiveData数据绑定
- Android UI(一)Layout 背景局部Shape圆角设计
- 晚安西南-----尾管悬挂与回接
- 研究了一堆英语学习软件,发现了一个美国宝藏口语App,国内也能用!
- 维生素C - 坏血症
- 中文改写神器下载-中文改写神器
- 技术人员如何从外包开始自己的事业
- 两个字符串首尾相连,查看是否相同
- Docker基础之安装部署
- 2016-2017 7th BSUIR Open Programming Contest. Final 补题