大学物理-功的一般性计算


加载环境 (所有命令可以在jupyter notebook中直接运行)

%pylab inline
Populating the interactive namespace from numpy and matplotlib
  • 问题描述: 假定质点的质量为1kg,在$\vec{F}(x,y)$的作用下沿着曲线S运行,其中
    $$\vec{F}(x,y)=(x+y)\vec{i}+xy\vec{j}$$
    曲线方程S为:
    $$x=t, y=sin(t) $$
    其中t$\in$[0,2$\pi$],计算该段时间内力所作的功
  • 线积分问题:
    若$\vec{F}(x,y)=P(x,y)\vec{i}+Q(x,y)\vec{j}$,且曲线参数方程为:

$$
x=x(t),
y=y(t),
$$
其中t$\in[t_0,t_1]$,

则$$
\int{\vec{F}d\vec{r}}=\int{(P(x,y)\vec{i}+Q(x,y)\vec{j})(dx\vec{i}+dy\vec{j})}
$$
$$
=\int{(P(x,y)dx+Q(x,y)dy)}
$$
$$
=\int{(P(x(t),y(t))x^{‘}(t)+Q(x(t),y(t))y^{‘}(t))dt}
$$

$$
work : W=\int_{t_0}^{t_1}{(P(x(t),y(t))x^{‘}(t)+Q(x(t),y(t))y^{‘}(t))dt}
$$

  • 可视化 F(x,y),其中箭头表示力的方向,长度表示力的大小
# 二维网格坐标
x=linspace(0,10,10)
y=linspace(0,10,10)
X,Y=meshgrid(x,y)

# U,V 定义方向
U = X + Y
V = X *Y

# C 定义颜色
C = sqrt((X + Y)**2+(X*Y)**2)

quiver(X, Y, U, V, C)
xlabel('F x component/N')
ylabel('F y component/N')

  • 可视化 质点的轨迹方程,很显然,质点按照正弦函数的轨迹运行
t=linspace(0,2*pi,100)
s=sin(t)
plot(t,s,'-o',alpha=0.5)
xlabel('time(s)')
ylabel('distance(m)')

  • 问题即为在上述的力场下面,质点会沿着正弦曲线运动$2\pi$ 秒所作的功

按照上面的理论分析,所做的功即为:
$$
\int_{0}^{2\pi}{\vec{F}d\vec{r}}=\int_{0}^{2\pi}{(t+sin(t)+tsin(t)cos(t))dt}
$$

可以画出 被积分函数$f(t)=t+sin(t)+tsin(t)cos(t)$的图像,所作的功即为曲线下面所围成的面积

f=t+sin(t)+t*sin(t)*cos(t)
fill_between(t,f,y2=0)
plot(t,f,'r-.o')

  • 可以使用python的 sympy 的符号计算,算出来原函数
#%load_ext sympyprinting
from sympy.interactive import printing
printing.init_printing(use_latex = True)
import sympy 
from sympy import I, pi, oo,sin,cos
import numpy as np
 
# 初始化函数
t = sympy.Symbol('t')
f = t+sin(t)+t*sin(t)*cos(t)

# 函数的积分
F = sympy.integrate(f)
print('积分得到的函数F(t)为')
F

积分得到的函数F(t)为

$$\frac{t^{2}}{2} + \frac{t}{4} \sin^{2}{\left (t \right )} - \frac{t}{4} \cos^{2}{\left (t \right )} + \frac{1}{4} \sin{\left (t \right )} \cos{\left (t \right )} - \cos{\left (t \right )}$$

Fd=sympy.diff(F)
print('重新计算导数,看看是否和原来的被积分函数一致')
Fd
重新计算导数,看看是否和原来的被积分函数一致

$$t \sin{\left (t \right )} \cos{\left (t \right )} + t + \sin{\left (t \right )}$$

print('所需要的功为F(2*pi)-F(0)=%.3fN'%(F.subs(t,2*pi)-F.subs(t,0)))
所需要的功为F(2*pi)-F(0)=18.168N

思考,如何计算该系统的末态动能?假定初始状态为静止 ?


文章作者: haidi-ustc
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 haidi-ustc !
  目录