scipy 笔记:solve_triangular

1 基本用法

scipy.linalg.solve_triangular(
    a, 
    b, 
    trans=0, 
    lower=False, 
    unit_diagonal=False, 
    overwrite_b=False, 
    debug=None, 
    check_finite=True)

解决ax=b方程中的x,(假定a是一个上/下三角矩阵)

2 参数介绍

a

(M, M) array_like

三角矩阵a

b(M,) or (M, N) array_like
lower

bool, optional

如果是True的话,那么a是一个下三角矩阵;否则是一个上三角矩阵(默认也是一个上三角矩阵)

trans

{0, 1, 2, ‘N’, ‘T’, ‘C’}, optional

 T是转置,H是共轭转置

unit_diagonal

bool, optional

如果为True,则a的对角元素被假定为1并且不被引用。

overwrite_b

bool, optional

如果为True,结果写入原来的b

check_finite

bool, optional

是否检查输入矩阵只包含有限的数。禁用可能会提高性能,但如果输入确实包含无限或nan,则可能导致问题(崩溃、未终止)。

3 使用举例

from scipy.linalg import solve_triangular
a = np.array([[3, 0, 0, 0], 
              [2, 1, 0, 0], 
              [1, 0, 1, 0], 
              [1, 1, 1, 1]])
b = np.array([4, 2, 4, 2])
x=solve_triangular(a,b,lower=True)
print(x)
#[ 1.33333333 -0.66666667  2.66666667 -1.33333333]
print(a @ x)
#[4. 2. 4. 2.]

如果我们设置unit_diagonal=True的话,即使原来对角线有值,也会变成1来进行计算

from scipy.linalg import solve_triangular
a = np.array([[3, 0, 0, 0], 
              [2, 1, 0, 0], 
              [1, 0, 1, 0], 
              [1, 1, 1, 1]])
b = np.array([4, 2, 4, 2])
x=solve_triangular(a,b,lower=True,unit_diagonal=True)
print(x)
#[ 4. -6.  0.  4.]
print(a @ x)
#[12.  2.  4.  2.]
a1 = np.array([[1, 0, 0, 0], 
              [2, 1, 0, 0], 
              [1, 0, 1, 0], 
              [1, 1, 1, 1]])
print(a1  @ x)
#[4. 2. 4. 2.]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值