我必须为两个行星物体之间的力(牛顿万有引力定律)编写一个类,然后为两个带电粒子之间的库仑引力定律创建一个子类。对于那些不做物理的人来说,这些是类似的功能(方法)。这是我的代码:
class Gravity:
def __init__(self, m, M):
self.m=m
self.M=M
self.G=6.67428E-11
def force(self, r):
G, m, M = self.G, self.m, self.M
return (G*m*M)/(r**2)
def visualize(self, r_start, r_stop, n = 100):
import matplotlib.pyplot as plt
from numpy import linspace
r = linspace(r_start, r_stop, n)
g = self.force(r)
plt.plot(r,g)
set_title='Gravity force: m=%g, M=%g' % (self.m, self.M)
plt.show ()
和我的子类
class Coulomb(Gravity):
def __init__(self, q1, q2):
Gravity.__init__(self, q1, q2)
self.G= 8.99E+9
def force(self, r):
Gravity.force(self, r)
def visualize(self, r_start, r_stop, n = 100):
Gravity.visualize(self, r_start, r_stop, n = 100)
然后我尝试使用带有以下代码的可视化方法来绘制这个库仑定律
l = Coulomb(2.63E-9, 8.69E-9) #My two charges q1 and q2
w = l.visualize(0.1, 1) #My start and end points for the linspace
我是物理系学生,而不是程序员,所以我想这看起来完全一团糟,但是我知道超类可以自行生成一个平方反比图,但是当我在同一个 .py 文件中使用两组代码运行它时(按上面显示的顺序)我收到错误消息“x 和 y 必须具有相同的第一维”,我认为这意味着我的两个绘图参数的大小不同,但我不知道为什么它们不是。任何帮助将不胜感激。