求用simpson 和cotes求积公式求积分exp(-x)的积分c程序(不要c++的),积分区间为0到1,并显示相对误差

如题所述

无法获得原函数exp(x ^ 2),我们只能用数值算法解决梯形公式,龙贝格公式,高斯公式,是一个很好的品种。我整理了一个利用Matlab实现高斯公式为解决整体功能。

函数S = GaussIntegrate()
%利用高斯求积公式数值积分

%f为可积函数,卢重功能,无论是符号函数
所述SYM('X');
F = EXP(X ^ 2);
卢= 1;

%一,B
正交间隔左边界和右边界= 1;的
B?= 2;

%,n表示的正交节点号是一个正整数>正= 8;
/>这个程序使用一个线性变换转换的时间间隔[A,B]为[-1.1]
%,同时使G = F * Rho是可积函数,然后使用
经典的高斯求积公式计算的正交多项式,勒让德多项式

如果N <= 0 | | N??=楼(N)
错误(错误, n必须是一个非负整数!“);
结束;

如果> B

错误(”错误的时间间隔左界有一定不大于右边的边界b');
结束;

%计算第n次勒让德多项式
风格X;
P = 1 /( 2 ^ n的阶乘(N))*差异((X ^ 2-1)^ N,N);
W =根(sym2poly(P));

对k = 1:N
A(K)= 2的数值积分
A =零(1,N);
S = 0; /((1-W(K )^ 2)*(SUBS(差异(P),W(K))^ 2));

T = A +(BA)/ 2 *(W(K)+1);
G =(BA)/ 2 *潜艇(F *卢,T);
S = S + A(K)*克;
结束;

--------------------------------
我花了八个节点计算精度达到小数点后8,效率还是非常高的。
注意:计算matlab工具箱呼叫枫符号,第一次运行时会加载一个小的患者。
重新运行速度非常快。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-17
不要C++干嘛发到C++板块来。。、
第2个回答  2012-12-23
你不读它,这个问题不问,兄弟,这是非常重要的,检查和测试了呀,你看的书友会