收藏 分享(赏)

计算物理——基于matlab方法研究水中倒影问题精品资料.doc

上传人:风样花鼓 文档编号:21124399 上传时间:2023-07-07 格式:DOC 页数:27 大小:259.93KB
下载 相关 举报
计算物理——基于matlab方法研究水中倒影问题精品资料.doc_第1页
第1页 / 共27页
计算物理——基于matlab方法研究水中倒影问题精品资料.doc_第2页
第2页 / 共27页
计算物理——基于matlab方法研究水中倒影问题精品资料.doc_第3页
第3页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、基于matlab方法研究水中倒影问题基于Matlab方法研究水中倒影问题 摘 要 本文介绍了用matlab研究倒影问题的方法,利用matlab可视化的优点可以直观的得出结果。关键词 matlab; 倒影 ; 高度; 图像The Research of The Problem about Water Reflection Base On MatlabAbstract The paper research about water reflection base on matlabKeywords matlab;water reflection;height;figure1. 绪论当今社会,随着计算

2、机技术的飞速发展,计算机在学生的日常学习和生活中扮演着越来越来重要的角色,MATLAB科学计算语言因其高效、可视化、有推理能力等优点,在大学教育和科学研究中的应用也日益广泛【1】。使用MATLAB语言可以锻炼学生的思维能力和创新能力,并通过直观的物理图象加深对物理模型的理解。本文以MATLAB语言为基础,来解决物理问题。2 水中倒影的研究在日常生活中可以发现,站在岸边看水中的倒影,对于同样高的灯柱,人、灯间距越大,灯光倒影越长;若人灯间距不变,灯柱越高,灯光倒影越长;人站得越高,所看到的同一个灯柱灯光的倒影越短;波浪越大,灯光倒影拉的越长【2】这些日常生活中的物理现象到底要如何解释,下面来建立

3、一个物理模型。2.1 方程的建立 先对物理模型做简化处理,产生波浪的原因很多,这里只考虑由风力所形成的微幅波,波长短、波高小,波浪表面与水平面最大夹角较小,波形曲线两边对称。波浪是两向推进波,沿观察者与物体之间传播。并把波浪表面看作是与水平面成不同夹角的小平面镜【2】。建立一个直角坐标系,设人、物间距为s,物点高度a,观察者高度b,波浪表面与水平面间的夹角为,水中虚像的坐标为(x,y),如图2-1所式,X轴表示水面,A(0,a)为物点,B(s,b)为观察者,发射点C(d,0) YA(0,a)C(d,0)B(s,b)XP(x,y)图2-11 水中倒影示意图处波浪表面与X轴夹角为,有反射定律可以求

4、出,A点在水中的虚像P的坐标为 x=2(dtan+a)cossin (2.11) y=-2(dtan+a)cos2+a (2.12)又因为线段PC和BC在一条直线上,应满足 (2.13) (2.14)式(2.13)可化简为 将(2.14)式代入(2.11)式得(2.15) 将(2.14)式代入(2.12)式得(2.16)由(2.15)(2.16)两式得(2.17) 式中 根据方程(2.15)和(2.17)或(2.16)和(2.17),给定a,b,s,就能计算出虚像点位置P(x,y)并画出图像。 当给定a,b,s,=-时,求出倒影的一个端点坐标,=时求出倒影另一个端点坐标,则能得到倒影的长度为

5、要计算出方程的解须借助MATLAB软件,以下介绍如何求解上述方程2.2 MATLAB实现 利用MATLAB编制函数程序dyz.m,程序如下所示【2】function x,y,L=dyz(theta,a,b,s)i=1;for o=-theta*pi/180:theta*pi/7200:theta*pi/180 c1=2*b*cos(o)*cos(o)-s*sin(2*o)-a*cos(2*o); c2=(b*b-a*b)*cos(2*o)-0.5*b*s*sin(4*o)-2*s*b*sin(2*o)*sin(o)2-a*b; c3=a*b*b; p=1,-c1,c2,c3; y0=roots

6、(p); for j=1:1:3 if imag(y0(j)=0 & real(y0(j) x,y=dyz(10,5,1.8,100); plot(x,y,o-r)得到的结果如图所示:图中每一个虚像点o对应一个值,o点的中心连线就是物点A的虚像。图2-21 倒影图像图2-21 倒影图像2.3 结果分析 从上图可以看出物点的虚像点在根部比较密集,在顶部比较稀疏,所以日常生活中看到的倒影的根部是明亮连续的,顶部就可能是稀疏暗淡的。一个物点在波浪中的虚像有多个,所以一个物体在波浪中的倒影就模糊不清了。2.3.1 物点高度a对结果的影响 还可比较物点高度a取不同值时的情况,如下所示: i=1; for

7、 a1=0.5:0.1:20 a(i)=a1; x1,y1,L1=dyz(10,a1,1.8,100); L(i)=L1; i=i+1; end plot(a,L) xlabel(a,fontweight,bold); ylabel(L,fontweight,bold); title(不同高度物体的倒影,fontsize,15,fontweight,bold)图2-31 L-a曲线图2-31 不同高度物体的倒影结果如图2-31所示,人、物间距不变时,物体越高,倒影越长图2-31 L-a曲线2.3.2人的高度b对结果的影响 修改程序,研究在a、s、一定时,人处的高度不同对结果有何影响。程序如下:

8、 i=1; for b1=0.5:0.1:20 b(i)=b1; x1,y1,L1=dyz(10,5,b1,100); L(i)=L1; i=i+1; end plot(b,L) xlabel(b,fontweight,bold); ylabel(L,fontweight,bold); title(观察者处于不同高度时得到的倒影长度,fontsize,15,fontweight,bold)得到的结果如图2-32所示,L与b呈负相关,即观察者站得越高,所看到的同一个物体的倒影就越短。图2-32 L-b曲线图2-32 L-b曲线2.3.3人、物间距s对结果的影响 修改程序,研究在a、b、一定时,人

9、、物间距s变化时,对倒影长度L的影响。程序如下: i=1; for s1=1:1:200 s(i)=s1; x1,y1,L1=dyz(10,5,1.8,s1); L(i)=L1; i=i+1; end plot(s,L) xlabel(s,fontweight,bold); ylabel(L,fontweight,bold); title(人、物间距不同时的倒影长度,fontsize,15,fontweight,bold)得到的结果如图2-33所示,L随着s的增大而增大,即同样高的物体,人、物间距越大,物体倒影越长。图2-33 L-s曲线2.3.4波浪表面与水平面最大夹角对结果的影响修改程序,

10、研究在给定的b、s、a下不同的对倒影长度L有何影响。程序如下: i=1; for theta1=0.1:0.1:20 theta(i)=theta1; x1,y1,L1=dyz(theta1,5,1.8,100); L(i)=L1; i=i+1; end plot(theta,L)结果如图2-34所式,L与成正比,即波浪愈大,物体的倒影拉的越长。图2-34 L-曲线结论由以上分析可以得出,在微波条件下,倒影长度L与物点高度a,人、物间距s,波浪表面与水平面最大夹角成正比,而与观察者高度b成反比,这一结果与日常生活中所观察到的倒影现象完全吻合。参考文献 1 李海,余文丽Matlab与大学物理习题

11、教学整合的研究 N/OL喀什师范学院学报, 42006-06-05 2 胡守信,李柏年基于Matlab的数学实验 北京:科学出版社,2004:133-135附录资料:MATLAB的30个方法1 内部常数pi 圆周率 exp(1)自然对数的底数ei 或j 虚数单位Inf或 inf 无穷大 2 数学运算符a+b 加法a-b减法a*b矩阵乘法a.*b数组乘法a/b矩阵右除ab矩阵左除a./b数组右除a.b数组左除ab 矩阵乘方a.b数组乘方-a负号 共轭转置.一般转置3 关系运算符=等于大于=大于或等于=不等于4 常用内部数学函数 指数函数exp(x)以e为底数对数函数log(x)自然对数,即以e为

12、底数的对数log10(x)常用对数,即以10为底数的对数log2(x)以2为底数的x的对数开方函数sqrt(x)表示x的算术平方根绝对值函数abs(x)表示实数的绝对值以及复数的模三角函数(自变量的单位为弧度)sin(x)正弦函数cos(x)余弦函数tan(x)正切函数cot(x)余切函数sec(x)正割函数csc(x)余割函数反三角函数 asin(x)反正弦函数acos(x)反余弦函数atan(x)反正切函数acot(x)反余切函数asec(x)反正割函数acsc(x)反余割函数双曲函数 sinh(x)双曲正弦函数cosh(x)双曲余弦函数tanh(x)双曲正切函数coth(x)双曲余切函数

13、sech(x)双曲正割函数csch(x)双曲余割函数反双曲函数 asinh(x)反双曲正弦函数acosh(x)反双曲余弦函数atanh(x)反双曲正切函数acoth(x)反双曲余切函数asech(x)反双曲正割函数acsch(x)反双曲余割函数求角度函数atan2(y,x)以坐标原点为顶点,x轴正半轴为始边,从原点到点(x,y)的射线为终边的角,其单位为弧度,范围为( , 数论函数gcd(a,b)两个整数的最大公约数lcm(a,b)两个整数的最小公倍数排列组合函数factorial(n)阶乘函数,表示n的阶乘 复数函数 real(z)实部函数imag(z)虚部函数abs(z)求复数z的模ang

14、le(z)求复数z的辐角,其范围是( , conj(z)求复数z的共轭复数求整函数与截尾函数ceil(x)表示大于或等于实数x的最小整数floor(x)表示小于或等于实数x的最大整数round(x)最接近x的整数最大、最小函数max(a,b,c,)求最大数min(a,b,c,)求最小数符号函数 sign(x)5 自定义函数-调用时:“返回值列=M文件名(参数列)”function 返回变量=函数名(输入变量) 注释说明语句段(此部分可有可无)函数体语句 6进行函数的复合运算compose(f,g) 返回值为f(g(y)compose(f,g,z) 返回值为f(g(z)compose(f,g,x

15、,.z) 返回值为f(g(z)compose(f,g,x,y,z) 返回值为f(g(z)7 因式分解syms 表达式中包含的变量 factor(表达式) 8 代数式展开syms 表达式中包含的变量 expand(表达式)9 合并同类项syms 表达式中包含的变量 collect(表达式,指定的变量)10 进行数学式化简syms 表达式中包含的变量 simplify(表达式)11 进行变量替换syms 表达式和代换式中包含的所有变量 subs(表达式,要替换的变量或式子,代换式)12 进行数学式的转换调用Maple中数学式的转换命令,调用格式如下:maple(Maple的数学式转换命令) 即:m

16、aple(convert(表达式,form)将表达式转换成form的表示方式 maple(convert(表达式,form, x) 指定变量为x,将依赖于变量x的函数转换成form的表示方式(此指令仅对form为exp与sincos的转换式有用) 13 解方程solve(方程,变元) 注:方程的等号用普通的等号: = 14 解不等式调用maple中解不等式的命令即可,调用形式如下: maple(maple中解不等式的命令)具体说,包括以下五种:maple( solve(不等式)) maple( solve(不等式,变元) ) maple( solve(不等式,变元) ) maple( solv

17、e(不等式,变元) ) maple( solve(不等式,变元) )15 解不等式组调用maple中解不等式组的命令即可,调用形式如下: maple(maple中解不等式组的命令) 即:maple( solve(不等式组,变元组) )16 画图方法:先产生横坐标的取值和相应的纵坐标的取值,然后执行命令: plot(x,y) 方法2:fplot(f(x),xmin,xmax) fplot(f(x),xmin,xmax,ymin,ymax) 方法3:ezplot(f(x) ezplot(f(x) ,xmin,xmax) ezplot(f(x) ,xmin,xmax,ymin,ymax) 17 求极

18、限(1)极限:syms x limit(f(x), x, a) (2)单侧极限:左极限:syms x limit(f(x), x, a,left)右极限:syms x limit(f(x), x, a,right) 18 求导数diff(f(x) diff(f(x),x) 或者:syms x diff(f(x) syms x diff(f(x), x) 19 求高阶导数 diff(f(x),n) diff(f(x),x,n)或者:syms x diff(f(x),n)syms x diff(f(x), x,n) 20 在MATLAB中没有直接求隐函数导数的命令,但是我们可以根据数学中求隐函数导

19、数的方法,在中一步一步地进行推导;也可以自己编一个求隐函数导数的小程序;不过,最简便的方法是调用Maple中求隐函数导数的命令,调用格式如下: maple(implicitdiff(f(x,y)=0,y,x) 在MATLAB中,没有直接求参数方程确定的函数的导数的命令,只能根据参数方程确定的函数的求导公式 一步一步地进行推导;或者,干脆自己编一个小程序,应用起来会更加方便。21 求不定积分 int(f(x) int (f(x),x)或者:syms x int(f(x) syms x int(f(x), x) 22 求定积分、广义积分 int(f(x),a,b) int (f(x),x,a,b)

20、或者:syms x int(f(x),a,b) syms x int(f(x), x,a,b) 23 进行换元积分的计算自身没有提供这一功能,但是可以调用Maple函数库中的changevar命令,调用方法如下:maple( with(student) ) 加载student函数库后,才能使用changevar命令maple( changevar( m(x)=p(u), Int(f(x),x) ) ) 把积分表达式中的m(x)代换成p(u)24 进行分部积分的计算自身没有提供这一功能,但是可以调用Maple函数库中的intparts命令,调用方法如下: maple( with(student)

21、 ) 加载student函数库后,才能使用intparts命令maple(intparts(Int(f(x),x),u) ) 指定u,用分部积分公式 进行计算25 对数列和级数进行求和 syms n symsum(f(n), n a ,b )26 进行连乘 maple(product(f(n),n=a.b)27 展开级数syms x taylor(f(x), x, n, a )28 进行积分变换syms s t laplace( f(t), t, s ) 拉普拉斯变换 ilaplace( F(s), s, t ) 拉普拉斯变换的逆变换 syms t fourier( f(t), t, ) 傅立

22、叶变换 ifourier( F(), , t ) 傅立叶变换的逆变换 syms n z ztrans( f(n), n, z) Z变换 iztrans( F(z), z, n ) Z变换的逆变换 在matlab中,矩形法、梯形法和辛普森法求近似积分可以用自身的命令,也可调用Maple的相应命令。调用方法如下: maple(with(student) ) maple(Maple中求定积分近似值的命令)29 解微分方程dsolve(微分方程,自变量) dsolve(微分方程,初始条件或边界条件,自变量)30 解微分方程组dsolve(微分方程组,自变量) dsolve(微分方程组,初始条件或边界条件,自变量)27

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > 其他相关文档

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报