计算物理学实习报告

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、作业实例

1、编写单摆运动演示程序。在不考虑空气阻力和θ很小的假设下,单位质量

小球做理想简谐运动,此时⎪⎪⎭

⎫ ⎝⎛=L g t cos 0θθ。在此,取1,8.9,60===L g πθ。 分析过程:

利用一个无穷循环不断的改变移动对象的位置(本问题中是摆锤和摆杆对象),只要时间间隔取得足够小,就不会产生闪烁感,取dt=0.001足够。加上运动对象都设置“erasemode ”属性值为“xor ”,也不会破坏对象。所以产生的效果应该是不错的。以下就是实现这种算法的程序:

t=0; dt=0.001; %dt 是刷新屏幕的时间间隔 while 1 %无穷循环 t=t+dt;

theta=theta0*cos(sqrt(g/l)*t); x=1*sin(theta);

y=-1*cos(theta); %计算摆锤的新位置 set(head,'xdata',x,'ydata',y); %改变摆锤的位置 set(body,'xdata',[0;x],'ydata',[0;y]); %改变摆干的位置 drawnow; %重画屏幕 end 结果图表:

-0.6

-0.4

-0.200.20.4

0.6

-1.2

-1

-0.8

-0.6

-0.4-0.2

水平方向移动距离

竖直方向移动距离

图1 单摆运动快照

2、用牛顿法解方程1-x xe =0,要求绝对误差小于0.00001。 分析过程:

()1-=x xe x f ()x x xe e x f +=' ()()

n n n n x f x f x x '

1

-=+,即x

x x n n xe e xe x x +--=+1

1,然后进行迭代,设迭代精度为510- ,主要算法程序如下:

eps=10^(-5);

k=0; %迭代次数计数置0 while 1

f1=x*exp(x)-1; %计算函数值

f2=exp(x)+x*exp(x); %计算函数的导数值 if f2==0

fprintf('导数为零,错误!') break end

x1=x-f1/f2; %牛顿迭代

k=k+1; %迭代次数增1 err=abs(x1-x); %误差估计 if err

fprintf( '近似根为x=%10.9f,迭代次数为k=%2d\n',x1,k) break end if k==N

fprintf( '迭代次数超限') break end

x=x1 %准备下一轮的迭代初值 end

结果如下:

3、设两个同轴矩形金属槽如图3-3所示,外金属槽电位为0,内金属槽电

位为100V ,求槽内电位分布,并绘出电位分布图。

题3图

分析过程:

再直角坐标系中,同轴矩形金属槽中的电位函数ϕ,满足拉普拉斯方程:

02

222=∂∂+∂∂y x ϕϕ

其边界条件满足第一类边界条件(Dirichlet 边界条件):

()()0

,100,==外槽内槽y x y x ϕϕ

取步长h=1,x 、y 方向的网格数为m=23,n=23,共有23*23=529个网孔,设迭代精度为610- ,主要算法程序如下:

while(difmax>1.0e-6)

k=k+1; %计算迭代次数 difmax=0.0;

for i=2:hy-1 %从2到20行循环 for j=2:hx-1 %从2到20列循环 m=mesh1(i,j); %取( i, j )点标志值 if(m>=2) %标志判断 vold=v(i,j); %取该点的原值

v(i,j)=(1/4)*(v(i-1,j)+v(i,j-1)+v(i+1,j)+v(i,j+1)); %拉普拉斯方程差分式 dif=v(i,j)-vold; %前后两次迭代值的差 dif=abs(dif); %取绝对值

if(dif>difmax) difmax=dif; end %所有网格中取最大误差值 end end end end

结果图表:

图2 同轴的矩形金属槽内的电位分布图

4、求热传导方程混合问题:⎪⎪⎩⎪

⎨⎧==-=∂∂=∂∂0),1(,0),0()1(4)0,(22t u t u x x x u x u

t u t x t x ≤≤≤<<<0100,10的数值解,

并与分离变量法求解结果进行图示比较,取N =10,h =0.1, k 值自己根据需要选取。

分析过程: u k i , i=1,2,3,4,5 k=0,1,…,36 由初始条件u(x,0)=4x(1-x) u 0,i =(ih)2=(0.1i)2

分别令i=1,2,3,4,5,则初始条件为 u 0,0=0 u 0,1=0.01 u 0,2=0.04 u 0,3=0.09 u 0,4=0.16 u 0,5=0.25 取α=1/6,则600/1=τ,由式可得

u 1,+k i =1/6 u k i ,1++2/3 u k i ,+1/6 u k i ,1-

由此取k=0,i=1,2,3,4,5, 一直到k=37止。主要算法程序如下: for k=1:37 %从1到37循环37次 u(1,k)=0; u(11,k)=0;

for i=2:10 %从2到10共9步 u(i,1)=4*i*h*(1-i*h); for k=1:36 for i=2:10

u(i,k+1)=a*u(i+1,k)+(1-2*a)*u(i,k)+a*u(i-1,k); end end end end

结果图表:

相关文档
最新文档