用C/C++语言实现如下函数:1. boollu(double*a,int*pivot,intn);矩阵的LU分解。
假设数组anxn在内存中按行优先次序存放。
此函数使用高斯列选主元消去法将其就地进行LU分解。
pivot为输出参数,pivot[0,n)中存放主元的位置排列。
函数成功时返回false,否则返回true。
2. boolguass(doubleconst*lu,intconst*p,double*b,intn);求线代数方程组的解设矩阵Lunxn为某个矩阵anxn的LU分解,在内存中按行优先次序存放。
p[0,n)为LU分解的主元排列。
b为方程组Ax=b的右端向量。
此函数计算方程组Ax=b的解,并将结果存放在数组b[0,n)中。
函数成功时返回false,否则返回true。
3. voidqr(double*a,double*d,intn);矩阵的QR分解假设数组anxn在内存中按行优先次序存放。
此函数使用HouseHolder变换将其就地进行QR分解。
d为输出参数,d[0,n)中存放QR分解的上三角对角线元素。
4. boolhouseholder(doubleconst*qr,doubleconst*d,double*b,intn);求线代数方程组的解设矩阵qrnxn为某个矩阵anxn的QR分解,在内存中按行优先次序存放。
d[0,n)为QR分解的上三角对角线元素。
b为方程组Ax=b的右端向量。
函数计算方程组Ax=b的解,并将结果存放在数组b[0,n)中。
函数成功时返回false,否则返回true。
1