- 积分
- 15
- 注册时间
- 2013-8-29
- 仿真币
-
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2013-10-14 10:06:42
|
显示全部楼层
来自 加拿大
本帖最后由 winner245 于 2013-11-7 15:49 编辑
我先抛砖引玉,给出我自己的解法:- format long
- warning off
- tol = 1e-6; % 6 位小数精度
- f = @(x) cos(log(x)./x)./x;
- [y,e] = quadgk(f,1e-2,1,'RelTol',1e-8,'AbsTol',1e-12);
- error = [];
- ub = 1e-2; lb = ub/2;
- [y0,e] = quadgk(f,lb,ub,'RelTol',1e-8,'AbsTol',1e-12);
- while abs(y0)>tol
- if e>tol/100
- lb = (lb+ub)/2;
- else
- ub = lb;
- lb = ub/2;
- y = y+y0; % 每次只叠加满足精度要求的积分
- error = [error e]; %记录一下每次有效积分的误差
- end
- [y0,e] = quadgk(f,lb,ub,'RelTol',1e-8,'AbsTol',1e-12);
- end
- error
- sum(error)
- y
复制代码 得到:
y =
0.323383328325528 |
评分
-
1
查看全部评分
-
|