导航:首页 > 源码编译 > 龙贝格算法

龙贝格算法

发布时间:2022-01-20 05:48:22

A. 用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
>>

B. 龙贝格算法 椭圆周长 请帮忙修改一下程序~!!!!!!

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应该就能达到精度要求了吧。

C. 什么是龙贝格算法

http://ke..com/view/2352953.html

D. 龙贝格算法就积分的c语言程序

C++实现如下:
#include<iostream>
#include<cmath>

using namespace std;

const int MAXRepeat = 100; //最大允许重复

double function(double x)//被积函数,根据自己的需要手工输入
{
double s;
s = 1.0 / (1 + x);
return s;
}
void Romberg(double a, double b, double epsion, double f(double x))
{
int m = 1;
int n = 1;
int k;
double h;
double ep;
double p;
double xk;
double s;
double q;
double T[MAXRepeat];

h = b - a;
T[0] = 0.5 * h * (f(a) + f(b));
ep = epsion + 1.0;
while ((ep >= epsion) && (m < MAXRepeat))
{
p = 0.0;
for (k = 0; k < n; k++)
{
xk = a + (k + 0.5) * h; // n-1
p = p + f(xk); //计算∑f(xk+h/2),T
} // k=0
p = (T[0] + h * p) / 2.0; //T`m`(h/2),变步长梯形求积公式
s = 1.0;
for (k = 1; k <= m; k++)
{
s = 4.0 * s; //[pwww.hbbz08.com ow(4,m)T`m`(h/2)-T`m`(h)]/[pow(4,m)-1],2m阶牛顿柯斯特公式,即龙贝格公式
q = (s * p - T[k - 1]) / (s - 1.0);
T[k-1] = p;
p = q;
}
ep = fabs(q - T[m - 1]);
m++;
T[m - 1] = q;
n++; // 2 4 8 16
h /= 2.0;
}

for (int i = 0; i < m; i++)
{
int j;
if (!(i % j))
{
cout<<T[i]<<endl;
}
else
{
cout<<T[i]<<" ";
}
j++;

E. 龙贝格求积公式的算法

对区间[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

F. 用龙贝格算法计算∫(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

>>

G. 龙贝格算法用二维数组的存储方式如何实现

使用字符串拷贝函数strcpy(recordset2[j*iNum+tempi][FILE_NAME_LENGTH],recordset[j*iNum+tempi][FILE_NAME_LENGTH]);

H. 龙贝格求积公式的简介

龙贝格求积公式也称为逐次分半加速法。它是在梯形公式、辛普森公式和柯特斯公式之间的关系的基础上,构造出一种加速计算积分的方法。 作为一种外推算法, 它在不增加计算量的前提下提高了误差的精度.
在等距基点的情况下,用计算机计算积分值通常都采用把区间逐次分半的方法进行。这样,前一次分割得到的函数值在分半以后仍可被利用,且易于编程

I. 用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

J. 求龙贝格算法 c语言代码

《C++ 数值算法》一书上有完整的代码和讨论

阅读全文

与龙贝格算法相关的资料

热点内容
工作三年的大专程序员 浏览:726
java毕业设计文献 浏览:140
筹码集中度指标源码 浏览:478
listsortjava 浏览:183
plc闪光电路编程实例 浏览:299
socket编程试题 浏览:204
华为的服务器怎么设置从光驱启动 浏览:869
程序员真的累吗 浏览:326
学信网app为什么刷脸不了 浏览:873
天蝎vs程序员 浏览:994
单片机下载口叫什么 浏览:188
程序员的道 浏览:926
云服务器不实名违法吗 浏览:558
怎样查看文件夹图片是否重复 浏览:995
文件怎么导成pdf文件 浏览:808
打开sql表的命令 浏览:103
安卓手机如何面部支付 浏览:38
天元数学app为什么登录不上去 浏览:824
明日之后为什么有些服务器是四个字 浏览:104
安卓系统l1是什么意思 浏览:26