龙贝格算法
A. 龙贝格算法 椭圆周长 请帮忙修改一下程序~!!!!!!
1、在for(i=1;i<=pow(2,k-1);i++)之前加t=0;否则t重复累加;
2、for(i=1;i<pow(2,k-1);i++)改成for(i=1;i<=pow(2,k-1);i++),i需执行到i=pow(2,k-1);
3、调换for(k=0;k<20;k++)
{
for(m=1;m<4;m++)
的顺序,改为
for(m=1;m<4;m++)
{
for(k=0;k<21-m;k++)否则在算T[k][m]时,T[k+1][m-1]还未知
4、并把k<20改成k<21-m;因为辛普森序列比梯形序列少一项,科茨序列比辛普森序列少一项,龙贝格序列比科茨序列少一项
话说哦。k取20是不太大了点啊,2的20次方可是很大的咯。其实k取6应该就能达到精度要求了吧。
B. 用matlab龙贝格算法
主程序
clc;
clear;
format long e;%精确显示
y=18;
T=zeros(y,y);%定义长度为y的矩阵T
for i=0:y-1
T(i+1)=i;%对矩阵T的第一行赋初值
end
a=0;
b=1;
T(1,2)=(b-a)*(1+f(b))/2;%算出T1
for l=2:y
sum=0;
for j=1:2^(l-1)
sum=sum+f(a+(2*j-1)*(b-a)/2^l);
end
T(l,2)=T(l-1,2)/2+((b-a)/2^l)*sum; %算出梯形序列
if (T(l,2)-T(l-1,2))<0.0000005; %判断是否符合精度
break;
end
end
h=1;
for m=1:y-2
for k=h:(y+h-m-1)
T(k+1,m+2)=((4^m)*T(k+1,m+1)-T(k,m+1))/(4^m-1);
%按公式算出接下去的序列
if (T(k+1,m+2)-T(k,m+2))<0.0000005;
break;
end
end
h=h+1;
end
C. 龙贝格求积公式的简介
龙贝格求积公式也称为逐次分半加速法。它是在梯形公式、辛普森公式和柯特斯公式之间的关系的基础上,构造出一种加速计算积分的方法。 作为一种外推算法, 它在不增加计算量的前提下提高了误差的精度.
在等距基点的情况下,用计算机计算积分值通常都采用把区间逐次分半的方法进行。这样,前一次分割得到的函数值在分半以后仍可被利用,且易于编程。
D. 分别用牛顿-科特斯公式,复合积分公式,龙贝格算法,高斯勒让德公式计算下面的积分
摘要 计算定积分的方法很多,而高斯—勒让德公式就是其中之一。 高斯积分法是精度最高的插值型数值积分,具有2n+1阶精度,并且高斯积分总是稳定。而高斯求积系数,可以由Lagrange多项式插值系数进行积分得到。 高斯—勒让德求积公式是构造高精度差值积分的最好方法之一。他是通过让节点和积分系数待定让函数f(x)以此取i=0,1,2....n次多项式使其尽可能多的能够精确成立来求出积分节点和积分系数。高斯积分的代数精度是2n-1,而且是最高的。通常运用的是(-1,1)的积分节点和积分系数,其他积分域是通过变换x=(b-a)t/2 +(a+b)/2 变换到-1到1之间积分。
E. 用龙贝格算法计算∫(0到1)[x/(4+x²)]dx的近似值。
% 自定义函数
function y = f(x)
y = x/(4+x^2);
end
% 龙贝格算法
function result = romberg(f,a,b,e)
h = b-a;
k = 0;
T(1,1)=(b-a)*(f(a)+f(b))/2;
while true
k = k+1;
sum = 0;
for i=1:2:2^k
sum = sum + f(a+i*h/2^k);
end
T(k+1,1) = T(k,1)/2 + (h/2^k)*sum;
for i=1:k
T(k+1,i+1) = ((4^i)*T(k+1,i)-T(k,i))/(4^i-1);
end
if abs(T(k+1,1)-T(k,1))<e
result = T(k+1,1);
return;
end
end
%主程序
clc;
clear;
%精确显示
format long e;
disp('标准答案:');
(1/2)*log(5/4)
disp('龙贝格积分:');
romberg(@f,0,1,0.000000001)
运行结果:
标准答案:
ans =
1.115717756571049e-01
龙贝格积分:
ans =
1.115717754956757e-01
>>
F. 龙贝格算法用二维数组的存储方式如何实现
使用字符串拷贝函数strcpy(recordset2[j*iNum+tempi][FILE_NAME_LENGTH],recordset[j*iNum+tempi][FILE_NAME_LENGTH]);
G. 用matlab,龙贝格算法计算∫(0到1)[x/(4+x²)]dx的近似值。 求程序代码!!!
%龙贝格求积算法function I=romberg(a,b)h=b-a;T(1)=h/2*(fun(a)+fun(b));m=1;while 1 h=h/2; S(1)=1/2*T(1)+h*sumf(2^(m-1),a,h); for j=1:m S(j+1)=S(j)+(S(j)-T(j))/(4^j-1); end if abs(S(m+1)-T(m))<1e-6 break; end T=S;m=m+1;endI=S(m+1);end
function f=sumf(m,a,h)for j=1:m y(j)=fun(a+(2*j-1)*h);endf=sum(y);end
function f=fun(x)f=x/(4+x^2);end结果:
>> I=romberg(0,1)
I =
0.111571775646293
>>
H. 什么是龙贝格算法
http://ke..com/view/2352953.html
I. 龙贝格求积公式的算法
对区间[a, b],令h=b-a构造梯形值序列{T2K}。
T1=h[f(a)+f(b)]/2
把区间二等分,每个小区间长度为 h/2=(b-a)/2,于是
T2 =T1/2+[h/2]f(a+h/2)
把区间四(2)等分,每个小区间长度为h/2 =(b-a)/4,于是
T4 =T2/2+[h/2][f(a+h/4)+f(a+3h/4).....................
把[a,b] 2等分,分点xi=a+(b-a)/ 2 ·i (i =0,1,2 · · · 2k)每个小区间长度为(b-a)/ 2 .
例:
I = ∫(4/(1+X) )dx 积分区间为0到1.
解 按上述五步计算,此处 f(x)=4/(1+x) a=0 b=1 f(0)=4 f(1)=2
由梯形公式得
T1=1/2[f(0)+f(1)]=3
计算f(1/2)=16/5 用变步长梯形公式得
T2=1/2[T1+f(1/2)]=3.1
由加速公式得
S1=1/3(4T2-T1)=3.133333333
求出f(1/4) f(3/4) 进而求得
T4=1/2{T2+1/2[f(1/4)+f(3/4)]}
=3.131176471
S2=1/3(4T4-T2)=3.141568628
C1=1/15(16S2-S1)=3.142117648
计算f(1/8) f(3/8) f(5/8) f(7/8)进而求得
T8=1/2{T4+1/4[f(1/8)+f(3/8)+f(5/8)+f(7/8)]}
=3.138988495
S4=1/3(4T8-T4)=3.141592503
C2=1/15(16S4-S2)=3.141594095
R1=1/63(64C2-C1)=3.141585784
把区间再二分,重复上述步骤算得
T16=3.140941613 S8=3.141592652
C4=3.141592662 R2=3.141592640
由于 |R1-R2|<=0.00001,计算可停止,取R2=3.14159 N Tn Sn Cn Rn 1 3 3.133333333 3.142117648 3.141585784 2 3.1 3.141568628 3.141594095 3.141592640 4 3.131176471 3.141592503 3.141592662 8 3.138988495 3.141592652 16 3.140941613
J. 求龙贝格算法 c语言代码
《C++ 数值算法》一书上有完整的代码和讨论