Romberg求积分公式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《MATLAB程序设计实践》课程考核
1、编程实现以下科学计算算法,并举一例应用之。“Romberg求积分公式”
2、编程解决以下科学计算和工程实际问题。
1)、给定半径的为r,重量为Q的均质圆柱,轴心的初始速度为v0,初始角速度为w0且v0>r*w0,地面的摩擦系数为f,问经过多少时间后,圆柱将无滑动地滚动,求此时的圆柱轴心的速度。
2)、在一丘陵地带测量高程,x和y方向每隔100m测一个点,得高程数据如下,试拟合一曲面确定合适的模型,并由此找出最高点和该点的高程。
100200300400 100636697624478
200698712630478
300680674598412
400662626552334
一、Romberg求积分公式
1、算法说明:此算法可自动改变积分步长,使其相临两个值的绝对误差或相对误差小于预先设定的允许误差.Romberg加速法公式
在等距节点的情况下,通过对求积区间(a,b)的逐次分半,由梯形公式出可逐次提高求积公式精度,这就是Romberg求积的基本思路,由于梯形公式余项只有精度,即
,但当节点加密时可组合成其精度达到,如果再由与组合成则可使误差精度达到,于是
依赖于x,若在上各阶导数存在,将展开,可将展成的幂级数形式,即
,记的计算精
度,可利用外推原理逐次消去式右端只要将步长h逐次分半,利用及组合消去,重复同一过程最后可得
到递推公式,此时
.说明用其误差阶为,这里表示m次加速。计算时用序列表示区间分半次数,即具体计算公式为,就是Romberg求积方法。2、程序代码:M文件
1)、Romberg加速法
function [s,n]=rbg1(a,b,eps)
if nargin<3,eps=1e-6;end
s=10;
s0=0;
k=2;
t(1,1)=(b-a)*(f(a)+f(b))/2;
while (abs(s-s0)>eps)
h=(b-a)/2^(k-1);
w=0;
if (h~=0)
for i=1:(2^(k-1)-1)
w=w+f(a+i*h);
end
t(k,1)=h*(f(a)/2+w+f(b)/2);
for l=2: k
for i=1:(k-l+1)
t(i,l)=(4^(l-1)*t(i+1,l-1)-t(i,l-1))/(4^(l-1)-1);
end
end
s=t(1,k);
s0=(t(1,k-1));
k=k+1;
n=k;
else s=s0;
n=-k;
end
end
2)、改进的Romberg求积函数
function [s,eer]=rbg2(a,b,eps)
if nargin<3,eps=1e-6;end
m=1;
t(1,1)=(b-a)*(f(a)+f(b))/2;
r(1,1)=0;
while ((abs(t(1,m)-r(1,m))/2)>eps)
c=0;
m=m+1;
for j=1:2^(m-1)
c=c+f(a+*(b-a)/2^(m-1));
end
r(m,1)=(b-a)*c/2^(m-1);
for j=2:m
for k=1:(m-j+1)
r(k,j)=r(k+1,j-1)+(r(k+1,j-1)-r(k,j-1))/(4^(j-1)-1);
end
t(1,j)=r(1,j-1)+2*(4^(j-2)-1)*(t(1,j-1)-r(1,j-1))/(4^(j-1)-1);
end
end
err=abs(t(1,m)-r(1,m))/2;
s=t(1,m);
3)定义函数如下:
function f=f(x);
f=x.^3;
4)运行命令及结果
>> rbg1(0,2)
>> rbg2(0,2)
3、流程图
二、圆柱体问题
1、问题分析
圆柱体水平方向受到地面的摩擦阻力f*Q,该摩擦力对轴心速度起减速作用,同时又产生一个力矩,对角速度起加速作用。综上,等到轴心速度v=w*r时,圆柱体将无摩擦运动。
2、源程序:M文件
r=input('r=');
Q=input('Q=');
g=input('g=');
f=input('f=');
v0=input('v0=');
w0=input('w0=');
if v0 j=Q*r^2/2/g; F=f*Q; beta=F*r/j; a=-F/(Q/g); t=(v0-w0*r)/(beta*r-a) v=v0+a*t 3、执行命令 >> move r=1 Q=100 g= f= v0=3 w0=2 t = v = 三、高程 1、题中已给出4*4=16个数据,分别对应16个坐标位置上的高程,现只需采用插值的方法,向其中填补数值,便可拟合对应的曲面,考虑到找到适合曲面的二元函数比较复杂,并且插值之后的数据量够大(10000个),具有一定的代表性,因此在求解丘陵最高点及其高程的时候,可以将所有数据进行比较,取其最大值所对应的x,y值作为最高点。具体程序如下 2、源程序:M文件 function [s,x0,y0]=high(N) x=[100 200 300 400]; y=[100 200 300 400]'; z=[636 697 624 478;698 712 630 478;680 674 598 412;662 626 552 334]; xx=linspace(100,400,N); yy=linspace(100,400,N)';