minliu 发表于 2024-7-18 16:14

用MATLAB验证折射定律

<div>用MATLAB验证折射定律</div>

<div>折射定律,又称斯涅尔定律(Snell&rsquo;s Law)。简单描述为:光线的入射角和折射角的正弦之比,为一常数。可写为:</div>

<div>sin&theta;1*n1=sin&theta;2*n2</div>

<div>式中,&theta;1/&theta;2分别是入射角和出射角,n1/n2分别是介质1和介质2的折射率。</div>

<div>要证明这个定律,有多种方法。本文采用费马原理,通过MATLAB进行计算。</div>

<div>费马原理提出:光线的传播路径,满足平稳时间原理。也就是时间变化最平稳的路径。光的传播速度V=C/n, 即:光线在不同介质中的传播速度不同。</div>

<div></div>

<div>图一</div>

<div>如图一,光线由P点经过Xi点,由介质n1进入介质n2,达到Q点。按照费马原理计算xi的位置,从而验证折射定律。P点到Q点的时间为:</div>

<div></div>

<div>可以通过MATLAB画出(T,x) 曲线,可以看出,该曲线中,T只有最小值。找出最小值对应的x值,便可以得出唯一入射点。</div>

<div>图二是计算得出的结果。</div>

<div>条件为:a=2; b=2; l=8; n1=1; n2=1.8;</div>

<div></div>

<div>图二</div>

<div>图三是连接光路的图。</div>

<div></div>

<div>图三</div>

<div>通过简单计算,可以验证折射定律: sin&theta;1*n1=sin&theta;2*n2。</div>

<table border="1">
        <tbody>
                <tr>
                        <td>&nbsp;</td>
                        <td><strong>x</strong></td>
                        <td><strong>y</strong></td>
                        <td><strong>R</strong><strong>=</strong><strong>sqrt</strong><strong>(x^2+y^2)</strong></td>
                        <td><strong>SIN&theta;(=X/R)</strong></td>
                        <td><strong>n</strong></td>
                        <td><strong>SIN&theta;*n</strong></td>
                </tr>
                <tr>
                        <td><strong>入射P</strong></td>
                        <td>6.75</td>
                        <td>2</td>
                        <td>7.040064</td>
                        <td>0.958798113</td>
                        <td>1</td>
                        <td>0.9587981</td>
                </tr>
                <tr>
                        <td><strong>折射Q</strong></td>
                        <td>1.25</td>
                        <td>2</td>
                        <td>2.358495</td>
                        <td>0.52999894</td>
                        <td>1.8</td>
                        <td>0.9539981</td>
                </tr>
        </tbody>
</table>

<p>&nbsp;</p>

<p>&nbsp; 直接通过T(x)函数对x求导,使T&#39;(x)=0,也可以证明折射定律。</p>
页: [1]
查看完整版本: 用MATLAB验证折射定律