在自然数幂求和-计算量风暴(二)第七节与自然数求和周边-数列(二) 第四节中均涉及到通过待定系数法构造多元一次方程组,求解方程组。文中提及利用excel进行求解。
本期继续说明几个Excel函数的应用。
一、理论基础
一般地,n个未知数需要n个线性方程构造线性方程组,进行求解。形如:
基本思路为通过“代入”或“加减”进行消元。也可利用矩阵方程来解。事实上,手算矩阵方程时,是将矩阵变换为上三角矩阵或下三角矩阵,类似“进行消元”的过程。方程组中未知数的系数构成系数矩阵A,未知数矩阵为X,常数矩阵为B。这样构成最简单的矩阵方程,即:。其中:
矩阵方程,简单说就是未知数为矩阵的方程。当系数矩阵是方阵时,先判断是否可逆。如果可逆,则可以利用左乘或右乘逆矩阵的方法求解未知矩阵。
当矩阵A为n阶可逆矩阵,则对于任意的,矩阵方程 有唯一解 :。
二、相关Excel函数
矩阵是一组数值,在excel中用到数组类函数。在excel中搜索:
MINVERSE函数
作用:返回数组矩阵的逆距阵。
语法:MINVERSE(array)。参数Array必需。
说明:行数和列数相等的数值数组。如果行数和列数不相等,则返回错误值 #VALUE!。
对于结果为数组的公式,必须以数组公式的形式输入。
对于不可逆矩阵,则返回错误值 #NUM!。
MMULT函数
作用:返回两数组的矩阵乘积。
语法:MMULT(array1, array2)。参数array1, array2是要进行矩阵乘法运算的两个数组。
说明:array1的列数必须与array2的行数相同。
若array1的列数与array2的行数不相等,则返回错误值 #VALUE!。
三、利用excel求方程组的解
以自然数求和周边-数列(二) 第四节中需求解的方程组为例,说明函数用法:
有ABCDEF6个未知数。系数矩阵很有规律,非常友好。
Excel中新建工作表,设置辅助行(列),方便界定数据量。输入系数矩阵每一个值,在单元格B4中填入:=POWER(ROW()-3,7-COLUMN()),下拉填充,右拉填充,得到系数矩阵。
在I列依次填入常数项。
选中单元格区域B12:G17,注意要选中单元格区域,选中后直接键入内容,不需多余 *** 作,输入:=MINVERSE(B4:G9),此时,同时按下Ctrl+Shift+Enter键。B12:G17单元格区域将会自动填充,这就是数组计算的结果(系数矩阵的逆矩阵)。
选中单元格区域K4:K9,选中后直接键入内容,输入:=MMULT(B12:G17,I4:I9),此时同样的 *** 作,同时按下Ctrl+Shift+Enter键。K4:K9单元格区域将会自动填充,这时数组计算的结果即为未知矩阵X。这时观察公式的编辑栏,公式的外边多了一对大括号{ },数组计算的标识。
于是,求得方程组解为:
以上编写的计算公式,只适用于未知数为6个的情况。当试图求解5个未知数时,删除一行或一列,数组计算结果报错。
四、探讨如何编写一个可以多次使用的解方程算法。查找函数界面:
OFFSET函数
作用:以指定的引用为参照系,通过给定偏移量、行数及列数返回一个新的引用。
语法:OFFSET(reference,rows,cols,height,width)
各参数如下:
参数Reference:作为偏移量参照系的引用区域。Reference须为单元格或相连单元格区域。
参数Rows:相对于偏移量参照系的左上角单元格,上(下)偏移的行数。
参数Cols: 相对于偏移量参照系的左上角单元格,左(右)偏移的列数。可为正数(代表在起始引用的右边)或负数(代表在起始引用的左边)。
参数Height:高度,要返回的引用区域的行数。
参数Height:宽度,要返回的引用区域的列数。
说明:返回的引用可以为一个单元格或单元格区域。
OFFSET函数只是返回一个引用 ,实际上并不更改选定区域。
提供思路:预先设定行数和列数较多的数组,求解n元一次方程组时,利用OFFSET函数只引用单元格区域。
1、说干就干。 先试着对举例中的系数矩阵引用的单元格区域。此时, 参照系的引用区域为单元格区域B4:G9;不进行偏移,Rows=Cols=0;要返回的引用区域的行数与列数为3,Height=Height=3。
选中单元格区域B12:D14,选中后直接键入内容,输入:=OFFSET(B4:G6,0,0,3,3),返回的是数组,故依旧同时按下Ctrl+Shift+Enter键。单元格区域B12:D14自动填充。成功引用系数矩阵的数据。
对所得到的矩阵利用MINVERSE函数求逆矩阵,常数矩阵利用OFFSET函数引用前3行。利用MMULT函数进行矩阵乘法运算,即可得到的未知数矩阵。
2、着手编制多元一次方程计算器
Excel中新建工作表,设置辅助行(列),方便限定数据量。现在先试着建立大小的系数矩阵。在单元格B3中填入:=COLUMN()-1,向右填充,达到50时,为AY列。
在单元格A4中填入:=ROW()-3。在页面左上角的名称框中输入A53,回车,光标即可跳转单元格A53。点击单元格A53后,返回页面最前端,按住Shift键,点击单元格A4,选中单元格区域A4:A53,同时按下Ctrl+D,单元格区域A4:A53自动填充。
在系数矩阵区域填充数字,随便填充。(如若填充的矩阵不可逆,在计算逆矩阵时会自动报错)。以单元格B3为初始位置的 矩阵,单元格区域为B3:AY53。这样,随便在单元格B4填入一个公式:=0.1*ROW()+0.2*COLUMN()。在名称框中输入AY53,光标会跳转单元格AY53。返回页面最前端,按住Shift键,点击单元格B4,会选中单元格区域B4:AY53。同时按下Ctrl+R,4行会自动填充,再同时按下Ctrl+D,单元格区域B4:AY53会自动填充。
为了界面简洁,隐藏部分单元格区域。设定单元格D1为n值,这里设置为5。
计算逆矩阵。以单元格B55为初始位置的 矩阵,单元格区域为B55:AY104。选中单元格区域B55:AY104,输入:=MINVERSE(OFFSET(B4:AY53,0,0,$D$1,$D$1)),同时按下Ctrl+Shift+Enter键进行确认。由于要对单元格D1进行绝对引用,需用$符号进行固定,快捷键F4。
常数矩阵随便填入,这里填入自然数序列。
未知矩阵尺寸为,设定单元格区域为BA4:BA53。选中单元格区域BA4:BA53,输入:=MMULT(OFFSET(B55:AY104,0,0,$D$1,$D$1),OFFSET(BA4:BA53,0,0,$D$1,1))。同时按下Ctrl+Shift+Enter键进行确认。
这样,n元一次方程组的计算器编制完成。使用时,在单元格D1内键入未知数个数;在系数矩阵内依次填入未知数系数;在常数矩阵内依次键入常数项,即可。
3、以递推公式和特征方程-数列(三)中举例8中的方程组为例。
需解方程组:
有XYZUVW,6个未知数,n=6。系数矩阵与常数矩阵为:
填入多元一次方程组计算器,会自动获得方程组的解。注意:矩阵中超出6*6的数据忽略,不必理会;逆矩阵在这里只起到中间量作用,不需 *** 作。
于是方程组的解为:
逆矩阵中返回错误值 #VALUE! 时,进行检查,系数矩阵中有空单元格或填入了非数值。
逆矩阵中返回错误值 #NUM! 时,说明系数矩阵为不可逆矩阵,方程组不可解。
五、本期涉及到的内容有:
线性方程组矩阵矩阵方程MINVERSE函数MMULT函数ROW函数COLUMN函数POWER函数OFFSET函数
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)