matlab 线性最小二乘法,求解线性方程组 - 最小二乘法

本文介绍了如何在MATLAB中使用线性最小二乘法(lsqr)解决非对称三对角矩阵的线性方程组。通过创建一个函数句柄,分别计算A*x和A'*x,以实现高效求解。通过示例展示了矩阵的结构,并给出了求解实际解为全一向量问题的步骤,最终在25次迭代后达到高精度解。
摘要由CSDN通过智能技术生成

通过为 lsqr 提供用来计算 A*x 和 A'*x 的函数句柄(而非系数矩阵 A)来求解线性方程组。

创建一个非对称三对角矩阵。预览该矩阵。

A = gallery('wilk',21) + diag(ones(20,1),1)

A = 21×21

10 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1 9 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 1 8 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 1 7 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 1 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 1 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 1 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 1 3 2 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 1 2 2 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 1 1 2 0 0 0 0 0 0 0 0 0 0

由于此三对角矩阵有特殊的结构,您可以用函数句柄来表示 A*x 运算。当 A 乘以向量时,所得向量中的大多数元素为零。结果中的非零元素对应于 A 的非零三对角元素。

表达式 Ax 变为:

Ax=[1020⋯⋯01920⋮01⋱20⋮010⋱⋱⋮0⋱1⋱0⋮⋱⋱⋱20⋯⋯0110][x1x2x3⋮⋮x21]=[10x1+2x2x1+9x2+2x3⋮⋮x19+9x20+2x21x20

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值