數(shù)值計(jì)算day3-求解線性方程組(上)

上節(jié)課主要介紹了非線性方程的幾種數(shù)值解法,其中包括交叉法(二分法、線性插值法)和開放法(牛頓法、割線法、固定點(diǎn)法)。本節(jié)課主要介紹線性方程組的數(shù)值求解方法,主要分為直接法和迭代法兩類。直接法包括高斯消去法(Gauss elimination)、高斯約當(dāng)法(Gauss-Jordan)以及LU分解法,迭代法包括Jacobi法和高斯塞德爾法(Gauss-Seidel) 。

1. 高斯消去法(Gauss Elimination Method)

高斯消去法是通過將線性方程組轉(zhuǎn)化為上三角的形式,然后一步一步回代(back substitution)求解的方法。
例:\begin{cases}x_1+2x_2=5 \\ 3x_1+4x_2=6\end{cases}

  • 系統(tǒng)法:\begin{cases}x_1+2x_2=5 \\ 3x_1+4x_2=6\end{cases} \rightarrow \begin{cases}x_1+2x_2=5 \\ 0-2x_2=-9\end{cases} \rightarrow \begin{cases}x_1+2x_2=5 \\ x_2=4.5\end{cases} \rightarrow \begin{cases}x_1=-4 \\ x_2=4.5\end{cases}
  • 系統(tǒng)法的增廣矩陣形式:將方程寫為矩陣的形式 \begin{bmatrix}1 & 2 \\3 & 4\end{bmatrix} \begin{bmatrix}x_1 \\ x_2 \end{bmatrix}=\begin{bmatrix}5\\6\end{bmatrix} 系統(tǒng)法的求解過程可以寫成如下增廣矩陣的變換形式 \begin{bmatrix}1 & 2 & 5 \\3 & 4 & 6\end{bmatrix} \rightarrow \begin{bmatrix}1 & 2 & 5 \\0 & -2 & -9\end{bmatrix} \rightarrow \begin{bmatrix}1 & 2 & 5 \\0 & 1 & 4.5\end{bmatrix} \rightarrow \begin{bmatrix}1 & 0 & -4 \\0 & 1 & 4.5\end{bmatrix}

例:
\begin{cases}2x_1+x_2-x_3=1\\x_1+2x_2+x_3=8\\-x_1+x_2-x_3=-5\end{cases}

matrix:
\begin{bmatrix}2 & 1 & -1 & 1\\ 1 &2 & 1 & 8\\ -1 & 1 & -1 & -5 \end{bmatrix} \rightarrow \begin{bmatrix}2 & 1 & -1 & 1\\ 0 &1.5 & 1.5 & 7.5\\ 0 & 1.5 & -1.5 & -4.5 \end{bmatrix}

\rightarrow \begin{bmatrix}2 & 1 & -1 & 1\\ 0 &1.5 & 1.5 & 7.5\\ 0 & 0 & -3 & -12\end{bmatrix} \rightarrow \begin{cases}-3x_2 = -12\\x_3=4\end{cases} \rightarrow \begin{cases}x_1 =2 \\x_2=1\\x_3=4\end{cases}

類似的,n \times n 形式的方程組: \begin{cases}a_{11}x_1+a_{12}x_2+\cdots+a_{1n}x_n=b_1 \\ a_{21}x_1+a_{22}x_2+\cdots+a_{2n}x_n=b_2\\ \vdots\\ a_{n1}x_1+a_{n2}x_2+\cdots+a_{nn}x_n=b_n\\ \end{cases}
可以寫作如下矩陣形式:A=\begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n}\\ a_{21} & a_{22} & \cdots & a_{2n}\\ \vdots\\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{bmatrix}, x=\begin{bmatrix}x_1 \cdots x_n\end{bmatrix}, b=\begin{bmatrix}b_1 \cdots b_n\end{bmatrix}, Ax=b

高斯消去法的核心:

  • 方程組寫為矩陣形式
  • 矩陣行變換:將一行中所有元素乘上一個(gè)標(biāo)量,減去(加上)另外一行,該操作不會(huì)改變方程的解
  • 逐行變換,直至將矩陣轉(zhuǎn)換為便于求解的形式

一般而言,如下三種矩陣形式方便求解:

  • 對(duì)角形式: \begin{bmatrix}1 & & 0\\ & \ddots & \\0 & & 1 \end{bmatrix}, x_n=b_n
  • 上三角形式: \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n}\\ & a_{22} & \cdots & a_{2n}\\ & & \ddots&\vdots\\ & & & a_{nn}\\ \end{bmatrix},使用回代法求解(back substitution): a_{nn}x_n=b_n \rightarrow x_n = \frac{b_n}{a_{nn}} a_{n-1,n-1}x_{n-1}+ a_{n-1,n}x_n=b_{n-1}\rightarrow x_{n-1}=\frac{b_{n-1}-a_{n-1,n}x_n}{a_{n-1,n-1}} 重復(fù)下去 x_i=\frac{b_i-\sum^n_{j=i+1}a_{ij}x_j}{a_{ii}}
  • 下三角形式 :\begin{bmatrix} a_{11} & & &\\ a_{21} & a_{22} & &\\ \vdots & \vdots & \ddots&\\ a_{n1}& a_{n2}& \cdots & a_{nn}\\ \end{bmatrix} 使用前向替換法(forward substitution): a_{11}x_1=b_1 \rightarrow x_1 = \frac{b_1}{a_{11}} a_{2,1}x_{1}+ a_{2,2}x_2=b_{2}\rightarrow x_{2}=\frac{b_{2}-a_{2,1}x_1}{a_{2,2}} 重復(fù)下去 x_i=\frac{b_i-\sum^{i-1}_{j=1}a_{ij}x_j}{a_{ii}}

Matlab實(shí)現(xiàn)(求解Ax=b, 使用左除x=A\backslash b):

>> A = [1 2;3 4]

A =

     1     2
     3     4

>> b = [5 6]'

b =

     5
     6

>> x = A\b

x =

   -4.0000
    4.5000

>> format long
>> x = A\b

x =

  -3.999999999999999
   4.499999999999999

MATLAB實(shí)現(xiàn)(高斯消去法):

function x=Gauss(a,b)
  ab=[a,b];
  [R,C]=size(ab);
  for j=1:R-1
      for i=j+1:R
          ab(i,j:C)=ab(i,j:C)-ab(i,j)/ab(j,j)*ab(j,j:C);
      end
  end
  x=zeros(R,1);
  x(R)=ab(R,C)/ab(R,R);
  for i=R-1:-1:1
      x(i)=(ab(i,C)-ab(i,i+1:R)*x(i+1:R))/ab(i,i);
  end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>> A = [1 2;3 4]

A =

     1     2
     3     4

>> b = [5 6]'

b =

     5
     6

>> format long
>> Gauss(A,b)

ans =

  -4.000000000000000
   4.500000000000000

MATLAB實(shí)現(xiàn)(回代法與前向替換法)

function y = BackwardSub(a,b)
% The function solves a system of linear equations ax=b 
% where a is upper triangular by using backward substitution.
% Input variables:
% a  The matrix of coefficients.
% b  A column vector of constants.
% Output variable:
% y  A colum vector with the solution.

n = length(b);
y(n,1) = b(n)/a(n,n);
for i = n-1:-1:1
    y(i,1)=(b(i)-a(i,i+1:n)*y(i+1:n,1))./a(i,i);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function y = ForwardSub(a,b)
% The function solves a system of linear equations ax=b 
% where a is lower triangular by using forward substitution.
% Input variables:
% a  The matrix of coefficients.
% b  A column vector of constants.
% Output variable:
% y  A colum vector with the solution.

n = length(b);
y(1,1) = b(1)/a(1,1);
for i = 2:n
    y(i,1)=(b(i)-a(i,1:i-1)*y(1:i-1,1))./a(i,i);
end

2. 高斯主元消去(Gauss Pivoting)

可以發(fā)現(xiàn),當(dāng)主元為0或非常小時(shí),使用高斯消去法會(huì)失去精度,因此,在必要時(shí)可以交換行的順序: \begin{bmatrix} 0 & 2 & 5\\ 3 & 4& 5 \end{bmatrix}, 高斯主元法就是通過交換行的順序,來保證主元不為0,并且盡可能取絕對(duì)值較大的值,下面通過一個(gè)案例,說明主元很小時(shí),高斯消去法會(huì)造成計(jì)算精度上出現(xiàn)較大誤差,而高斯主元法的計(jì)算結(jié)果會(huì)更為精確。
例: \begin{cases}0.0003x_1 + 12.34x_2=12.343 \\0.4321 x_1+x_2=5.321\end{cases} 使用高斯消去:

  • \frac{0.4321}{0.0003}=1440 (round-off error, since 0.0003*1440 = 0.4320)
  • \begin{cases}0.0003x_1 + 12.34x_2=12.343 \\ 0.0001 x_1+17770x_2=-17760\end{cases} \rightarrow x_2 = -\frac{17760}{17770}=0.9994 \rightarrow x_1 = \frac{12.343-12.34*0.9994}{0.0003}=33.33

MATLAB運(yùn)算結(jié)果:

>> A = [0.0003 12.34;0.4321 1]

A =

   0.000300000000000  12.340000000000000
   0.432100000000000   1.000000000000000

>> b = [12.343 5.321]'

b =

  12.343000000000000
   5.321000000000000

>> A\b

ans =

  10.000000000000000
   1.000000000000000

若交換行序(高斯主元消去):

  • \frac{0.0003}{0.4321}=0.0006943(round-off error, since 0.4321*0.0006943 = 0.0003)
  • \begin{cases}0.4321 x_1+x_2=5.321 \\ 0x_1 + 12.34x_2=12.34\end{cases} \rightarrow x_2 = -\frac{12.34}{12.34}=1\rightarrow x_1 = \frac{5.321-1}{0.4321}=10

MATLAB實(shí)現(xiàn)(高斯主元消去)

function x=GaussPivot(a,b)
  ab=[a,b];
  [R,C]=size(ab);
  for j=1:R-1
      if ab(j,j)==0
          for k=j+1:R
              if ab(k,j)~=0
                  abTemp=ab(j,:);
                  ab(j,:)=ab(k,:);
                  ab(k,:)=abTemp;
                  break
              end
          end          
      end
      for i=j+1:R
          ab(i,j:C)=ab(i,j:C)-ab(i,j)/ab(j,j)*ab(j,j:C);
      end
  end
  x=zeros(R,1);
  x(R)=ab(R,C)/ab(R,R);
  for i=R-1:-1:1
      x(i)=(ab(i,C)-ab(i,i+1:R)*x(i+1:R))/ab(i,i);
  end
end

3. 高斯約當(dāng)法(Gauss-Jordan Method, 同時(shí)適用于求矩陣的逆)

高斯約當(dāng)法一般采用高斯主元消去法,不同的是,高斯約當(dāng)法每次會(huì)將主元規(guī)范化為1,且最終將原矩陣轉(zhuǎn)化為單位矩陣。
例:\begin{bmatrix}4 & 1 & 2 & 21\\ 2 & -2 & 2 & 8\\ 1 & -2 & 4 & 16\end{bmatrix} \rightarrow \begin{bmatrix}1 & -2 & 4 & 16\\ 2 & -2 & 2 & 8 \\4 & 1 & 2 & 21 \end{bmatrix} \rightarrow \begin{bmatrix}1 & -2 & 4 & 16\\ 0 & 2 & -6 & -24 \\0 & 9 & -14 & -43 \end{bmatrix} \rightarrow \begin{bmatrix}1 & -2 & 4 & 16\\ 0 & 1 & -3 & -12 \\0 & 9 & -14 & -43 \end{bmatrix} \rightarrow \begin{bmatrix}1 & 0 & -2 & -8\\ 0 & 1 & -3 & -12 \\0 & 0 & 13 & 65 \end{bmatrix} \rightarrow \begin{bmatrix}1 & 0 & -2 & -8\\ 0 & 1 & -3 & -12 \\0 & 0 & 1 & 5 \end{bmatrix} \rightarrow \begin{bmatrix}1 & 0 & 0 & 2\\ 0 & 1 & 0 & 3 \\0 & 0 & 1 & 5 \end{bmatrix}

可以看到,高斯約當(dāng)法可以很方便地用來求解一個(gè)矩陣的逆:AB=I, A\begin{bmatrix}b_1 & b_2 & b_3 \end{bmatrix} \rightarrow \begin{bmatrix}a_{11} & a_{12} & a_{13} & 1 & 0 & 0\\ a_{21} & a_{22} & a_{23} & 0 & 1 & 0\\ a_{31} & a_{32} & a_{33} & 0 & 0 & 1\end{bmatrix} \rightarrow \begin{bmatrix}1 & 0 & 0 &c_{11} & c_{12} & c_{13} & \\ 0 & 1 & 0 & c_{21} & c_{22} & c_{23} &\\ 0 & 0 & 1& c_{31} & c_{32} & c_{33} \end{bmatrix}

4. LU分解法(LU-decomposition Method)

LU分解是將一個(gè)矩陣分解為一個(gè)下三角矩陣和上三角矩陣的乘積:A=LU, 其中L 表示下三角矩陣, U表示上三角矩陣。LU分解之后,求解線性方程Ax=b 就等價(jià)于求解如下兩個(gè)方程:Ux=y,Ly=b

LU分解主要有兩種方法來實(shí)現(xiàn):

  • 高斯消去(Gauss Elimination);
  • Crout's Method
4.1 Crout's Method

\begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n}\\ a_{21} & a_{22} & \cdots & a_{2n}\\ \vdots\\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{bmatrix}=\begin{bmatrix}L_{11} & & & & \\ L_{21} & L_{22} & & & \\ \vdots & \vdots & \ddots & \\ L_{n1} & L_{n2} & \cdots & L_{nn} \end{bmatrix} \begin{bmatrix}1 & U_{12} & U_{13} & \cdots & U_{1n} \\ & 1 & U_{23} & \cdots &U_{2n}\\ & & \ddots & & \vdots \\ & & & & 1\end{bmatrix}

例:
\begin{bmatrix} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23}\\ a_{31} & a_{32} & a_{33} \end{bmatrix}=\begin{bmatrix} L_{11} & 0 & 0\\ L_{21} & L_{22} & 0\\ L_{31} & L_{32} & L_{33} \end{bmatrix}\begin{bmatrix} 1 & U_{12} & U_{13}\\ 0 &1 & U_{23}\\ 0 & 0 & 1 \end{bmatrix}=\begin{bmatrix} L_{11} & L_{11}U_{12} & L_{11}U_{13}\\ L_{21} & L_{21}U_{12}+L_{22} & L_{21}U_{13}+ L_{22}U_{23}\\ L_{31} & L_{31}U_{12}+L_{32} & L_{33}+ L_{31}U_{13}+ L_{32}U_{23} \end{bmatrix}
采用待定系數(shù)法求解:L_{11}=a_{11},L_{21}=a_{21},L_{31}=a_{31} U_{12} = \frac{a_{12}}{L_{11}}, U_{13}=\frac{a_{13}}{L_{11}} L_{22}=a_{22}-L_{21}U_{12},L_{32}=a_{32}-L_{31}U_{12} U_{23}=\frac{a_{23}-L_{21}U_{13}}{L_{22}} L_{33}=a_{33}-L_{31}U_{13}-L_{32}U_{23}
結(jié)合計(jì)算過程,可以推導(dǎo)出,對(duì)于n\times n矩陣,使用Crout's Method進(jìn)行LU分解的通用形式為:

  • L矩陣的第一列 L_{i1}=a_{i1},i=1,2,...,n
  • U矩陣的對(duì)角元素 U_{ii}=1,i=1,2,...,n
  • U矩陣的第1U_{1j} = \frac{a_{1j}}{L_{11}},j=2,...,n
  • L矩陣的其他元素 L_{ij}=a_{ij}-\sum^{j-1}_{k=1}L_{ik}U_{kj},i=2,3,...,n,j=2,3,...,i
  • U矩陣的其他元素 U_{ij} = \frac{a_{ij}-\sum^{j-1}_{k=1}L_{ik}U_{kj}}{L_{ii}},i=2,3,...,n,j=i+1,i+2,...,n

MATLAB實(shí)現(xiàn)(LU分解,Crout's Method)

function [L, U] = LUdecompCrout(A)
% The function decomposes the matrix A into a lower triangular matrix L 
% and an upper triangular matrix U, using Crout's method such that A=LU.
% Input variables:
% A  The matrix of coefficients.
% Output variable:
% L  Lower triangular matrix.
% U  Upper triangular matrix.

[R, C] = size(A);
for i = 1:R
    L(i,1) = A(i,1);
    U(i,i) = 1;
end
for j = 2:R
    U(1,j)= A(1,j)/L(1,1);
end
for i = 2:R
    for j = 2:i
        L(i,j)=A(i,j)-L(i,1:j-1)*U(1:j-1,j);
    end
    for j = i+1:R
        U(i,j)=(A(i,j)-L(i,1:i-1)*U(1:i-1,j))/L(i,i);
    end
end
4.2 高斯消去

\begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n}\\ a_{21} & a_{22} & \cdots & a_{2n}\\ \vdots\\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{bmatrix}=\begin{bmatrix}1 & & & & \\ m_{21} & 1 & & & \\ m_{31} & m_{32} & 1 & &\\ \vdots & \vdots & \vdots & \ddots & \\ m_{n1} & m_{n2} & \cdots & m_{n,n-1} & 1\end{bmatrix} \begin{bmatrix}a'_{11} & a'_{12} & \cdots & a'_{1n} \\ & a'_{22} & \cdots & a'_{2n}\\ & & \ddots & \vdots\\ & & & a'_{nn}\end{bmatrix}

general formulation: m_{ij}=\frac{a'_{ij}}{a'_{jj}}

例: \begin{bmatrix}1 & 2\\3 & 4\end{bmatrix}=\begin{bmatrix}1 & 0\\3 & 1\end{bmatrix}\begin{bmatrix}1 & 2\\0 & -2\end{bmatrix}

高斯消去法進(jìn)行LU分解也可以通過待定系數(shù)法求解出矩陣參數(shù):

  • U矩陣第一行:U_{1j}=a_{1j},j=1,2,...,n
  • L矩陣對(duì)角元素:L_{ii}=1,i=1,2,...,n
  • L矩陣第一列:L_{i1}=\frac{a_{i1}}{U_{11}}
  • U矩陣其他元素:U_{ij}=a_{ij}-\sum^{i-1}_{k=1}L_{ik}U_{kj},j=2,...,n,i=2,...,j
  • L矩陣其他元素:L_{ij}=\frac{a_{i,j}-\sum^{j-1}_{k=1}L_{ik}U_{kj}}{L_{jj}},j=2,...,n,i=j+1,...,n

MATLAB實(shí)現(xiàn)(LU分解,高斯法,待定系數(shù))

function [L,U] = LUdecopGauss(A)
[R,C] = size(A);
for i = 1:C
    L(i,i) = 1;
    U(1,i) = A(1,i);
end
for i = 2:R
    L(i,1) = A(i,1)/U(1,1);
end

for j = 2:C
    for i = 2:j
        U(i,j) = A(i,j)-L(i,1:i-1)*U(1:i-1,j);
    end
    for i= (j+1):R
        L(i,j) = (A(i,j)-L(i,1:j-1)*U(1:j-1,j))/U(j,j);
    end
end
end

高斯消去的待定系數(shù)法與Crout's 方法的待定系數(shù)法相比,要難以理解,可讀性差,主要在于通解形式與常規(guī)的求解順序不一致。為便于理解,還有一種拉格朗日形式來實(shí)現(xiàn)高斯消去法:
回顧高斯消去的過程:

  • 第一步運(yùn)算 A = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n}\\ a_{21} & a_{22} & \cdots & a_{2n}\\ \vdots\\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{bmatrix}\rightarrow A'=\begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n}\\ 0 & a'_{22} & \cdots & a'_{2n}\\ \vdots\\ 0 & a'_{n2} & \cdots & a'_{nn} \end{bmatrix}=L_1A,L_1=\begin{bmatrix} 1 & 0 & \cdots & 0\\ -\frac{a_{21}}{a_{11}} & 1 & \cdots & 0\\ \vdots\\ -\frac{a_{n1}}{a_{11}} & 0 & \cdots & 1 \end{bmatrix} 這是一步行變換
  • 第二步運(yùn)算 A'=\begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n}\\ 0 & a'_{22} & \cdots & a'_{2n}\\ \vdots\\ 0 & a'_{n2} & \cdots & a'_{nn} \end{bmatrix}\rightarrow A''=\begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n}\\ 0 & a'_{22} & \cdots & a'_{2n}\\ \vdots\\ 0 & 0 & \cdots & a''_{nn} \end{bmatrix}=L_2A‘,L_2=\begin{bmatrix} 1 & 0 & \cdots & 0\\ 0 & 1 & \cdots & 0\\ \vdots\\ 0 & -\frac{a'_{n2}}{a'_{22}} & \cdots & 1 \end{bmatrix}
  • n-1步運(yùn)算后 \begin{bmatrix}U_{11} & U_{12} & \cdots & U_{1n} \\ & U_{22} & \cdots & U_{2n}\\ & & \ddots & \vdots\\ & & & U_{nn}\end{bmatrix}=L_{n-1}L_{n-2}...L_1A 此時(shí)即為L(zhǎng)U分解中的U矩陣,而L=L^{-1}_{1}...L^{-1}_{n-2}L^{-1}_{n-1}=\begin{bmatrix} 1 & 0 & \cdots & 0\\ \frac{a_{21}}{a_{11}} & 1 & \cdots & 0\\ \vdots\\ \frac{a_{n1}}{a_{11}} & 0 & \cdots & 1 \end{bmatrix}\begin{bmatrix} 1 & 0 & \cdots & 0\\ 0 & 1 & \cdots & 0\\ \vdots\\ 0 & \frac{a'_{n2}}{a'_{22}} & \cdots & 1 \end{bmatrix}...=\begin{bmatrix} 1 & 0 & \cdots & 0\\ \frac{a_{21}}{a_{11}} & 1 & \cdots & 0\\ \vdots\\ \frac{a_{n1}}{a_{11}} & \frac{a'_{n2}}{a'_{22}} & \cdots & 1 \end{bmatrix}可以看到 L_{ij}=\frac{a_{ij}}{a'_{jj}}

MATLAB實(shí)現(xiàn)(LU分解,高斯消去,拉格朗日形式)

function [L,U]=LUGauss2(A)
  [R,C]=size(A);
   L = zeros(size(A));
  for i = 1:C
    L(i,i) = 1;
  end
  for j=1:R-1
      for i=j+1:R
          L(i,j) = A(i,j)/A(j,j);
          A(i,j:C)=A(i,j:C)-A(i,j)/A(j,j)*A(j,j:C);
      end
  end
  U = A;
end

5. 總結(jié)

本節(jié)課主要介紹了求解線性方程組的幾種直接法,包括高斯消去、高斯主元消去、高斯約當(dāng)、LU分解法等,其中高斯約當(dāng)法可以用來求矩陣的逆。 矩陣的LU分解又可以通過高斯消去和Crout 方法來實(shí)現(xiàn),對(duì)參數(shù)矩陣進(jìn)行LU分解后,很容易可以求解方程。下節(jié)課介紹求解線性方程組的迭代法。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容