def note(self):
    '\n        Summary\n        ====\n        Print chapter28.2 note\n\n        Example\n        ====\n        ```python\n        Chapter28_2().note()\n        ```\n        '
    print('chapter28.2 note as follow')
    print('28.2 矩阵乘法的Strassen算法')
    print('两个n*n矩阵乘积的著名的Strassen递归算法,其运行时间为Θ(n^lg7)=Θ(n^2.81)')
    print('对足够大的n,该算法在性能上超过了在25.1节中介绍的运行时间为Θ(n^3)的简易矩阵乘法算法MATRIX-MULTIPLY')
    print('算法概述')
    print('  Strassen算法可以看作是熟知的一种设计技巧--分治法的一种应用')
    print('  假设希望计算乘积C=AB,其中A、B和C都是n*n方阵.假定n是2的幂,把A、B和C都划分为四个n/2*n/2矩阵')
    print('  然后作分块矩阵乘法，可以得到递归式T(n)=8T(n/2)+Θ(n^2),但是T(n)=Θ(n^3)')
    print('Strassen发现了另外一种不同的递归方法,该方法只需要执行7次递归的n/2*n/2的矩阵乘法运算和Θ(n^2)次标量加法与减法运算')
    print('从而可以得到递归式T(n)=7T(n/2)+Θ(n^2),但是T(n)=Θ(n^2.81)')
    print('Strassen方法分为以下四个步骤')
    print(' 1) 把输入矩阵A和B划分为n/2*n/2的子矩阵')
    print(' 2) 运用Θ(n^2)次标量加法与减法运算,计算出14个n/2*n/2的矩阵A1,B1,A2,B2,...,A7,B7')
    print(' 3) 递归计算出7个矩阵的乘积Pi=AiBi,i=1,2,...,7')
    print(' 4) 仅使用Θ(n^2)次标量加法与减法运算,对Pi矩阵的各种组合进行求和或求差运算,', '从而获得结果矩阵C的四个子矩阵r,s,t,u')
    print('从实用的观点看,Strassen方法通常不是矩阵乘法所选择的方法')
    print('  1) 在Strassen算法的运行时间中,隐含的常数因子比简单的Θ(n^3)方法中的常数因子要大')
    print('  2) 当矩阵是稀疏的时候,为系数矩阵设计的方法更快')
    print('  3) Strassen算法不像简单方法那样具有数值稳定性')
    print('  4) 在递归层次中生成的子矩阵要消耗空间')
    print('练习28.2-1 运用Strassen算法计算矩阵的乘积')
    print('矩阵的乘积为:')
    print((np.matrix([[1, 3], [5, 7]]) * np.matrix([[8, 4], [6, 2]])))
    print('练习28.2-2 如果n不是2的整数幂,应该如何修改Strassen算法,求出两个n*n矩阵的乘积', '证明修改后的算法的运行时间为Θ(n^lg7)')
    print('练习28.2-3 如果使用k次乘法(假定乘法不满足交换律)就能计算出两个3*3矩阵的乘积', '就能在o(n^lg7)时间内计算出两个n*n矩阵的乘积,满足上述条件的最大的k值是多少')
    print('练习28.2-4 V.Pan发现了一种使用132464次乘法的求68*68矩阵乘积的方法', '一种使用143640次乘法的求70*70矩阵乘积的方法', '一种使用155424次乘法的求72*72矩阵乘积的方法')
    print('练习28.2-5 用Strassen算法算法作为子程序,能在多长时间内计算出一个kn*n矩阵与一个n*kn矩阵的乘积')
    print('练习28.2-6 说明如何仅用三次实数乘法运算,就可以计复数a+bi与c+di的乘积.该算法应该把a,b,c和d作为输入,', '并分别生成实部ac-bd和虚部ad+bc的值')
Summary
====
Print chapter28.2 note

Example
====
```python
Chapter28_2().note()
```
def note(self):
    '\n        Summary\n        ====\n        Print chapter28.2 note\n\n        Example\n        ====\n        ```python\n        Chapter28_2().note()\n        ```\n        '
    print('chapter28.2 note as follow')
    print('28.2 矩阵乘法的Strassen算法')
    print('两个n*n矩阵乘积的著名的Strassen递归算法,其运行时间为Θ(n^lg7)=Θ(n^2.81)')
    print('对足够大的n,该算法在性能上超过了在25.1节中介绍的运行时间为Θ(n^3)的简易矩阵乘法算法MATRIX-MULTIPLY')
    print('算法概述')
    print('  Strassen算法可以看作是熟知的一种设计技巧--分治法的一种应用')
    print('  假设希望计算乘积C=AB,其中A、B和C都是n*n方阵.假定n是2的幂,把A、B和C都划分为四个n/2*n/2矩阵')
    print('  然后作分块矩阵乘法，可以得到递归式T(n)=8T(n/2)+Θ(n^2),但是T(n)=Θ(n^3)')
    print('Strassen发现了另外一种不同的递归方法,该方法只需要执行7次递归的n/2*n/2的矩阵乘法运算和Θ(n^2)次标量加法与减法运算')
    print('从而可以得到递归式T(n)=7T(n/2)+Θ(n^2),但是T(n)=Θ(n^2.81)')
    print('Strassen方法分为以下四个步骤')
    print(' 1) 把输入矩阵A和B划分为n/2*n/2的子矩阵')
    print(' 2) 运用Θ(n^2)次标量加法与减法运算,计算出14个n/2*n/2的矩阵A1,B1,A2,B2,...,A7,B7')
    print(' 3) 递归计算出7个矩阵的乘积Pi=AiBi,i=1,2,...,7')
    print(' 4) 仅使用Θ(n^2)次标量加法与减法运算,对Pi矩阵的各种组合进行求和或求差运算,', '从而获得结果矩阵C的四个子矩阵r,s,t,u')
    print('从实用的观点看,Strassen方法通常不是矩阵乘法所选择的方法')
    print('  1) 在Strassen算法的运行时间中,隐含的常数因子比简单的Θ(n^3)方法中的常数因子要大')
    print('  2) 当矩阵是稀疏的时候,为系数矩阵设计的方法更快')
    print('  3) Strassen算法不像简单方法那样具有数值稳定性')
    print('  4) 在递归层次中生成的子矩阵要消耗空间')
    print('练习28.2-1 运用Strassen算法计算矩阵的乘积')
    print('矩阵的乘积为:')
    print((np.matrix([[1, 3], [5, 7]]) * np.matrix([[8, 4], [6, 2]])))
    print('练习28.2-2 如果n不是2的整数幂,应该如何修改Strassen算法,求出两个n*n矩阵的乘积', '证明修改后的算法的运行时间为Θ(n^lg7)')
    print('练习28.2-3 如果使用k次乘法(假定乘法不满足交换律)就能计算出两个3*3矩阵的乘积', '就能在o(n^lg7)时间内计算出两个n*n矩阵的乘积,满足上述条件的最大的k值是多少')
    print('练习28.2-4 V.Pan发现了一种使用132464次乘法的求68*68矩阵乘积的方法', '一种使用143640次乘法的求70*70矩阵乘积的方法', '一种使用155424次乘法的求72*72矩阵乘积的方法')
    print('练习28.2-5 用Strassen算法算法作为子程序,能在多长时间内计算出一个kn*n矩阵与一个n*kn矩阵的乘积')
    print('练习28.2-6 说明如何仅用三次实数乘法运算,就可以计复数a+bi与c+di的乘积.该算法应该把a,b,c和d作为输入,', '并分别生成实部ac-bd和虚部ad+bc的值')