美文网首页
第十一次作业

第十一次作业

作者: 陇溪首逸 | 来源:发表于2017-12-04 14:56 被阅读0次

    第五章场问题,选做了课后5.1题


    由场中已知的边界位置电势来确定其它各处的电势,之后进一步求电场强度。


    解题分析

    观察下图,已知小正方形区域为一等势体区域,且电势为1;大正方形外框亦为一等势边界,电势为0。则由系统整体的对称性,设置各选定位置处的电势初始参考值

    教材提供的题图

    如下图,将小正方形和大正方形之间的距离等分为三份(分界线由虚线标出),并将电势差等分,设置各虚线处的具体参考值(已标识于虚线处):

    一,9×9矩阵

    设置一个9×9的矩阵,记录下初始值,之后进行迭代更新。迭代时应注意到小正方形区域和大正方形边框处的电势不应变化。

    上图即为场区域一些格点处的初始电势设定值。

    Mathematica代码:

    While[Abs[u1 - (u[[2, 1]] + u[[2, 3]] + u[[1, 2]] + u[[3, 2]])/4] >= 10^-4,

    For[i = 2, i <= 8, i++,

    For[j = 2, j <= 8, j++,

    If[i >= 4 && i <= 6 && j >= 4 && j <= 6, Null, u[[i, j]] = (u[[i, j - 1]] + u[[i, j + 1]] + u[[i - 1, j]] + u[[i + 1, j]])/4]]]; u1 = u[[2, 2]]];

    MatrixForm[u]

    设定的迭代终止条件为矩阵元素(2,2)在迭代前后值之差小于10^-4,得到迭代结果矩阵为(截图效果AV画质。。。):

    按矩阵元素值的大小对应颜色深浅,画出颜色表示图(外周一圈纯白表示着0):

    二,17×17矩阵

    由上图可直观的看出迭代达到稳定时势场的大致分布,但像素点还有待增多,增多后效果会很好。我试着写任意步长细分区域的程序,而且把初始矩阵的设定也有编程解决了,于是这个问题在任意细分下的情况也可以解决,首先,设置初始矩阵为17×17,矩阵初始值自动设定程序为:

    Mathematica代码:

    step = .166667;

    For[i = 1, i <= 17, i++,

    For[j = 1, j <= 17, j++,

    If[(i == 2 || i == 16) && (j >= 2 && j <= 16) || (j == 2 || j == 16) && (i >= 2 && i <= 16), u[[i, j]] = step*1];

    If[(i == 3 || i == 15) && (j >= 3 && j <= 15) || (j == 3 || j == 15) && (i >= 3 && i <= 15), u[[i, j]] = step*2];

    If[(i == 4 || i == 14) && (j >= 4 && j <= 14) || (j == 4 || j == 14) && (i >= 4 && i <= 14), u[[i, j]] = step*3];

    If[(i == 5 || i == 13) && (j >= 5 && j <= 13) || (j == 5 || j == 13) && (i >= 5 && i <= 13), u[[i, j]] = step*4];

    If[(i == 6 || i == 12) && (j >= 6 && j <= 12) || (j == 6 || j == 12) && (i >= 6 && i <= 12), u[[i, j]] = step*5];

    If[(i == 7 || i == 11) && (j >= 7 && j <= 11) || (j == 7 || j == 11) && (i >= 7 && i <= 11), u[[i, j]] = 1];

    If[(i == 8 || i == 10) && (j >= 8 && j <= 10) || (j == 8 || j == 10) && (i >= 8 && i <= 10), u[[i, j]] = 1];

    If[i == 9 && j == 9, u[[i, j]] = 1]]]

    因为区域被分成了更多小区域,所以判断稳定的条件由之前的10^-4改变为10^-5,得稳定的17×17矩阵为(请忽略画质。。。可点击原图查看,会清晰一些):

    彩图为:

    中心小正方形为1势能区域,最外面一圈为0势能,颜色由红向蓝过度,势能值由1向0减小,此图已经比较细腻了,显示效果也比较好。颜色相同的条带可近似看作是等势线。

    三,33×33矩阵

    为了更好的显示效果,做了个33×33矩阵,运行结果矩阵很大,迭代运算的截止精度也向小数点后又推进了一位,达到了10^-6,最终结果矩阵大到无法完全截屏(下图只截取了一部分):

    但彩图的效果很好:

    从上图已经可以看出很好的显示效果了,直观又上眼。其“等势线”也更加精细,场的分布已经比较了然,是一个很好的效果。


    我在编程过程中发现在理解了教材的算法和原理后,用Mathematica处理这个问题很容易,于是顺便把下题也解决了,与上题不同,此题的初始电势值设置要从头再来,且+1与-1之间也不是上题中的小正方形区域:

    在上题的代码基础上,修改一下限制条件,有:

    Mathematica代码:

    While[Abs[u1 - (u[[2, 1]] + u[[2, 3]] + u[[1, 2]] + u[[3, 2]])/4] >= 10^-4, For[i = 2, i <= 8, i++, For[j = 2, j <= 8, j++, If[i >= 4 && i <= 6 && (j == 4 || j == 6), Null, u[[i, j]] = (u[[i, j - 1]] + u[[i, j + 1]] + u[[i - 1, j]] + u[[i + 1, j]])/4]]]; u1 = u[[2, 2]]]

    MatrixForm[u]

    运行结果矩阵为:

    由该矩阵我们能发现势场分布与之前一题在左部分矩阵元上的区别,此题左半部分势场虽然有与上一题相似的地方(位于势值1和势值0之间),但是由于势值1区域由小正方形平板缩小为一个线分布,且右半部分增加了势值为-1的线分布,对势值有了明显影响。

    转换为颜色图,效果更直观(蓝色越深,值越小,白色为0势值,颜色越偏向黄则势值越大):

    因为这个题目初始矩阵的设置比较麻烦,故只做了9×9的矩阵,但原理是类似的。


    结论

    由课本的拉普拉斯等式出发,做分析得出数值解法,取得了一定效果,稳定矩阵的存在表明了方法的可靠性,矩阵转换为彩图显示令结果更加明显而直观,将区域细分为更多取样点,初始矩阵越大时,最终结果越精细,越了然直观。不得不说,课本的分析介绍的这种数值方法很好很有用,取样点密度高了之后会有更好的结果。


    说明

    这次我没用Python,改用的Mathematica。我现在对那玩意有点阴影,有时候出问题找不到源头。。。但既然是计算物理而不是计算Python,用什么工具就不重要了,结果出来了就行。

    相关文章

      网友评论

          本文标题:第十一次作业

          本文链接:https://www.haomeiwen.com/subject/tllxixtx.html