计算物理第九次作业
5.13
Calculate the value of
by using numerical integration to estimate the area of a circle of unit radius. Observe how your estimate approaches the exact value (3.1415926…) as the grid size in the integration is reduced.
这里计算圆周率使用最简单的办法,即对一个半圆方程进行积分
使用数值计算的方法,把积分区间划为足够小的格子,然后累加即可,下面是课本上给出的最粗糙的数值积分方法
最后乘以2就得到了圆周率。下面画出误差随划分网格的个数的变化关系
1 | from scipy.optimize import curve_fit |
在双对数坐标下关系曲线为直线,说明误差与网格个数的关系是幂函数关系,拟合后发现是刚好成反比,实际应用上一般使用梯形近似或者辛普森近似等方法,会使精度在同等条件显著提高。
5.14
Write a program to calculate the magnetic field for your favorite current distribution. One possibility is a pair of loops of radius
, with one loop lying in the plane and the other in the plane. Another possibility is the solenoid considered in Figure 5.17. (自由发挥电流分布,形状越奇怪越好^_^)
利用毕奥-萨伐尔定律
首先将电流分布离散化,分别计算出
1 | import matplotlib.pyplot as pl |
可以发现使用数值模拟可以很容易的计算出解析方法难以算出的磁场分布。下面使用常见的亥姆霍兹线圈进行模拟。
1 | class magnetic2(magnetic): |
可以发现两个线圈之间确实是近似的匀强磁场,这和已知的理论相符。下面随便画一个电流分布
1 | class magnetic3(magnetic): |
I’m angry!
致谢
十分感谢 这份教程,第二题思路和部分代码参考该教程,并进行了十分大的简化,原教程基本可以完美解决本问题。