您好,欢迎访问三七文档
行列式计算器班级:九九数本四姓名:梁海专业:数学与数学应用指导老师:周新莲摘要本文把行列式的计算公式与计算机软件FlashMx结合,说明怎样制作三阶、四阶、六阶行列式计算器,并举例说明其应用。关键词三阶行列式四阶行列式六阶行列式引言在复习高等代数时,我常常为纷烦复杂的行列式计算而感到头痛,就算费尽心机计算得出结果,也不敢确定结果是不是正确的。于是我就想:能不能利用计算机来计算呢?利用计算机计算,当然不是简单地用计算器来加减乘除,而是要利用软件做出一个真正的行列式计算器:按照行列式的行和列的位置填入数字,就能得出行列式的结果。如果这样可以的话就能大大的提高我们的学习效率。用编程语言来编一个软件,需要有一定的汇编语言基础,而学习一门编程语言并不是一件容易的事,况且用编程语言做出来的软件一般会比较大。通过比较我选用了FlashMx,是因为Flash功能强大、操作方便灵活,并且创建的矢量图形及生成动画文件尺寸小,交互性强,兼容性好,便于网络传输。我们通常计算的行列式有二阶、三阶、四阶的,再高阶的话一般都是利用定理把它降阶,降到我们能计算的范围内。二阶的行列式可以口算出来,所以我做一个适用于三阶、四阶、六阶的行列式计算器。理论基础n阶行列式的表达式:[1]a11a12……a1na21a22……a2n〓)...(21njjj)...(21)1(njjjnnjjjaaa...2121………………………………an1an2……ann制作过程1、启动FlashMx,单击File/New(新文件)命令,新建一个动画文件,设置舞台大小为“550*400”,设置背景颜色为灰色。2、在第一幅Frame(帧)写上标题“行列式的计算”3、单击Insert/Newsymbol(新组件)命令,命名为3阶,在Behavior(表现情况)选项中选Button(按钮)。用几何画板画一个正三角形,颜色设为青色,粘贴到3阶组件的中间,按F6,把三角形的颜色改为蓝色,再按F6,把三角形的颜色改为紫色,再按F6。完成了3阶的按钮。4、用同样的方法,再做四阶、六阶、计算、返回的按钮。5、把三、四阶、六阶的按钮拖到第一幅Frame(帧)中,然后分别在按钮上面写上三阶行列式、四阶行列式、六阶行列式。如下图所示6、单击InsertLayer(插入图层)按钮,新建图层2。选中图层2的第1帧,在Actions-Frame(程序编制)面板中输入代码:“stop()”。运行时,在这幅帧停止下来,让我们可以选择计算哪类行列式。7、在第一图层单击Insert/Blankkeyframe(插入空白帧),在第二帧插入了空白帧,在舞台的上方写上标题“三阶行列式的计算”。8、用rectangle(矩形)工具画一个正方形,设置背景颜色为蓝色。复制正方形,粘贴八次,共有九个小正方形,排成3*3行列式的形式。用Line(直线)工具画两条竖直线围着九个正方形,在行列式的右边画一个等号和一个略大的矩形。这就画出了三阶行列式的形式。9、选择Text(文本)工具,在舞台中拖出一个比图层1中小正方形略小的文本框,在Properties(属性)面板中的TextType(文本类型)下拉列表中选择InputText(输入文本)选项,在linetype中选择Multiline(多行显示),在Var文本框中设置该输入文本框的名称为“te11”,并置于第一个正方形内部。如下图所示:10、将该输入文本框复制下来,粘贴到其它小正方形中。11、选中第二个输入文本框,在Properties面板中的Var文本框中将其名称改为“te12”,按顺序地将第三至第九个输入文本框的Var文本框改为“te13”、“te21”......“te33”。12、选择Text(文本)工具,在右边的矩形中拖出一个比图层1中矩形略小的文本框,在Properties面板中的TextType下拉列表中选择Dynamic(动态)选项,将其文本类型改为动态文本框,在Var文本框中设置该输入文本框的名称为“text10”。13、选中图层2的第2帧,在Actions-Frame面板中输入代码:stop()。运行时,在这幅帧停止下来,让我们填入数字。14、把计算、返回的按钮拖入来,在计算按钮的Actions-Frame面板中输入下列代码:on(release){gotoAndStop(3);//运行到第三帧,并停止下来}在返回的按钮的Actions-Frame面板中输入下列代码:on(release){gotoAndStop(1);//返回到第一帧,并停止下来}15、选中图层2的第3帧,在Actions-Frame面板中输入下列代码用于定义文本框和计算公式:i11=number(te11);//定义te11的数字为i11i12=number(te12);i13=number(te13);i21=number(te21);i22=number(te22);i23=number(te23);i31=number(te31);i32=number(te32);i33=number(te33);text10=(i11)*(i22)*(i33)+(i21)*(i32)*(i13)+(i31)*(i12)*(i23)-(i13)*(i22)*(i31)-(i23)*(a32)*(i11)-(i33)*(i12)*(i21);//按三阶展开公式计算gotoAndPlay(2);//返回第二帧,以便下一次计算16、按住Shift键,选中两个图层的第3帧,按F5键插入关键帧。17、在第一图层第1帧的“三阶行列式”的按钮的Actions-Frame面板中输入下列代码:“gotoAndPlay(2);//去到第二帧,并运行它”使按钮与计算器连接起来,这样三阶行列式完成了。四阶行列式是类似地制作:在上面的第八步,把九个小正方形改为十六个。第九步中的Var文本框中命名改为t11、t12……免得与三阶的命名重复,输入时出现混乱。在十三步中,把Actions-Frame代码改为:a11=number(t11);//定义t11的数字为a11a12=number(t12);a13=number(t13);a14=number(t14);a21=number(t21);a22=number(t22);a23=number(t23);a24=number(t24);a31=number(t31);a32=number(t32);a33=number(t33);a34=number(t34);a41=number(t41);a42=number(t42);a43=number(t43);a44=number(t44);a55=(a11)*(a22)*(a33)*(a44)+(a11)*(a32)*(a43)*(a24)+(a11)*(a23)*(a34)*(a42)-(a11)*(a42)*(a33)*(a24)-(a11)*(a32)*(a23)*(a44)-(a11)*(a22)*(a43)*(a34)-(a12)*(a21)*(a33)*(a44)-(a12)*(a31)*(a43)*(a24)-(a12)*(a41)*(a23)*(a34)+(a12)*(a41)*(a33)*(a24)+(a12)*(a31)*(a23)*(a44)+(a12)*(a21)*(a43)*(a34)+(a13)*(a21)*(a32)*(a44)+(a13)*(a31)*(a42)*(a24)+(a13)*(a22)*(a34)*(a41-(a13)*(a41)*(a32)*(a24)-(a13)*(a31)*(a22)*(a44)-(a13)*(a42)*(a34)*(a21)-(a14)*(a21)*(a32)*(a43)-(a14)*(a31)*(a42)*(a23)-(a14)*(a22)*(a33)*(a41)+(a14)*(a41)*(a32)*(a23)+(a14)*(a31)*(a22)*(a43)+(a14)*(a21)*(a42)*(a33);//按四阶展开公式计算gotoAndPlay(5);//返回第五帧,以便下一次计算六阶行列式是类似地制作:把Actions-Frame代码改为:a=newArray(36);b=newArray(6);//定义两个数组a[0]=text11;a[1]=text12;a[2]=text13;a[3]=text14;a[4]=text15;a[5]=text16;a[6]=text21;a[7]=text22;a[8]=text23;a[9]=text24;a[10]=text25;a[11]=text26;a[12]=text31;a[13]=text32;a[14]=text33;a[15]=text34;a[16]=text35;a[17]=text36;a[18]=text41;a[19]=text42;a[20]=text43;a[21]=text44;a[22]=text45;a[23]=text46;a[24]=text51;a[25]=text52;a[26]=text53;a[27]=text54;a[28]=text55;a[29]=text56;a[30]=text61;a[31]=text62;a[32]=text63;a[33]=text64;a[34]=text65;a[35]=text66;//为数组a赋值//以下四行为设置变量初始值tp=1;y=0;p=1;t=0;y1=0;y2=0;//以下为计算)...(21njjj)...(21)1(njjjnnjjjaaa...2121的值for(a1=0;a16;a1++){for(b2=0;b26;b2++){for(c3=0;c36;c3++){for(d4=0;d46;d4++){for(e5=0;e56;e5++){for(f6=0;f66;f6++)if((a1!=b2)&&(a1!=c3)&&(a1!=d4)&&(a1!=e5)&&(a1!=f6)&&(b2!=c3)&&(b2!=d4)&&(b2!=e5)&&(b2!=f6)&&(c3!=d4)&&(c3!=e5)&&(c3!=f6)&&(d4!=e5)&&(d4!=f6)&&(e5!=f6)){b[0]=a1;b[1]=b2;b[2]=c3;b[3]=d4;b[4]=e5;b[5]=f6;ty=a[a1]*a[6+b2]*a[12+c3]*a[18+d4]*a[24+e5]*a[30+f6];for(p=1;p6;p++){for(t=0;tp;t++)if(b[t]b[p])tp*=-1;}y+=ty*tp;if(tp==1)y1+=ty;if(tp==-1)y2-=ty;tp=1;}}}}}}gotoAndPlay(8);//返回第五帧,以便下一次计算六阶行列式把行列式的通式和类似C语言的编程语言结合,先定义数组,然后分析逆序的奇偶性定义各项的正负号,再求和。用这种方法可以推广到n阶行列式的计算。因为有很多六阶行列式的结果为0,所以我们定义正数项和和负数项和出来,方便验证结果。为什么三阶和四阶行列式的计算器不用同一个通式呢?因为用通式计算的话,需要的计算量很大,所以计算的时间也比较长。例如:计算一个六阶的行列式需要10多秒,因为Flash毕竟不是以编程为主的软件,如果用C语言的话的,不用一秒就能得到答案了,但C语言没有Flash做出来的直观。应用打开行列式计算器,有三阶、四阶、六阶三个行列式的选择按钮,计算哪个就选择哪个按钮,例如要计算一个四阶行列式,就按四阶行列式的按钮,进入到四阶行列式的计算器里面,在行列式中填入数字,填入数字后按计算按钮就会显示结果。不填的当作“0”计算。我们来计算高等代数课本的130页的例4:[2]1、打开行列式计算器,选择四阶。2、在行列式计算器中,填入例4中行列式的数字,一按计算按钮就显示结果:40。如下图所示:参考文献[1]《高等代数讲义》第11页丘维
本文标题:行列式计算器03
链接地址:https://www.777doc.com/doc-2030031 .html