numpy 如何在python上使用构造函数求解方程组

2q5ifsrm  于 2022-11-24  发布在  Python
关注(0)|答案(2)|浏览(165)

我在大学,我被要求做一项特定的任务,该任务是:
创建一个表示线性代数方程组(方程组)的类,查找根并检查是否存在某个数字集作为该方程组的解。基于该类,创建分别表示具有两个和三个未知数的两个和三个线性方程组的后代类。通过随机生成数据,可查找两种类型的线性代数方程组的解。
我必须使用一个构造函数和一个求解方法来求解方程组,我还需要创建一个子类,但首先我需要修复主代码。

import numpy as np
class Linear:
    # linear equation ax + by + c = 0
    def __init__(self, a, c, x):
        self.a = np.array([[8, 3, -2], [-4, 7, 5], [3, 4, -12]])  # coefficient of X's           8X + 3Y - 2z   = 9
        self.c = np.array([9, 15, 35])                            # free term of Equation       -4X + 7Y + 5Z   = 15
        self.x = np.linalg.solve(a, c)                                                        #  3X + 4Y - 12Z  = 35
    def solve(self):
        if self.x

r1 = Linear(8, 3, -2)
print(r1.solve())

我在网上发现,你可以很容易地使用numpy跳过所有的大步骤,但我有麻烦解决和放置在一起的代码

icnyk63a

icnyk63a1#

你的类不应该包含任何样本数。你应该只接受ac作为参数,并存储self.a = aself.c = c。你不需要传入x,因为它是类的输出。你不需要求解,直到你调用solve()
大概是这样的:

import numpy as np
class Linear:
    # linear equation ax + by + c = 0
    def __init__(self, a, c):
        self.a = a
        self.c = c

    def solve(self):
        return np.linalg.solve(self.a, self.c)

r1 = Linear(
   [[8, 3, -2], [-4, 7, 5], [3, 4, -12]],
   [9, 15, 35]
)
print(r1.solve())

输出量:

[-0.58226371  3.22870478 -1.98599767]
xn1cxnb4

xn1cxnb42#

主要来源是由其他人回答,但我调整他们,以适应主要任务是由我的uni。所以我会张贴在我的主要任务在这里的最终结果。

import numpy as np

class linear:
    # linear equation  bx + c = 0
    def __init__(self, a, c):
        self.a = a
        self.c = c

    def solve(self):
        return np.linalg.solve(self.a, self.c)

class two_unknown_lin(linear):
    # linear equation with 2 unknown ax + by + c = 0
    def __init__(self, a, c):
        super().__init__(a, c)

    def solve(self):
        return np.linalg.solve(self.a, self.c)

class three_unknown(two_unknown_lin):
    # linear equation with 2 unknown ax + by + cz + d = 0
    def __init__(self, a, c):
        super().__init__(a, c)

    def solve(self):
        return np.linalg.solve(self.a, self.c)

r2 = two_unknown_lin(
    [[1, 3], [2, 8]],
    [6, -12]
)
print("2 variable unknown roots are :", r2.solve())

r1 = three_unknown(
    [[8, 3, -2], [-4, 7, 5], [3, 4, -12]],
    [9, 15, 35]
)
print("3 variable unknown roots are :", r1.solve())

相关问题