```java
import org.apache.commons.math3.linear.Array2DRowRealMatrix;
import org.apache.commons.math3.linear.DecompositionSolver;
import org.apache.commons.math3.linear.QRDecomposition;
import org.apache.commons.math3.linear.RealMatrix;
import org.apache.commons.math3.linear.RealVector;
public class QRDecompositionExample {
public static void main(String[] args) {
// 假设的 Td2, T1, Ng 值,这里以数组形式提供
double[] Td2 = {10, 5, 3}; // 假设的 Td2 值
double[] T1 = {2, 4, 8}; // 假设的 T1 值
double[] Ng = {3, 1, 7}; // 假设的 Ng 值
// 创建系数矩阵 A
double[][] data = new double[3][3];
for (int i = 0; i < 3; i++) {
data[i][0] = 1; // x的系数
data[i][1] = T1[i]; // y的系数
data[i][2] = Ng[i]; // z的系数
}
RealMatrix A = new Array2DRowRealMatrix(data);
// 创建常数向量 b
double[] b = Td2;
RealVector B = new Array2DRowRealMatrix(b).getColumnVector(0);
// 进行 QR 分解
QRDecomposition<RealMatrix> qrDecomposition = new QRDecomposition<>(A);
DecompositionSolver solver = qrDecomposition.getSolver();
// 求解方程
RealVector x = solver.solve(B);
// 输出结果
System.out.println("x = " + x.getEntry(0));
System.out.println("y = " + x.getEntry(1));
System.out.println("z = " + x.getEntry(2));
}
}
```
,我们创建了一个3x3的系数矩阵 `A`,每一行对应一个方程的系数。然后我们创建了一个3x1的常数向量 `B`,每一行对应一个方程的常数项。最后,我们使用 QR 分解来求解这个线性方程组,并输出解向量 `x` 的所有元素。