MATLAB在桥涵水文课程教学中的应用
2020-10-14路世伟刘洪宇杜国锋张继承
路世伟,刘洪宇,杜国锋,曾 磊,张继承
(长江大学 城市建设学院,湖北 荆州 434023)
0 前 言
桥涵水文课是一门实践性很强的土木工程专业课程,对学生了解并进行桥梁和涵洞勘察、水文计算以及基础设计,甚至将来从事相关行业的设计、施工具有重要的作用。但在目前的教学过程中,教学方法乃至教学效果均存在较大的问题[1]。教学方法以教师简要介绍相关的知识、原理为主,学生被动学习,积极性不高,教学效果并不理想。大部分学生只是知道大概知识、原理,而并未从这个教学过程中完全掌握相关的计算如何操作,这对于培养土木工程专业学生的动手能力是非常不利的[2-3]。因此,必须对桥涵水文课程的教学方法进行改进,提高学生的参与程度,培养其动手能力,响应国家建设双一流高校的战略规划[4-5]。
随着计算机技术突飞猛进的发展和大型复杂工程的建设,传统手工计算显得越来越捉襟见肘,如何让学生充分利用计算机的优势来巩固知识结构、提升计算效率是我们必须要思考的问题[6]。MATLAB软件充分利用了计算机硬件发展的优势,给高等教育提供了一个额外的选择。如能将MATLAB软件融入专业课的教学过程,而学生在编制相关计算程序的过程中又可以对所学知识进行充分掌握,对推动现代高等教育改革将发挥着不可估量的作用。
1 MATLAB软件的特点
1)语法规则简单。基本数据单位是矩阵,指令表达式与数学、工程中常用的形式相似,初学者非常容易上手。
2)MATLAB基本的语言环境提供了数以千计的计算函数,极大地提高了用户的编程效率。
3)MATLAB是一种脚本式的解释型语言,同时也支持对C,FORTRAN,C++,JAVA等语言直接进行编译。
4)程序和数据文件可移植性较强,与平台无关。MATLAB软件可以运行在很多不同的计算机系统平台上,如Windows Me/NT/2000/XP、很多不同版本的UNIX以及Linux。
2 MATLAB在桥涵水文课程中的应用
适线法是将随机变量样本值及相应经验频率在几率纸上点绘出适当频率曲线以求得参数的一种方法,对于推算一定重现期的年径流洪峰流量非常重要。但是如果手工计算的话,适线法就会显得计算量特别大,在教学过程中学生往往会陷入巨大的计算量而不利于学生掌握该方法的核心内容。本文以洪峰流量计算为例,展示MATLAB在桥涵水文课程教学中的应用。
某流域有17年实测洪水资料,如表1所示。另调查到1936年曾发生一次大洪水,根据洪痕推算洪峰流量为10 000 m3/s。若取1936年和1998年的洪水为特大洪水,试用矩法计算二百年一遇的设计洪峰流量。
表1 洪水资料表
解:
总的特大洪水个数a=2,连续观测序列中特大洪水个数l=1,最大观测年限N=2000-1936+1=65,连续观测年限n=2000-1984+1=17。
偏态系数计算:
第一次配线,取Cs=2CvN=0.6702,φ(0.5%,0.6702)=3.1959,
第二次配线,取Cs=3CvN=1.0053,φ(0.5%,1.0053)=3.4934,
第三次配线,取Cs=4CvN=1.3404,φ(0.5%,1.3404)=3.7787,
经过三次配线以后发现,第三次配线结果最符合要求,故选择二百年一遇的设计洪峰流量为11 370 m3/s。
频率与最大洪峰流量关系见图1。
图1 频率与年最大洪峰流量关系图
MATLAB计算程序如下:
clear; close; clc
x_0=[10000;8670;7700;6940;6830;6700;5320;5260;5180;5140;4510;4470;3900;3890;3490;3390;2840;520];
a=2;l=1;
N=65;
for n=1:a
p0(n,1)=n/N;
end
for n=a+1:length(x_0)
p0(n,1)=(n-a+1)/(length(x_0)-a+1);
end
p1=norminv(p0)-norminv(0.0001);
BB=[p1 x_0];
p=[0.1;0.5;1;5;10;15;20;25;30;35;40;45;50;55;60;65;70;75;80;85;90;95;99];
pp=norminv(0.01*p)-norminv(0.0001);
x_av=5017;
cv=[0.3351 0.3351 0.3351];
cs=[2*0.3351 3*0.3351 4*0.3351];
AA(:,1)=pp;
AA(:,2)=((cs(1)/2*gaminv(1-p*0.01,4/cs(1)^2,1)-2/cs(1))*cv(1)+1)*x_av;
AA(:,3)=((cs(2)/2*gaminv(1-p*0.01,4/cs(2)^2,1)-2/cs(2))*cv(2)+1)*x_av;
AA(:,4)=((cs(3)/2*gaminv(1-p*0.01,4/cs(3)^2,1)-2/cs(3))*cv(3)+1)*x_av;
plot(BB(:,1),BB(:,2),'ko','linewidth',1)
hold on
plot(AA(:,1),AA(:,2),'r','linewidth',1)
plot(AA(:,1),AA(:,3),'b--','linewidth',1)
plot(AA(:,1),AA(:,4),'m','linewidth',1)
hold off
h=findobj('type','axes'); set(h,'xtick',[]);
xx=[0.1 1 5 10 20 30 40 50 60 70 90 95 99];
yy=norminv(xx/100,0,1)-norminv(0.0001,0,1);
for i=1:size(yy,2)
line([yy(i),yy(i)],[0 12000],'color','k');
end
for i=1:12000/1000
line([0 yy(end)],[1000*i 1000*i],'color','k');
end
for i=1:size(xx,2)
text('string',num2str(xx(i)),'HorizontalAlignment','center','pos',[yy(i),-500]);
end
set(h,'xlim',[norminv(0.001,0,1)-norminv(0.01/100,0,1), norminv(0.99,0,1)-norminv(0.0001,0,1)],'ylim',[0,12000]);
legend('原始数据','第一次配线','第二次配线','第三次配线')
ylabel('年最大洪峰流量(m^3/s)')
xlabel('频率P(%)','pos', [-norminv(0.0001,0,1)+norminv(0.30,0,1),-200])
3 结论与展望
1)MATLAB软件的功能强大,对于一些运算有着提高运算效率的现实意义。
2)对于桥涵水文课程中的一些相关计算,也具有高效性、精确性的优点。
3)在桥涵水文课程的教学中,教师通过软件演示的教学方式,在教授知识的同时引入软件的应用,学生在编制相关计算程序的过程中可以将所学知识融会贯通,对推动现代高等教育改革将发挥着较好的作用。
[ID:010174]