方程组得解不唯一,但是我们可以直接取通解和特解的系数直接为1来带入方程进行判断,在判断之前还应该解是否线性无关。
齐次方程组
import operator
import numpy as np
import random
import sympy
from sympy import *
def judge_HomEquationUntie(topic, answer) -> bool:
"""
判断answer是否为齐次方程组topic的解19
:param topic:齐次方程组,例(系数矩阵,系数矩阵的值)
:param answer: 需要判断的答案
:return:判断的结果
>>> test1=(Matrix([[1, 3, -5, -2], [-3, -2, 1, 1], [-11, -5, -1, 2], [5, 1, 3, 0]]), Matrix([[0], [0], [0], [0]]))
>>> test1
>>> answer1=[Matrix([-1, 2, 1, 0]), Matrix([-1, 5, 0, 7])]
>>> judge_HomEquationUntie(test1,answer1)
"""
sum = answer[0]
for i in range(len(answer) - 1): # 将所有的基础解系加起来,验算解
sum = getAddMat(sum, answer[i + 1])
if (topic[0] * sum == topic[1]): # 相乘判断是否为解
return True
else:
return False
非齐次方程组
def judge_NotHomEquationUntie(topic, answer) -> bool:
"""
判断answer是否为非齐次方程组topic的值20
:param topic:非齐次方程组,例(系数矩阵,系数矩阵的值)
:param answer: 需要判断的答案
:return:判断的结果
>>> test=(Matrix([[1,1,1],[3,2,1],[0,1,2]]),Matrix([[5],[13],[2]]))
>>> answer=[Matrix([3,2,0]),Matrix([1,-2,1])]
>>> judge_NotHomEquationUntie(test,answer)
"""
sum = answer[0]
for i in range(len(answer) - 1): # 将所有的基础解系加起来,验算解
sum = getAddMat(sum, answer[i + 1])
if (topic[0] * sum == topic[1]): # 相乘判断是否为解
return True
else:
return False