- 语法 X = pagemldivide(A,B) X = pagemldivide(A,transpA,B) [X,rcondA] =
pagemldivide(___) - 描述
- 案例
- X=pagemldivide(A,B)计算N-D阵列A的每页到N-D阵列B的每页的左矩阵除法。输出阵列X的每页由X(:,:,i)=A(:,,i)\B(:,…,i)给出。A和B的页面必须是mldivide(\)函数的有效输入。
- 如果A和B有三个以上的维度,那么前两个维度之外的所有维度都必须具有兼容的尺寸。pagemldivide隐式扩展额外维度以划分所有页面组合:X(:,:,i,j,k)=A(:,,:,i,j,k)\B(:,:,i,j,k)。
- 例子
X=pagemldivide(A,transpA,B)有选择地对A的每一页应用换位。transpA的值可以是“transpose”、“ctranspose”或“none”。例如,pagemldivide(A,“transpose”,B)计算
X(:,:,i)=A(:,,i)B(:,:,i)。 - 例子
[X,rcondA]=pagemldivide(___)使用以前语法中的任何输入参数组合并返回A的每页的倒数条件号。rcondA(1,1,i)的值是A(:,:,i)条件的倒数条件号。如果rcondA(1,1,i)小于eps,则X(:,:,i)=A(:,,i)\B(:,:,i)返回警告,因为矩阵是病态的。但是,pagemldiver不会对条件不良的输入发出警告。 - 求解方程组 创建一个3乘3乘2的数组a,在两页中的每一页上都有3乘3的矩阵。同时创建一个3乘1乘2的数组B。
p1 = magic(3);
p2 = hilb(3);
A = cat(3,p1,p2);
B = ones(3,1,2)
X = pagemldivide(A,B)
p1 = pascal(4);
p2 = magic(4);
A = cat(3,p1,p2)
B = 2*ones(4,1,2)
对于A和B中的每一组对应页面,求解方程A(:,:,i)*X(:,,i)=B(:,…,i)。
求解换位系统
X = pagemldivide(A,"transpose",B)
检查相互条件数组页数
创建一个10乘10乘2的数组a,在两页中的每一页上都有10乘10的矩阵。同时创建一个10乘1乘2的数组B。
p1 = diag([ones(9,1);0]);
p2 = pascal(10);
A = cat(3,p1,p2);
B = 3*ones(10,1,2);
对于A和B中的每一组对应页面,求解方程A(:,:,i)*X(:,,i)=B(:,:,i)。指定两个输出也返回A中每一页面的倒数条件数。
[X,rcondA] = pagemldivide(A,B);
将倒数条件数与eps进行比较。结果表明,第一页上的矩阵条件不好,因此命令A(:,:,1)\B(:,,1)返回警告,并且该页的操作结果不可靠。
rcondA < eps
>> pagemldividec
B(:,:,1) =
1
1
1
B(:,:,2) =
1
1
1
X(:,:,1) =
0.0667
0.0667
0.0667
X(:,:,2) =
3.0000
-24.0000
30.0000
A(:,:,1) =
1 1 1 1
1 2 3 4
1 3 6 10
1 4 10 20
A(:,:,2) =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
B(:,:,1) =
2
2
2
2
B(:,:,2) =
2
2
2
2
X(:,:,1) =
2
0
0
0
X(:,:,2) =
0.0263
-0.0386
0.1562
0.0913
1×1×2 logical 数组
ans(:,:,1) =
1
ans(:,:,2) =
0
输入参数
- A、B-输入数组(作为单独的参数)输入数组。A和B是多维数组,其中每个对应的页面集A(:,:,i,…)和B(:,:,i,…)是mldivide的有效输入。
- 如果A和B有三个以上的尺寸,那么前两个尺寸之外的所有尺寸都必须具有兼容的尺寸。pagemldivide隐式扩展额外维度以划分所有页面组合:X(:,:,i,j,k)=A(:,,:,i,j,k)\B(:,:,i,j,k)。
输出参数
- X-线性系统解决方案多维数组
- rcondA-A的倒数条件数多维数组
数组页面
- 像pagemldivide这样的逐页函数对已排列成多维数组的2-D矩阵进行操作。例如,对于3D阵列,阵列的第三维度中的元素通常被称为页面,因为它们像书中的页面一样堆叠在一起。每个页面都是一个矩阵,由函数进行运算。
您也可以将二维矩阵的集合组装成一个更高维的数组,如4-D或5-D数组,在这些情况下,pagemldive仍然将数组的基本单元视为一个进行运算的二维矩阵,如X(:,:,i,j,k,l)。
cat函数可用于将矩阵集合组装成多维数组,而zeros函数可用于预分配多维数组。
建议
- 使用pagemldiver获得的结果在数值上等效于计算循环中每个相同矩阵的线性系统解。然而,由于浮点舍入错误,这两个结果可能略有不同。
算法
与mldiver类似,pagemldiver函数通过对数组页面应用一系列检查来确定在求解输入数组中的线性系统时使用哪种算法。不同的算法可以用于输入阵列中的不同页面。pagemldivide根据A中每个数组页面的财产在QR、Triangular、LU和Cholesky解算器之间进行选择,如图所示。
官网链接
开发工具:MATLAB 2022b
百度翻译
领英