1、梯形数值积分计算 trapz()
X = 0:pi/100:pi
Y = sin(X)
Z = pi/100*trapz(Y)
2、自适应辛普森数值积分计算 quad()
F = @(x)1./(x.^3-2*x-5)
Q = quad(F,0,2)
3、自适应Lobatto积分计算 quadl()
function y = myfun(x)
y = 1./(x.^3-2*x-5)
end
Q = quadl(@myfun,0,2)
4、自适应Gauss Kronrod quadrature积分计算 quadgk()
function y = myfun(x)
y = exp(-x.^2).*log(x).^2
end
Q = quadgk(@myfun,0,Inf)
5、平面区域的二重积分的数值计算 quad2d()
fun = @(x,y) 1./( sqrt(x + y) .* (1 + x + y).^2 )
ymax = @(x) 1 - x
Q = quad2d(fun,0,1,0,ymax)
6、矩形区域的的二重积分数值计算 dblquad()
function z = integrnd(x, y)
z = y*sin(x)+x*cos(y)
end
Q = dblquad(@integrnd, pi, 2*pi, 0, pi)
7、三重积分数值计算 triplequad()
function f = integrnd(x, y, z)
f = y*sin(x)+z*cos(x)
end
Q = triplequad(@integrnd, 0, pi, 0, 1, -1, 1)
以上是最基本的求解数值积分方法。
H=(B-A)/N这一句不应该放在变量声明中,因为刚定义时,A,B,N没有赋值,是随机值应该将
float A,B,N,H=(B-A)/N,sum=0
改为:
float A,B,N,H,sum=0
将H=(B-A)/N放在scanf ("%f",&N)后面。
#另外建议将int i放在主函数起始处。
-----------------------------------------
更改后的程序:
#include<stdio.h>
float f(float x)
{
return 4/(x*x+1)
}
void main()
{
float A,B,N,H,sum=0
int i
printf ("请输入A值:")
scanf ("%f",&A)
printf ("请输入B值:")
scanf ("%f",&B)
printf ("请输入N值:")
scanf ("%f",&N)
H=(B-A)/N
for(i=1i<=Ni++)
{
sum+=(f(A)+f(A+H))*H/2
A=A+H
}
printf("%.5f\n",sum)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)