pascal(3,2)是怎么求的?求详细过程。pascal(n,1)和pascal(n,2)分别是

pascal(3,2)是怎么求的?求详细过程。pascal(n,1)和pascal(n,2)分别是怎样的?... pascal(3,2)是怎么求的?求详细过程。pascal(n,1)和pascal(n,2)分别是怎样的? 展开
 我来答
tianxiawulang
推荐于2016-02-03 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2648万
展开全部

1、pascal这个函数最常用的调用方式是pascal(n),即求n阶Pascal矩阵。Pascal矩阵是从Pascal三角(国内称为杨辉三角或贾宪三角)提取出来的矩阵,其重要性质包括:对称;正定;而且其逆矩阵的元素也都是整数。

 

2、pascal(n,1) 是n阶Pascal矩阵的下三角 Cholesky分解(但部分列的符号与 chol(P,'lower') 得到的结果有差别)。

 

所谓的 Cholesky分解,是指把矩阵分解为一个下三角矩阵以及它的共轭转置矩阵的乘积(那标量来类比的话,此分解就好像求平方根,所以分解方法又称平方根法)。与一般的矩阵分解求解方程的方法比较,Cholesky分解效率很高,大约是LU分解两倍。可以看作是当A满足特定条件时,LU三角分解法的一种特殊变形(但算法是完全不同的)。

Cholesky是生于19世纪末的法国数学家,曾就读于巴黎综合理工学院。Cholesky分解是他在学术界最重要的贡献。后来,Cholesky参加了法国军队,不久在一战初始阵亡。

 

以下代码演示了一些相关性质:

>> L=pascal(5,1);
>> L*L'
ans =
     1     1     1     1     1
     1     2     3     4     5
     1     3     6    10    15
     1     4    10    20    35
     1     5    15    35    70
>> P=pascal(5)
P =
     1     1     1     1     1
     1     2     3     4     5
     1     3     6    10    15
     1     4    10    20    35
     1     5    15    35    70
>> L*L
ans =
     1     0     0     0     0
     0     1     0     0     0
     0     0     1     0     0
     0     0     0     1     0
     0     0     0     0     1 
>> L
L =
     1     0     0     0     0
     1    -1     0     0     0
     1    -2     1     0     0
     1    -3     3    -1     0
     1    -4     6    -4     1
>> chol(P,'lower')
ans =
     1     0     0     0     0
     1     1     0     0     0
     1     2     1     0     0
     1     3     3     1     0
     1     4     6     4     1

 

3、pascal(n,2) 是对 pascal(n,1) 进行转置然后进行列的重排(左右翻转)得到的。该矩阵相当于单位阵的立方根:

>> L2=pascal(5,2);
>> L2^3
ans =
     1     0     0     0     0
     0     1     0     0     0
     0     0     1     0     0
     0     0     0     1     0
     0     0     0     0     1

 

4、从上面的介绍,很容易形成一种印象,即先有Pascal矩阵,然后通过Cholesky分解得到 pascal(n,1)。但实际的算法并非如此。MATLAB中的实际算法是,先计算出 L = pascal(n,1),然后再通过 P = L*L' 得到Pascal矩阵。大致的算法如下:

n = 6;
L = diag((-1).^(0:n-1));
L(:,1) = 1;
for j=2:n-1
    for i=j+1:n
        L(i,j) = L(i-1,j) - L(i-1,j-1);
    end
end
P = L*L'

那么 pascal(n,2) 又是怎样求出来的呢?有了上面的 L = pascal(n,1),后面的计算很简单,加上两句:

P2 = rot90(L,3);
if n/2 == round(n/2), P2 = -P2; end

就得到 pascal(n,2) 了。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式