设为主页
加入收藏夹
   教师中心      资源下载      最新文章      高中数学B版论坛
当前位置:首页>>高中数学B版>>教师中心>>教学研究
 

 

21世纪是数字时代与信息的时代,信息技术的基础是计算机,而计算机的重要基础又是算法,算法是数学的重要的组成部分,因而将算法放进中学的课程来学习是时代对数学的呼唤,是数学教育改革中充满挑战、充满活力的新内容,它将给我们学习数学、应用数学开辟广阔的天地。

 

一般地,我们把进行某一工作的方法和步骤称为算法。数学里,我们研究的算法是用计算机来解决问题的程序或步骤,即用计算机的程序表示,可在计算机上执行的算法。

 

Scilab是一个科学计算软件,它主要有两个功能:数值计算和计算结果可视化。在高中数学人教B版的教材有关“算法初步”部分使用Scilab语言来体现算法。这种语言简单直观且容易学习。比C语言及其它语言中要求对变量类型加以定义、主函数的调用以及运行环境等都方便许多。下面我就对Scilab在“算法初步”教学中的应用谈一些自己的经验和体会。

 

  1.软件的安装、汉化和运行:

 

Scilab的不同版本,在互联网上可以找到,如(图1)所示:最后一个为汉化软件。本文以Scilab-4.0版本为例进行介绍。先安装Scilab软件程序,然后运行汉化软件chinese即可。

 

安装完毕后,Scilab不需要在系统中设置任何选项即可运行,因此即使重新安装系统之后也不用重新安装。双击桌面图标“scilab-4.0即可打开如(图2)所示程序。也可以双击"C:\Program Files\scilab-4.0\bin\WScilex.exe"中的“WScilex.exe”图标,特别是电脑系统重新安装后,可按此法打开。

 

 

(图1

 

 

 

(图2                                   (图3

 

  2.Scilab软件字号的调整:

 

在利用Scilab软件进行多媒体演示时,如果字号太小,在教室后面的同学就很难看清楚屏幕上的文字,这样会大大降低多媒体演示的效果。我们可以单击“参数选择/选择字体”打开字体调节对话框,选择字体、字形、大小。

 

  3.运用编辑器编写程序实例:

 

  3.1求一元二次方程的根

 

运行Scilab软件后单击Scilab主程序窗口(图2)菜单栏中的“编辑器”,打开如(图3)所示的编辑器并输入求解一元二次方程的如图(4)所示:

 

a=input("a=");

 

b=input("b=");

 

c=input("c=");

 

d=b*b-4*a*c;

 

if d<0

 

   disp("no solution");

 

else

 

   t=sqrt(d);

 

   x1=(-b+t)/(2*a);

 

   x2=(-b+t)/(2*a);

 

   print(%io(2),x2,x1);

 

end  

 

         图(4

 

 

 

 

 

 

 

clear           //清除已有变量//

 

n=input('n=');    //数据组数//

 

x=zeros(1,n);    //生成1n列全0矩阵并用变量x存储//

 

y=zeros(1,n);

 

sx=0;sx2=0;sy=0;sxy=0;

 

for  i=1:1:n

 

x(i)=input('x(i)='); //通过nfor循环分别对矩阵x,y中的元素赋值//

 

y(i)=input('y(i)=');

 

sx=sx+x(i);

 

sx2=sx2+x(i)*x(i);

 

sy=sy+y(i);

 

sxy=sxy+x(i)*y(i);

 

end

 

sx=sx/n         //计算x的平均数//

 

sy=sy/n         //计算y的平均数//

 

b=(sxy-n*sx*sy)/(sx2-n*sx*sx)//

 

a=sy-b*sx

 

                          图(5

 

 

 
 


 

编辑完成后单击编辑器中的“File/Save as…”存盘,文件名为“yiyuanercifangcheng.sce”。这里需要说明一点,在Scilab3.1以下版本程序中该文件需要存放在纯英文路径下才能运行,在4.0以上版本则无此要求。运行时单击编辑器(图3)中“Execute”中的“Load into Scilab”运行所编写的程序,也可以用快捷组合键“Ctrl+l”运行所编写的程序,然后回到Scilab主程序窗口(图2)中。如果输入a=1b=2c=3则返回“no solution”,再次运行程序,如果输入a=2b=3c=1则返回“x1= -0.5,x2= -1。通过实例可以发现利用Scilab软件中的编辑器给我们的教学带来很大的方便,比在Scilab主程序窗口中直接输入程序进行演示要方便,且编辑器内的程序可以调试和存盘,极大地方便了我们的使用和教学。

 

  3.2利用最小二乘法求回归直线方程的系数a,b

 

在我们学完了用Scilab语言表示“秦九韶方法求多项式的值”的算法后,在学习“统计”一章中,利用最小二乘法求回归系数的公式:

 

  可编写如图(5)所示程序,为了更好的理解该程序,下面对有关矩阵的操作出简要说明:

 

  zeros(m,n):生成一个大小为mn列的全0矩阵

 

  例如我们在Scilab主程序窗口中:

 

  输入“x=zeros(2,3)

 

  结果为:x  =

 

           0.    0.    0.

 

           0.    0.    0.

 

  生成一个大小为23列的全0矩阵;

 

  再输入“x (1,2)=2 ;x(2,1)=5

 

  结果为:

 

  x  =

 

     0.    2.    0.

 

     5.    0.    0.

 

  对矩阵x中的元素进行赋值;

 

  再输入“x (1,2),x(2,1)

 

  结果为:

 

  ans  =

 

       2.

 

  ans  =

 

   5.

 

  读取矩阵x中的元素的值;

 

  再输入“x (1,2)+x(2,1)

 

  结果为:

 

  ans  =

 

   7.  

 

  对矩阵x中的元素的值求和;

 

这样就不难理解教参中用Scilab语言表示“秦九韶方法求多项式的值”的算法的程序了。

 

通过利用最小二乘法求直线方程的系数a,b的这一程序,既加深了学生对学习算法的必要性和实用性的理解,又增强了他们自主学习的兴趣,引导他们去探索。在教材中只提到了用函数型计算器和工作表软件求回归直线方程,而没有提示学生利用求直线方程的系数a,b的公式设计算法程序,这里可以作为补充。

 

  4.对输出命令printdisp的进一步介绍:

 

  4.1.若我们在Scilab主程序窗口中输入如下内容:

 

  -->a=1;b=2;print(%io(2),a,b)

 

  结果为:

 

  b  =

 

         2.

 

  a  =

 

  1.

 

此为课本中的输入方式,输出时先输出b后输出a

 

  4.2.若我们在Scilab主程序窗口中输入如下内容:

 

  -->a=1;b=2;print(%io(2),"a",’b’)

 

  结果为:

 

   b

 

   a

 

这说明若print(%io(2),a,b)改为print(%io(2),"a",’b’)则输出的为a,b为字符,同时还可以看出" "’ ’有着相同的作用,在Scilab语言不加以区分。

 

  4.3.若我们在Scilab主程序窗口中输入如下内容:

 

   -->a=1;b=2;disp(a,b)

 

 结果为:

 

   2.

 

   1.

 

输出时先输出b后输出a

 

  4.4.若我们在Scilab主程序窗口中输入如下内容:

 

  -->a=1;b=2;a,b

 

  结果为:

 

   a  =

 

          1.

 

   b  =

 

          2.

 

输出时先输出a后输出b

 

通过对比4.14.34.4的结果,我们不难发现三者的区别。

 

  4.5.若我们在Scilab主程序窗口中输入如下内容:

 

   -->a=1;b=2;disp("a","b")

 

  结果为:

 

   b

 

   a

 

输出时先输出b后输出a

 

  4.6.若我们在Scilab主程序窗口中输入如下内容:

 

  -->a=1;b=2;disp a b

 

  结果为:

 

   b

 

   a

 

通过对比4.24.54.6的结果,我们会发现三者具有相同的功用。

 

  4.7.若我们在Scilab主程序窗口中输入如下内容:

 

   -->a=1,b=2

 

   结果为:

 

    a  =

 

           1.

 

    b  =

 

    2.

 

通过对比4.44.7的结果,我们发现当“;”用“,”替换后,会立即返回结果。

 

  5.取整命令floor和求余命令modulo

 

  5.1 floor命令

 

格式为:floora

 

它和我们在必修Ⅰ中所学的“在数轴上向左取整 [ ]”意义相同。

 

例如我们在Scilab主程序窗口中输入如下内容:

 

  -->floor(2.1),floor(-2.1)

 

     ans  =

 

        2.

 

     ans  =

 

             - 3. 

 

     5.2 modulo命令

 

格式为:moduloa,b

 

作用为求a除以b的余数。

 

例如我们在Scilab主程序窗口中输入如下内容:

 

   -->modulo(5,4)

 

   结果为:

 

    ans  =

 

         1.

 

   若输入:

 

    -->modulo(4,5)

 

   结果为:

 

   ans  =

 

        4.

 

此命令在解决展转相除法(欧几里得算法)求两个正整数最大公约数、韩信点兵和判断闰年等问题中经常用到

 

  6. int命令和rand命令:

 

  6.1 int 命令

 

   格式为:inta

 

   作用为向0方向取整。

 

   例如我们在Scilab主程序窗口中输入如下内容:

 

      -->int(2.1),int(-2.1)

 

      ans  =

 

             2.

 

    ans  =

 

            - 2.

 

    注意floor命令与int命令的区别与联系,不要把二者混淆。

 

  6.2 rand 命令
格式为:rand( )

 

作用为产生开区间(0,1) 上的随机数。

 

变换1rand( ) *(b-a)+a

 

作用为产生开区间(a,b)上的随机数。

 

变换2floor(rand( ) *(b-a+1)+a)

 

作用为产生闭区间[a,b]上的随机整数。

 

若我们在Scilab主程序窗口中输入“for i=1:1:100,a=floor(rand()*6+1),end”,则返回[1,6]上的100个整数,这样就可以模拟100次掷骰子实验。

 

新一轮课程改革就是要力图改变把课程功能从单一地传授知识,转变成全方位地培养人。新课程在内容上是强调精选终身学习必备的基础知识和技能,强调教育内容应与学生生活以及现代社会和科技发展的联系;在学习方式上强调培养学生主动参与、探究和动手的能力,搜集和处理信息的能力,获取新知识的能力,分析和解决问题的能力以及交流与合作的能力。

 

利用学生对计算机特别感兴趣这个特点,引导他们利用计算机完成算法初步一章的学习,对算法思想由感性认识上升到理性认识。著名计算机科学家沃思(Nikiklaus Wirth)提出一个公式:

 

数据结构+算法=程序

 

算法是程序的灵魂。这充分体现了算法在未来科学技术发展中的地位和作用。

 

Scilab软件与算法教学相结合,提供了一个用计算机语言体现算法思想的良好平台,这样不但能激发他们的学习和探索的积极性,也培养了他们主动参与、探究和动手的能力,搜集和处理信息的能力,获取新知识的能力,分析和解决问题的能力以及交流与合作的能力,而且也有效地完成了教学任务。

 

注:1scilab下载网址http://www.scilab.org/

 

    2:汉化文件下载网址http://maxianling.gbaopan.com/files/8eed8d2907fc449c98d53bca94e2fd05.gbp

 

3scilab-3.1.1scilab-4.1也可以汉化。

 
【上一篇】
【下一篇】