-
2021-05-21 02:48:17
《C语言求定积分的通用函数》由会员分享,可在线阅读,更多相关《C语言求定积分的通用函数(2页珍藏版)》请在人人文库网上搜索。
1、C语言求定积分的通用函数对于一重定积分来说其求解可以使用梯形法进行求解,计算公式如下所示:Fx=x=abx*fx其中,f(x)为被积函数,x为横坐标的两点间的间隔,x越小,则计算出的结果越精确。对于求解此类问题可以使用C语言中的回调函数编写通用的计算函数,代码如下:#include #include #include/功能:返回f(x)在积分区间a,b的值/参数:FunCallBack 指向用于计算f(x)的函数/ a 积分区间的起始值/ b 积分区间的结束值/ dx 横坐标的间隔数,越小计算结果越准确double Calculate(double (*FunCallBack)(double 。
2、x),double a,double b,double dx)double doui;double total = 0; /保存最后的计算结果for (doui = a; doui = b; doui += dx)total += FunCallBack(doui)*dx;return total;double f2(double x)return x*x;double f(double x)return x;double f3(double x)return x*x*x ;int main()double total;total = (Calculate(f, 2, 3, 0.000001);printf(total = %lfn, total);total = (Calculate(f2, 2, 3, 0.000001);printf(total = %lfn, total);total = (Calculate(f3, 2, 3, 0.000001);printf(total = %lfn, total);return 0 ;其中,函数f,f2,f3为自行编写的关于x的被积函数。运行结果:total = 2.500000total = 6.333331total = 16.249991。
更多相关内容 -
C语言求定积分
2021-05-19 13:32:20算法思想根据定积分的定义分析可得:[x0,x1],[x1,x2],···,[xn-1,xn],将定积分的区间 [a,b] 分成 n 个子区间,其中:若右边的极限存在,其极限值即为定积分的值。理论上区间分得越细,越逼近定积分实际的值,...利用梯形法计算定积分
其中, f(x)=x3+3x2-x+2。
算法思想
根据定积分的定义分析可得:[x0,x1],[x1,x2],···,[xn-1,xn],将定积分的区间 [a,b] 分成 n 个子区间,其中:
若右边的极限存在,其极限值即为定积分的值。理论上区间分得越细,越逼近定积分实际的值,一般采用梯形法近似计算定积分的值,把区间 [a,6] 划分成 n 等份,则任意第 f 个小梯形的面积为 (上底+下底)×高/2,si=H×[f(xi)-1)+f(xi)]/2,其中 xi+1=a+(i+1)×H;xi=a+i×H;H=(b-a)/n。该实例问题实际上转换为求 n 等份梯形的面积累计和。
程序代码
#include
#include
float collect(float s,float t,int m,float (*p)(float x));
float fun1(float x);
float fun2(float x);
float fun3(float x);
float fun4(float x);
int main()
{
int n,flag;
float a,b,v=0.0;
printf("Input the count range(from A to B)and the number of sections.\n");
scanf("%f%f%d",&a,&b,&n);
printf("Enter your choice:'1' for fun1,'2' for fun2,'3' for fun3,'4' for fun4==>");
scanf("%d",&flag);
if(flag==1)
v=collect(a,b,n,fun1);
else if(flag==2)
v=collect(a,b,n,fun2);
else if(flag==3)
v=collect(a,b,n,fun3);
else
v=collect(a,b,n,fun4);
printf("v=%f\n",v);
return 0;
}
float collect(float s,float t,int n,float (*p)(float x))
{
int i;
float f,h,x,y1,y2,area;
f=0.0;
h=(t-s)/n;
x=s;
y1=(*p)(x);
for(i=1;i<=n;i++)
{
x=x+h;
y2=(*p)(x);
area=(y1+y2)*h/2;
y1=y2;
f=f+area;
}
return (f);
}
float fun1(float x)
{
float fx;
fx=x*x-2.0*x+2.0;
return(fx);
}
float fun2(float x)
{
float fx;
fx=x*x*x+3.0*x*x-x+2.0;
return(fx);
}
float fun3 (float x)
{
float fx;
fx=x*sqrt(1+cos(2*x));
return(fx);
}
float fun4(float x)
{
float fx;
fx=1/(1.0+x*x);
return(fx);
}
调试运行结果
程序运行结果如下所示:
Input the count range(from A to B)and the number of sections.
0 1 100
Enter your choice:'1' for fun1,'2' for fun2,'3' for fun3,'4' for fun4==>2
v=2.750073
总结
① 定义 collect() 函数时,函数的首部 “float collect(float s,float t,int n,float (*p)(float x))” 中的 “float (*p)(float x)” 表示 p 是指向函数的指针变量,该函数的形参为实型。在 main() 函数的 if 条件结构中调用 collect() 函数时,除了将 a,b,n 作为实参传给 collect 的形参 s,n,t 外,还必须将函数名 fun1,fun2,fun3,fun4 作为实参将其入口地址传递给 collect() 函数中的形参 p。
② 函数也是有地址的,函数名作为函数的首地址。可以定义一个指向函数的指针变量,将函数入口地址赋予指针变量,然后通过指针变量调用函数,这样的指针变量即称为指向函数的指针。
③ 函数指针也是指针变量,可以实现指针变量的运算,但不能进行算术运算,因为函数指针的移动是毫无意义的,不同于数组指针变量,加减一个整数可以使指针指向后面或前面的数组元素。
④ 在函数调用中 “(* 指针变量名)” 两边的括号不可少,其中此处为一种表示符号,而不是求值运算。
-
C语言使用矩形法求定积分的通用函数
2020-08-24 23:28:34主要为大家详细介绍了C语言使用矩形法求定积分的通用函数,分别求解sinx, cosx,e^x,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
C语言实现定积分求解方法
2020-07-21 15:52:11本文章是关于C语言实现定积分求解方法。 -
C语言实现求定积分的方法
2020-09-03 22:22:13主要介绍了C语言实现求定积分的方法,涉及C语言操作相关数学函数的技巧,具有一定参考借鉴价值,需要的朋友可以参考下 -
C语言实现定积分的计算
2022-01-08 13:00:41二、C语言实现定积分(函数指针的方法)1. 上才(代)艺(码)2.读入数据总结 前言 定积分是什么?定积分是如何计算的?用C语言该如何实现 一、定积分是什么? 定积分定义: 设函数f(x) 在区间[a,b]上连续,将区间...
前言
定积分是什么?定积分是如何计算的?用C语言该如何实现
一、定积分是什么?
定积分定义:设函数f(x) 在区间[a,b]上连续,将区间[a,b]分成n个子区间[x0,x1], (x1,x2], (x2,x3], …, (xn-1,xn],其中x0=a,xn=b。
可知各区间的长度依次是:△x1=x1-x0,在每个子区间(xi-1,xi]中任取一点ξi(1,2,…,n),作和式 。该和式叫做积分和,设λ=max{△x1, △x2, …, △xn}(即λ是最大的区间长度)。
如果当λ→0时,积分和的极限存在,则这个极限叫做函数f(x) 在区间[a,b]的定积分,记为 ,并称函数f(x)在区间[a,b]上可积。
其中:a叫做积分下限,b叫做积分上限,区间[a, b]叫做积分区间,函数f(x)叫做被积函数,x叫做积分变量,f(x)dx 叫做被积表达式,∫ 叫做积分号。
以上解析来自于百度知道二、C语言实现定积分(函数指针的方法)
1. 上才(代)艺(码)
代码中有部分注释
代码如下:/** * @file MooC_Point_Dingjifen.c * @author Zheng Hao (2278757316@qq.com) * @brief 函数指针实现定积分的计算,中国大学Mocc苏小红老师的C语言教程(关于指针) * @version 0.1 * @date 2022-01-08 * * @copyright Copyright (c) 2022 * */ #include <stdio.h> #include <stdlib.h> float Integral(float (*f)(float), float a, float b); float F1(float x); float F2(float x); int main() { float y1,y2; y1=Integral(F1,0.0,1.0); y2=Integral(F2,0.0,3.0); printf("F1的值:%lf\nF2的值:%lf\n",y1,y2); //程序中断函数,如果用的编辑器不是VsCode可以忽略 system("pause"); return 0; } // 指针调用函数计算定积分 float Integral(float (*f)(float), float a, float b) { //S是面积,h指高 float s, h; int n = 100, i; s = ((*f)(a) + (*f)(b)) / 2; h = (b - a) / n; for (i = 1; i <=n; i++) { s = s + (*f)(a + i * h); } return s * h; } float F1(float x) { //计算函数1/(1+X^2) return 1+x*x; } float F2(float x) { //计算函数 return x/(1+x*x); }
2.实现原理
这里主要是给大家看调试图。
总结
注意观察上图中左上方的监视值。这里计算定积分的方法是用到了定积分的几何意义来计算。用到的知识有:指针函数的用法、用到的编辑器是VSCode。
下面是网课的链接地址,大家感兴趣可以看一下。
C语言设计精髓 -
C语言求解定积分的方法
2021-01-20 02:07:29本文实例为大家分享了C语言求解定积分的具体方法,供大家参考,具体内容如下 题目要求: 求下面函数的定积分: 思路: 求一个函数的定积分,其实就是求它的面积,如对函数 求积分。 也就是要求出绿色部分的面积,... -
c语言实现定积分运算
2022-07-09 14:38:22c语言实现积分运算原理:梯形法求积分
https://wuli.wiki/online/NumInt.html
c语言实现:#include <stdio.h> //定积分运算函数:integral //参数1:被积函数 参数2:积分下限 参数3:积分上限 参数4:运算精度(数值越大精度越高) //返回值:积分运算结果 float integral(float (*f)(float),float a,float b,int precision=1000){ float h = (b-a)/precision; float result = 0; for(float i = 0;i<b-a;i+=h){ result += (f(a+i)+f(a+i+h))/2; } return result*h; } //x^2+3x-29 float fun_1(float x){ return x*x+3*x-29; } int main(){ printf("函数x^2+3x-29在区间[2,44]的定积分是:%f\n",integral(fun_1,2.0f,44.0f,1000)); return 0; }
-
定积分用C语言求解
2022-05-06 15:51:17将定积分拆解之后就得到下面的图形 即利用小矩形的面积和来解决问题 然后进行整理即可的到下面的算式 #include<stdio.h> float f(float x) { return 1+x*x;//假设被积函数为1+x*x } float integra(float... -
C语言代码辛普森法求定积分
2011-06-24 10:54:36通过更改数学函数Ibase,积分上下限a,b,和误差系数eps,调用函数quad(a,b,eps)进行辛普森积分求值,得到最终结果。 -
C语言用6种方法求定积分.doc
2021-05-24 10:38:57C语言用6种方法求定积分描述问题利用①左矩形公式,②中矩形公式,③右矩形公式 ,④梯形公式,⑤simpson公式,⑥Gauss积分公式求解定积分。分析问题2.1定积分21.1定积分的定义定积分就是求函数在区间中图线下包围的... -
C语言求解定积分(蒙特卡罗方法)
2022-01-12 21:59:51求解区间 [2,3][2, 3][2,3] 上的定积分: ∫23(x2+4xsin(x))dx \int_{2}^{3}(x^2 + 4xsin(x)) dx ∫23(x2+4xsin(x))dx 代码如下: #include <iostream> #include <math.h> using namespace std; ... -
C语言用六种方法求定积分
2021-05-19 13:34:16《C语言用六种方法求定积分》由会员分享,可在线阅读,更多相关《C语言用六种方法求定积分(14页珍藏版)》请在人人文库网上搜索。1、C语言 用六种方法求定积分C语言实验报告hW 10伫必勺计算科学於 姓名戴良伟学兮2皿... -
C语言丨定积分的近似计算
2021-12-13 11:08:31本文分别介绍定积分的近似计算的三种方法:矩形法、梯形法、抛物线法。 -
C语言用六种方法求定积分.doc
2021-05-20 11:38:01C语言用六种方法求定积分C语言实验报告求定积分班级 10信息与计算科学一班姓名 戴良伟学号 2010750221描述问题利用①左矩形公式,②中矩形公式,③右矩形公式 ,④梯形公式,⑤simpson公式,⑥Gauss积分公式求解定... -
菜鸟学C语言(五)之求定积分
2021-05-19 16:04:29求定积分近似值试求定积分 的近似值(积分限a,b从键盘输入)。算法分析如下:求定积分的近似值常有矩形法与梯形法,其实质都是面积求和。 矩形法是把所要求的面积垂直x轴分成n个小矩形,然后把这n个小矩形的面积相加,... -
c语言求解定积分c语言求解定积分.doc
2022-07-02 08:09:10c语言求解定积分c语言求解定积分 -
如何用C语言求二重定积分?
2020-12-23 14:39:01展开全部按二重积分的定义做。我的这32313133353236313431303231363533e59b9ee7ad9431333330333631个出错,一起讨论下吧:#include#include#defineN100voidmain(){doubleresult,(*p)(double,double);doublef(double,... -
C语言实现黎曼和求定积分
2020-08-24 23:28:17主要为大家详细介绍了用C语言程序实现黎曼和求定积分,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
定积分的C语言实现
2018-09-24 15:41:04想到求积分,我们第一步...这里我们就要回到定积分的最原始的定义,一切从定义出发就一定能算出来。 这篇我们先看一重的情况,对于二重积分,请参见https://blog.csdn.net/weixin_42612337/article/details/8289... -
C语言__用六种方法求定积分
2013-01-11 14:06:27C语言__用六种方法求定积分