根据提示,在右侧编辑器补充代码,实现抛物线类的派生。 提示: 数学意义上,将Line作为Parabola的子类更自然from numpy import * class Parabola: def __init__(self, c0, c1, c2): self.c0, self.c1, self.c2 = c0, c1, c2 def __call__(self, x): return self.c2*x**2 + self.c1*x + self.c0 def table(self, L, R, n): s = '' for x in linspace(L, R, n): … l = Line(1, -2) l1 = l(2.5) print(l1) print(l.table(0, 1, 3))
时间: 2023-12-01 11:04:56 浏览: 80
下面是实现抛物线类的派生的代码:
```python
from numpy import *
class Parabola(Line):
def __init__(self, c0, c1, c2):
super().__init__(c1, c2)
self.c0 = c0
def __call__(self, x):
return super().__call__(x) + self.c0
def table(self, L, R, n):
s = ''
for x in linspace(L, R, n):
y = self(x)
s += f'{x:.6f}, {y:.6f}\n'
return s[:-1]
```
在这里,我们将 `Line` 类作为 `Parabola` 类的子类,表示直线实际上是抛物线的一种特殊情况。因此,在 `Parabola` 的构造函数中,我们首先调用 `super().__init__` 方法,将 `c1` 和 `c2` 传递给父类的构造函数,实现直线部分的初始化,然后再将 `c0` 存储为属性。
在 `__call__` 方法中,我们调用父类的 `__call__` 方法,得到对应 `x` 坐标的直线上的 `y` 坐标,再加上常数项 `c0`,得到抛物线的对应值。
在 `table` 方法中,我们首先使用 `linspace` 函数生成给定区间内的 `n` 个点,然后依次计算这些点在抛物线上的取值,并将它们格式化为字符串,返回给调用者。
需要注意的是,在 `Parabola` 类的定义中,我们需要先导入 `Line` 类,以便正确地进行类的继承。
阅读全文