储油罐的变位识别与罐容表标定(程序超多附录超详细) - 图文(6)

2019-04-13 18:14

function ab=sortn(m,n) %排序算法 输入向量m,个数n,输出最小的n个数以及它们所在m矩阵的下标 a=zeros(n,2); for k=1:n

[c,d]=min(min(m)); a(k,2)=d;

[e,f]=min(m(:,d)); a(k,1)=f; end ab=a;

附录2:龙贝格求积公式 function rt=realt(h,a,b) %function rt=realt(h,a,b) %油面高h %纵向倾角a

26

%横向倾角b

%函数所求倾斜油罐实际储存油的体积 tic %计算程序运行时间 if h>3 | h==3 %防止输入越界 h=2.9999; end

if h<0 %防止输入越界 rt=0; end

format long; %把度数转换成弧度 a=a/180*pi; %输出格式 b=b/180*pi;

dv1=0; %各部分体积初始化,dv1为左端有球冠时的体积(当xa>1还要加上圆柱体体积),dv2为右端有球冠时的体积 dv2=0;

v1=0; %v1为左端积分体积,v3为中段积分体积,v2为右端积分体积 v2=0; v3=0;

h=(h-1.5)*cos(b)+1.5;

if h<3-2*tan(a) %求斜线左端与油罐交点 rot=zeros(2,1); x=0;

y=[1+(tan(a))^2,3*tan(a)-1.25-4*(tan(a)^2)-2*h*tan(a),(2*tan(a)+h)^2-6*tan(a)-3*h];

rot=roots(y); if(rot(1)>0) x=1+rot(2); else

x=1+rot(1); end

hh=-x*tan(a)+2*tan(a)+h; if (hh-1.5)>0;

dv1=pi*x*x*(1.625-x/3); %当左端有球冠存在,添加球冠体积 end

n=1; %利用龙贝格算法求油罐左端球体部分体积 while 1 r=zeros(n+1,n+1);

r(1,1)=(1-x)/2*(f2(x,h,a)+f2(1,h,a)); for i=1:n

h1=(1-x)/2^i; s=0;

for k=1:2^(i-1)

s=s+f2(x+(2*k-1)*h1,h,a);

27

end

r(i+1,1)=r(i,1)/2+h1*s; end

for j=1:n

fac=1/(4^j-1); for m=j:n

r(m+1,j+1)=r(m+1,j)+fac*(r(m+1,j)-r(m,j)); end end

if abs(r(n,n)-r(n+1,n+1))<0.00001 break; end n=n+1; end

v1=r(n+1,n+1); end

if h>6*tan(a) x=0;

rot1=zeros(2,1);

y1=[1+(tan(a))^2,3*tan(a)-14.75-4*(tan(a)^2)-2*h*tan(a),(2*tan(a)+h)^2-6*tan(a)-3*h+54]; %求斜线右端与油罐交点 rot1=roots(y1); if(rot1(1)<8)

x=rot1(2)+1; else

x=rot1(1)+1; end

hh=-x*tan(a)+2*tan(a)+h; if (hh-1.5)>0;

dv2=pi*(10-x)*(10-x)*(1.625-(10-x)/3); %当右端有球冠存在,添加球冠体积 end

n=1; %利用龙贝格算法求油罐右端球体部分体积 while 1

r=zeros(n+1,n+1);

r(1,1)=(x-9)/2*(f3(9,h,a)+f3(x,h,a)); for i=1:n

h1=(x-9)/2^i; s=0;

for k=1:2^(i-1)

s=s+f3(9+(2*k-1)*h1,h,a);

28

end

r(i+1,1)=r(i,1)/2+h1*s; end

for j=1:n

fac=1/(4^j-1); for m=j:n

r(m+1,j+1)=r(m+1,j)+fac*(r(m+1,j)-r(m,j)); end end

if abs(r(n,n)-r(n+1,n+1))<0.00001 break; end n=n+1; end

v2=r(n+1,n+1); end

if h<6*tan(a) %判断油面是否到达右端球体 b1=3+h/tan(a); v2=0; dv2=0; else

b1=9; end

if h>3-2*tan(a) %判断油面是否到达左端球体 a1=3-(3-h)/tan(a);

dv1=pi*(1.625-1/3)+pi*1.5*1.5*(a1-1); %若梅到达左端球体则应加上左端罐体体积和其旁边相应圆柱体体积 else

a1=1; end

n=1; %利用龙贝格算法求油罐中段球体部分体积 while 1

r=zeros(n+1,n+1);

r(1,1)=(b1-a1)/2*(f1(a1,h,a)+f1(b1,h,a)); for i=1:n

h1=(b1-a1)/2^i; s=0;

for k=1:2^(i-1)

s=s+f1(a1+(2*k-1)*h1,h,a); end

r(i+1,1)=r(i,1)/2+h1*s; end

29

for j=1:n

fac=1/(4^j-1); for m=j:n

r(m+1,j+1)=r(m+1,j)+fac*(r(m+1,j)-r(m,j)); end end

if abs(r(n,n)-r(n+1,n+1))<0.00001 break; end n=n+1; end

v3=r(n+1,n+1);

v=v1+v2+v3+dv1+dv2;

% disp(v1);disp(v2);disp(v3);disp(dv1);disp(dv2); rt=abs(v); toc

%************************************************************************** %**************************************************************************

function y=f(x,h) %截面积求积函数1 r=(1.625*1.625-(1.625-x)^2)^0.5; d=1.5-h;

y=r*r*acos(d/r)-d*r*sin(acos(d/r));

function y=f1(x,h,a) %截面积求积函数2 hh=-tan(a)*x+h+3*tan(a);

y=1.5*1.5*acos((1.5-hh)/1.5)-(1.5-hh)*1.5*sin(acos((1.5-hh)/1.5)); function y=f3(x,h,a) %截面积求积函数3 hh=-tan(a)*(x+0.0001)+h+3*tan(a); r=(1.625*1.625-(1.625-(10-x))^2)^0.5; d=1.5-hh;

y=r*r*acos(d/r)-d*r*sin(acos(d/r));

function y=f2(x,h,a) %截面积求积函数4 hh=-tan(a)*x+h+3*tan(a);

r=(1.625*1.625-(1.625-x)^2)^0.5; d=1.5-hh;

y=r*r*acos(d/r)-d*r*sin(acos(d/r));

30


储油罐的变位识别与罐容表标定(程序超多附录超详细) - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:基于51单片机的低成本多路程控定时插座设计与制作 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: