educoder 5-4Python计算思维训练——数组进阶之线性代数(答案)

第1关:消元法求解二元线性方程组

# 请编写代码实现用消元法计算二元线性方程组的解

import numpy as np

def eqsolver(eqs):
    #  请在此添加实现代码  #
    # ********** Begin *********#
    a11=eqs[0][0]
    a12=eqs[0][1]
    b1=eqs[0][2]

    a21=eqs[1][0]
    a22=eqs[1][1]
    b2=eqs[1][2]

    x1=(b1*a22-a12*b2)/(a11*a22-a12*a21)
    x2=(a11*b2-b1*a21)/(a11*a22-a12*a21)


    # ********** End **********#
    return x1, x2
测试输入:
[[3, -2, 12], [2, 1, 1]]
—— 预期输出 ——
x1=2.00    x2=-3.00

第2关:二阶行列式求解二元线性方程组

# 请编写代码实现用行列式计算二元线性方程组的解

import numpy as np
from numpy.linalg import det

def eqsolver(eqs):
    #  请在此添加实现代码  #
    # ********** Begin *********#
    x1, x2 = [0]*2  # 需初始化,以防分母为0时返回未定义x1, x2

    
    if det(np.hstack((eqs[:,0], eqs[:,1]))) != 0: #分母不为0其次,后的数字代表第几列
        x1 = det(np.hstack((eqs[:,2], eqs[:,1]))) /   \
                det(np.hstack((eqs[:,0], eqs[:,1])))
        x2 = det(np.hstack((eqs[:,0], eqs[:,2]))) /   \
                det(np.hstack((eqs[:,0], eqs[:,1]))) 
    return x1, x2

    # ********** End **********#
    
测试输入:
[[3, -2, 12], [2, 1, 1]]
—— 预期输出 ——
x1=2.00    x2=-3.00

第3关:任意多个未知数的方程组求解

# 请编写代码实现用计算任意未知数线性方程组的解

import numpy as np
from numpy.linalg import det

def eqsolver(eqs):
    #  请在此添加实现代码  #
    # ********** Begin *********#
    wl=np.shape(eqs)
    a=eqs[:,wl[1]-1]#提取第矩阵的第几列
    Eqs=eqs[:,0]
    for i in range(1,wl[1]-1):
        Eqs=np.hstack((Eqs, eqs[:,i]))
    x=np.linalg.solve(Eqs,a)

    # ********** End **********#
    return x  # 解向量
[[2, -1, -1, 1, 2], [1, 1, -2, 1, 4], [4, -6, 2, -2, 4], [3, 6, -8, 7, 9]]
—— 实际输出 ——
result ['4.00, ', '3.00, ', '-0.00, ', '-3.00, ']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值