各位大侠好!我现在想在VC++中编写MATLAB中一些积分函数,比如说:int(),quad2d(),integral2()这三个函数,请大侠指点一下,谢谢!
都是比较复杂的函数,可以先借助help、type和edit命令查看函数源代码;数学三大库GNU的GSL,blitz++以及MTL对积分也有支持;
要实现像matlab一样输入灵活的函数,个人感觉还是很不容易的,但是面向具体的业务问题,在函数及条件给定前提下获得符号积分、数值积分近似解的实现还不是很难的,因为流程不外乎就是矩形法、梯形法和抛物线法,eg:用梯形法(1000等份)求以下三个函数的定积分(当然如果作为工业使用这个for循环需要解决累加溢出和性能问题):
f1(x)=1+x*x(积分区间0到1)
f2(x)=1+x+x*x+x*x*x(积分区间0到2)
f3(x)=x/(1+x*x)(积分区间0到3.5)
常用数值积分算法实现:
1 梯形求积法(TRAPZD->QTRAP)
2 辛普森(Simpson)求积法(QSIMP)
3 龙贝格(Romberg)求积法(QROMB)
4 反常积分(MIDPNT, MIDINF, MIDSQL, MIDEXP->QROMO)
5 高斯求积法(QGAUS, GAULEG)
6 三重积分(QUAD3D)