📜  在 MATLAB 中将二次形式转换为规范形式

📅  最后修改于: 2022-05-13 01:54:59.738000             🧑  作者: Mango

在 MATLAB 中将二次形式转换为规范形式

二次形式是任意数量变量的二次齐次多项式。在本文中,我们将看到二次形式到规范形式的转换。

例如,

如果A = \begin{bmatrix} a &  h& g \\ h &b  &f  \\ g& f &c  \\ \end{bmatrix} X = \begin{bmatrix} x \\ y\\ z\\ \end{bmatrix} X` = \begin{bmatrix} x \\ y\\ z\\ \end{bmatrix}

然后, X`AX = ax^{2}  + by^{2} + cz^{2} + 2fyz + 2gxz + 2hxy  , 这是一个二次型。

每个二次型都可以化简为平方和,称为规范型:

λ1x2 + λ2y2 + λ3z2, 
Where λ1, λ2 & λ3 are Eigen Values of the above 
Matrix 'A' (Matrix of Quadratic form)

将二次形式转换为规范形式的步骤:

第 1 步:考虑给定的二次形式的格式如下:

ax2+by2+cz2+2fyz+2gxz+2hxy

步骤2:然后从上面的二次形式,我们找到下面的矩阵'A'(称为二次形式的矩阵):
A = [a,h,g; h,b,f; g,f,c]

第三步:找到上述矩阵“A”后,我们通过求解其特征方程找到它的特征值。 'A' 的特征方程是:

|A-λI3| = 0, 
Where I3 is the Identity Matrix of order 3.

第四步:扩展上述关系,我们得到:

λ3 + C1λ2 + C2λ + C3I3 = 0, 
where C1, C2 & C3 are Real Constants.

第 5 步:求解上述关系,我们得到 'λ' 的 3 个解,令这 3 个解为 λ 1 、λ 2和 λ 3。

第 6 步:那么给定的二次型 (ax 2 +by 2 +cz 2 +2fyz+2gxz+2hxy) 的典型形式表示为:

Canonical Form = λ1x2 + λ2y2 + λ3z2 

与二次形式相关的不同参数是:

  • 索引:它是矩阵“A”(二次型矩阵)的正特征值的数量。二次形式的索引也可以定义为二次形式的规范形式表示中的正平方项的数量。
  • 签名:它是矩阵“A”(二次型矩阵)的正负特征值数之差。二次形式的签名也可以定义为二次形式的规范形式表示中正平方项数和负平方项数之间的差。
  • 秩:它是矩阵“A”(二次型矩阵)的非零特征值的数量。二次形式的秩也可以定义为矩阵“A”的行梯形形式中的非零行数。
  • 二次型的性质:基于矩阵'A'(二次型矩阵)的特征值的性质,确定二次型的性质。
    • 如果矩阵“A”(二次型矩阵)的所有特征值都是正的,那么二次型的性质就是正定的。
    • 否则,如果矩阵“A”(二次型矩阵)的所有特征值都是负的,则二次型的性质被称为负定。
    • 否则,如果矩阵“A”(二次型矩阵)的所有特征值都是非负的,则称二次型的性质是半正定的。
    • 否则,如果矩阵“A”(二次型矩阵)的所有特征值都是非正的,则称二次型的性质是负半定的。
    • 否则在所有其他情况下(“A”的正、负和零特征值的混合),二次形式的性质被称为“不确定的”。

注意:这里,非负特征值意味着它可以是零或正值。此外,非正特征值意味着它可以是零或负值。

以下代码中使用的 MATLAB 函数是:

  • disp(“txt”):此方法向用户显示消息“txt”。
  • input(“txt”):该方法显示消息-“txt”并等待用户输入值并按回车键。
  • eig(A):此方法返回一个列向量,其中包含方阵“A”的特征值。
  • strcat(A, B,…):此方法水平连接其输入参数中的文本。
  • rank(A):此方法返回矩阵“A”的秩。

例子:

Matlab
% MATLAB Implementation to convert Quadratic Form
% to Canonical Form and to find Different Parameters
% associated with Quadratic form:
 clear all 
 clc        
 disp("MATLAB Implementation to convert Quadratic Form to
     Canonical Form and to find Different Parameters associated
     with Quadratic form | GeeksforGeeks")
E = input("Enter the coefficients in the order 
   [a,b,c,f,g,h] for the Quadratic form: [ax^2+by^2+cz^2+2fyz+2gxz+2hxy] : ");
a = E(1);
b = E(2); 
c = E(3);
  
% Coefficients of the Quadratic form
f = E(4); g=E(5); h=E(6);  
  
% Finding Matrix 'A' (Matrix of Quadratic form) 
e = eig(A);
A = [a h g;h b f;g f c];  
  
% λ1 , λ2 & λ3
l1 = e(1);
l2 = e(2);
l3 = e(3); 
  
disp(strcat('The Canonical form of given Quadratic form is: 
(',num2str(l1),')x^2+(',num2str(l2),')y^2+(',num2str(l3),')z^2'))
a=0;
b=0;
  
% Counting the Number of Positive and Negative Eigen 
% values of Matrix 'A' (Matrix of Quadratic form) 
for i=1:3    
    if(e(i)>0)
        a=a+1;
    elseif(e(i)<0)
        b=b+1;
    end
end
  
% Number of Positive Eigen values of Matrix 
% 'A' (Matrix of Quadratic form) 
index=a
  
% Difference between the number of Positive and Negative 
% Eigen values of Matrix 'A' (Matrix of Quadratic form) 
  
signature=a-b  
rank=rank(A)
 % If all Eigen values of Matrix 'A'
 % (Matrix of Quadratic form) are Positive
   
if(a==3)           
    disp('The Nature of given Quadratic form is Positive Definite')
% If all Eigen values of Matrix 'A' 
% (Matrix of Quadratic form) are Negative
  
elseif(b==3)       
    disp('The Nature of given Quadratic form is Negative Definite')
% If all Eigen values of Matrix 'A' (Matrix of Quadratic form) 
% are non-negative (positive or zero)
  
elseif(b==0)        
    disp('The Nature of given Quadratic form is Positive Semi-Definite')
% If all Eigen values of Matrix 'A' (Matrix of Quadratic
% form) are non-positive (negative or zero)
  
elseif(a==0)        
    disp('The Nature of given Quadratic form is Negative Semi-Definite')
else                
% If all Eigen values of Matrix 'A' (Matrix of 
% Quadratic form) are Mix of Positive, Negative & Zero
  
    disp('The Nature of given Quadratic form is InDefinite')
end


input: If the Quadratic form is x2+3y2+3z2-2yz

输出:

Input: If the Quadratic form is 2yz+2xz-2xy

输出: