龍貝格演算法
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++ 數值演算法》一書上有完整的代碼和討論