十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
sinx=sinx+pow(-1,(i-1)/2)*pow(x,i)/s 题主你看是不是这里有错,最后那里应该是pow(x,i)除以S的阶乘而不是除以S,越大的数跟它自己的阶乘相差越远,所以才会导致到100就完全不对了。
网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、小程序设计、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了尖扎免费建站欢迎大家使用!
你的factorial是一个函数,好象不可以直接乘以一个整数的吧,还有double factorial(int n)是不是需要一个返回值呢。
那这样吧,如果只求这个sinx的积分,你可以这样,根据积分的定义就是做适当的分割,每个小区间内,用曲面的内接梯形来近似整个曲面的面积(也就是精确积分)。
int main(){ double x,s,a;//为了提高精度,我把它们定义成双精度的。int i;scanf(%lf,&x);//注意x为弧度,输入的值过大没意义只要在-2*∏~2*∏即可。因为C语言的运算精确度有限。
x为double类型。泰勒展开式首先你知道吧?然后就根据泰勒展开式一项项计算呗,直到某一项的值小于10^-5为止。无非就是一个循环的事情啊。当然了,为了避免重复计算,可以根据前一项来计算后一项。
这是辛普森积分法。给你写了fun_1( ),fun_2(),请自己添加另外几个被积函数。调用方法 t=fsimp(a,b,eps,fun_i);a,b --上下限,eps -- 迭代精度要求。
(x*x)在(0,1)上定积分为%lf\n,fun(0,1,1000000));//区间数自己设越大值越精确 } 结果:数学分析:f(x)=x^2=x*x;定积分:x*x*x/3+c(常数)在区间(0,1)上定积分:1/3=0.333333 结果正确。
http://blog.itpub点虐 /14139916/viewspace-497879/ 求定积分的近似值常有矩形法与梯形法,其实质都是面积求和。矩形法是把所要求的面积垂直x轴分成n个小矩形,然后把这n个小矩形的面积相加,即为所求的定积分的值。
用梯形法估算,再用辛普森法。fsimpf 积分函数 a,b 积分下上限,eps 精度。
积分分为两种,数值积分,公式积分。公式积分:部分函数可以直接用公式求得其不定积分函数。C语言中可以直接用积分公式写出其积分函数。数值积分:按照积分的定义,设置积分范围的步长,用梯形面积累加求得其积分。
首先解决怎么算,计算机肯定不会积分,所以我开始想用sinx的泰勒展开式,然后选3-4次作为近似,然后积分。听你说梯形法,是数值计算的内容,刚好这学期在学,就把我调试的程序发一个给你吧这是romberg算法,把a 换为0,b换为pi就好了吧。
这是辛普森积分法。给你写了fun_1( ),fun_2(),请自己添加另外几个被积函数。调用方法 t=fsimp(a,b,eps,fun_i);a,b --上下限,eps -- 迭代精度要求。
对于一重定积分来说其求解可以使用梯形法进行求解,计算公式如下所示:其中,f(x)为被积函数,为横坐标的两点间的间隔,越小,则计算出的结果越精确。
例:求函数f(x)=x*x+2*x+1在【0,2】上的定积分。