linsolve
解线性方程组
描述
例子
解决线性系统
解一个线性系统mldivide
和linsolve
比较性能。
mldivide
推荐的方法是解决大多数方程的线性系统在MATLAB®。然而,函数执行几个检查输入矩阵来确定是否有任何特殊的属性。如果你知道提前系数矩阵的属性,然后你就可以使用linsolve
为了避免耗时的检查对大型矩阵。
创建一个10000 -,- 10000幻方矩阵和提取下三角部分。设置LT
场的选择
结构真正的
表明一个
是一个下三角矩阵。
一个=下三角阵(魔法(1 e4));选择。LT=真正的;
创建一个向量的线性方程的右边
。的行数一个
和b
必须是相等的。
b = 1(大小(A, 2), 1);
解决线性系统
使用mldivide
和时间计算。
抽搐x1 = \ b;t1 = toc
t1 = 0.3601
现在,解决系统再次使用linsolve
。结构,以便指定选项linsolve
可以选择一个合适的解算器的下三角矩阵。
抽搐x2 = linsolve (A, b,选择);t2 = toc
t2 = 0.0976
比较执行时间快得多linsolve
是多少。与任何时间比较,结果不同电脑和MATLAB的版本。
加速= t1 / t2
加速= 3.6878
抑制矩阵条件警告
解一个线性系统使用linsolve
有两个输出抑制矩阵调节警告。
创建一个20-by-20希尔伯特测试矩阵。这个矩阵接近奇异,最大的奇异值2 e18
大于最小的。
一个= hilb (20);
解一个线性系统涉及一个
与linsolve
。自一个
几乎是单数,linsolve
返回一个警告。
1 b =(20日);x = linsolve (A, b);
警告:矩阵接近奇异或严重了。结果可能是不准确的。RCOND = 1.276108 e-19。
现在,解决相同的线性系统,但指定两个输出linsolve
。MATLAB®抑制警告,第二个输出r
包含的互惠条件一个
。您可以使用这种语法在代码中处理特殊情况的坏脾气的矩阵,没有产生一个警告的代码。
[x, r] = linsolve (A, b)
x =20×1108×0.0000 -0.0000 0.0008 -0.0144 0.1448 -0.8567 3.1338 -7.1545 9.9712 -8.4571⋮
r = 1.2761 e-19
输入参数
B
- - - - - -输入数组
向量|矩阵
输入数组,指定为一个向量或矩阵。B
出现在右边的线性方程组一个X=B。如果B
是一个矩阵,矩阵中的每一列代表一个不同的右侧向量。
的行数一个
必须等于中的行数B
。
数据类型:单
|双
复数的支持:金宝app是的
选择
- - - - - -系数矩阵的属性
结构
系数矩阵的属性,指定为一个结构。使用这种结构来指定属性的一个
那linsolve
用于选择适当的线性系统的解算器。结构中包含的字段真正的
/假
值表明是否一个
每个属性。默认情况下所有字段的结构被认为是假
。此表列出了可能的领域选择
及其对应的矩阵的性质。
场 | 矩阵的性质 |
---|---|
|
下三角(非零值只出现在或主对角线以下) |
|
上三角(非零值只出现在主对角线以上) |
|
上层Hessenberg(所有零值低于第一副斜杆) |
|
真正的对称的或复杂的埃尔米特(矩阵等于它的转置) |
|
正定(所有正特征值) |
|
长方形矩阵(不同数量的行和列) |
|
共轭转置——指定是否函数解决了 |
例子:选择。UT=真正的
指定一个
是上三角。
例子:选择。信谊=真正的,选择。POSDEF = true
两个字段设置为指定一个
是对称的正定。
有效的组合
此表列出所有的行字段值的组合选择
这是有效的linsolve
。空细胞的默认值假
和一个真正的
/假
条目显示,linsolve
可以接受的价值。
|
|
|
|
|
|
|
|
---|---|---|---|---|---|---|---|
|
|
|
|
||||
|
|
|
|
||||
|
|
|
|||||
|
|
|
|
||||
|
|
|
笔记的使用
数据类型:结构体
输出参数
X
——线性系统解决方案
向量|矩阵
线性系统的解决方案,作为一个向量或矩阵满足返回一个X=B(或一个TX=B如果选择。TRANSA = true
)。的大小X
取决于选择。TRANSA = true
:
如果
一个
是米
——- - - - - -n
和B
是米
——- - - - - -k
,然后X
是n
——- - - - - -k
的解决方案一个X=B。如果
选择。TRANSA = true
,然后一个
是米
——- - - - - -n
和B
是n
——- - - - - -k
。在这种情况下,X
是米
——- - - - - -k
的解决方案一个TX=B。
r
数字或等级——互惠条件
标量
互惠的条件数或等级,作为一个标量返回。
如果
一个
是一个方阵,那么r
是互惠的条件数的一个
。如果
一个
是一个长方形矩阵,然后呢r
的排名是一个
。如果
选择
是指定的,那么r
的条件数的倒数吗一个
除非矩形
是真正的
和两个LT
和UT
是假
,在这种情况下,r
给的秩一个
。
提示
速度的好处
linsolve
可以随矩阵结构和底层的相对优化算法。在某些情况下(如小矩阵)可能没有任何加速比mldivide
。效益与速度linsolve
出现,避免昂贵的检查大型矩阵的性质,或通过选择一种算法更适合输入比的选择mldivide
使。
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
使用笔记和限制:
的
选择
结构必须是一个标量。代码生成选项不支持数组结构。金宝app代码生成优化这些情况:
UT
LT
UHESS
=真正的
(TRANSA
可以是真正的
或假
)信谊
=真正的
和POSDEF
=真正的
相当于使用其他选项
mldivide
。代码生成不支持稀疏矩阵输入的这个函数。金宝app
GPU的代码生成
生成NVIDIA的CUDA®代码®GPU使用GPU编码器™。
使用笔记和限制:
的
选择
结构必须是一个标量。代码生成选项不支持数组结构。金宝app代码生成优化这些情况:
UT
LT
UHESS
=真正的
(TRANSA
可以是真正的
或假
)信谊
=真正的
和POSDEF
=真正的
相当于使用其他选项
mldivide
。代码生成不支持稀疏矩阵输入的这个函数。金宝app
线程环境
在后台运行代码使用MATLAB®backgroundPool
与并行计算工具箱™或加速代码ThreadPool
。
这个函数完全支持线程的环境。金宝app有关更多信息,请参见MATLAB函数线程环境中运行。
GPU数组
加速代码运行在一个图形处理单元(GPU)使用并行计算工具箱™。
使用笔记和限制:
两个输出语法
[x, r] = linsolve (___)
不支持。金宝appMATLAB®
linsolve
函数输出一个警告一个
严重了,近奇异或不足。的gpuArray
linsolve
不能检查这个条件。采取行动,以避免这种情况。
有关更多信息,请参见运行在GPU MATLAB函数(并行计算工具箱)。
分布式阵列
分区大数组在内存使用并行计算集群的工具箱相结合™。
这个函数完全支持分布式阵列。金宝app有关更多信息,请参见运行MATLAB函数与分布式阵列(并行计算工具箱)。
版本历史
之前介绍过的R2006a
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。