Algorithm 版 (精华区)
发信人: sino (蚱蜢舟), 信区: Algorithm
标 题: 小修小补龙贝格
发信站: 哈工大紫丁香 (2002年01月16日11:00:03 星期三), 站内信件
发信人: cutemic (CS99-::我是杂草), 信区: ACMICPC
标 题: 小修小补龙贝格
发信站: 逸仙时空 Yat-sen Channel (Tue Jan 15 19:55:32 2002), 站内信件
把原来的 while(fabs(A-T[0])>e);
更改为 while(fabs(T[1]-T[0])>e);
结果由 17 秒钟变成 8 秒钟
原因是 T[1]是T(h/2)的结果,T[0]是T[h]的结果;
T[1]要比T[0]精确些;每次求解可以省略1步;
在特殊情况下可以省略两部;
不过没有什么用,只是小修小补流程而已。
#include<iostream.h>
#include<time.h>
#ifndef fabs
#define fabs(x) ((x)>0?double(x):double(-(x)))
#endif
double f(double x)
{
return x*x;
}
double Romberg(double f(double x), double a,double b,double e)
{
double T[50];
double h;
double M;
//double A;
int l;
int n;
l = 0;
n = 1;
h = b-a;
T[0] = (f(a)+f(b))*h*0.5;
do
{
M = 0;
//A = T[0];
for(int i=0;i<n;i++)
{
M+=f(a+(i+0.5)*h);
} M*=h;
T[l+1] = (T[l]+M) / 2;
double G = 4;
for(int j=l;j>=0;j--)
{
T[j] = (T[j+1] - T[j]/G) / (1-1/G);
G*=4;
}
l++;n*=2;h*=0.5;
}
while(fabs(T[1]-T[0])>e);
return T[0];
}
--
... 这一阵歌声传入湖边一个道姑耳中。她在一排柳树下悄立已久,
晚风拂动她杏黄色道袍的下摆,拂动她颈中所插拂尘的万缕柔丝,心
头思潮起伏,当真亦是「芳心只共丝争乱」 ...
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: mtlab4.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.116毫秒