中国学术文献网络出版总库

刊名: 教育研究
       Educational Research
主办:  中国教育科学研究院
周期:  月刊
出版地:北京市
语种:  中文;
开本:  16开
ISSN: 1002-5731
CN:   11-1281/G4
邮发代号: 2-277
投稿邮箱:jyyj79@126.com

历史沿革:
现用刊名:教育研究
创刊时间:1979

该刊被以下数据库收录:
中国人文社会科学引文数据库(CHSSCD—2004)
核心期刊:
中文核心期刊(2008)
中文核心期刊(2004)
中文核心期刊(2000)
中文核心期刊(1996)
中文核心期刊(1992)


MATLAB在多项式运算及曲线图中的应用

【作者】 张彩雁

【机构】 贵州省六盘水市盘州市第十一中学

【摘要】
【关键词】
【正文】  【摘 要】 数值计算在科学研究工程应用中有非常广泛的应用。许多数值计算问题,用其他程序设计语言求解非常麻烦,并且需要具备专业的数学知识一定的程序设计技能,而用MATLAB编程,往往只要少数几个语句即可完成求解问题。强大的绘图功能是MATLAB的特点之一,它提供了一系列的绘图函数,只需给出一些基本参数就能得到所需图形。MATLAB既能进行数值求解,又能绘制有关曲线,非常方便实用。另外,利用其可减少工作量,节约时间,加深理解,同样可以培养应用能力。MATLAB成为许多学科的解题工具,将MATLAB融入其它课程的学习中,可以大大提高运算效率和准确性。随着计算机的普及和国民素质的提高,科学计算将会更加的普及。MATLAB在矩阵及数值计算、多项式及线性代数、符号数学的基本方法等方面都有较好的应用。本文概括地介绍了MATLAB的主要功能和使用方法。MATLAB在多项式运算上的应,MATLAB在绘图方面的应用。
  【关键词】 多项式运算;曲线图形;MATLAB编程

  MATLAB是集数值运算,符号运算及图形处理等强大功能于一体的科学计算语言。为一个强大的科学计算平台,它几乎能够满足所有的计算需求。当然,MATLAB本生就是一个功能强大的数据可视化工具,可以通过各种形式显示分析的数据。另外,数学中的绘制函数图象、绘制立体图象的交线、求多项式的根的问题,这些问题如果依靠我们人工进行操作,则需要很多的时间和精力,当我们掌握了基本原理后,借助MATLAB进行解决则会大大提高效率和精确度。MATLAB具有编程效率高,使用方便等特点,MATLAB这种强大的数值计算、绘图能力,使其成为在科学计算方面的首先解题工具。
  问题1、已知多项式x^4-2*x+3,分别取x=2和一个3*3矩阵为自变量计算该多项式的值。
  分析:MATLAB提供了两种求多项式值得函数:polyval,polyvalm他们的输入参数均为多项式系数向量p和自变量x。其中函数用来求代数多项式的值,其调用格式为
  Y=polyval(P,x)
  若x为一数值,则求多项式在该点的值;若x为向量或矩阵,则对向量或矩阵中的每个元素求其多项式的值。现在我们用MATLAB语言来对此例题做以下解析:
  MATLAB编程:
  A=[1,0,0,-2,3];             %4次多项式系数
  Y=poly2sym(A);                %表示多项式函数
  x=1.2;                         %取自变量为一数值
  y1=polyval(A,x)           %分别计算矩阵X中各元素为自变量得多项式之值
  x=[-1,3,5.1;2,-1.8,1.6;6,9,30]         %给出一个矩阵x
  y2=polyval(A,x)           %分别计算矩阵x中各元素为自变量的多项式之值
  运行结果如下:
  y1 =
  2.6736
  x =
  -1.0000    3.0000    5.1000
  2.0000   -1.8000    1.6000
  6.0000    9.0000   30.0000
  y2 =
  1.0e+05 *
  0.0001    0.0008    0.0067
  0.0001    0.0002    0.0001
  0.0129    0.0655    8.0994
  这种求根的方法明显比用人工的方法要快捷和方便,且不会出现差错。因此,在计算机快速发展的背景下,我们要充分利用合理的资源来解决问题,提高计算效率。
  问题2、求多项式p(x)=x^3-2*x+1=0,q(x)=x^3+2*x+3=0的根。
  分析:高次多项式求根问题,以及有几个根问题计算起来相当困难,但MATLAB提供了roots函数用于求多项式的全部根,很简单,很实用。我们用MATLAB语言来做例题:
  MATLAB编程:
  p=[1,0,-2,1];                     %输入多项式系数               
  q=[1,0,2,3];                     %输入多项式系数    
  X1=roots(p),                    %求多项式的值
  X2=roots(q)
  %求多项式的值
  运行结果如下:
  X1 =
  -1.6180
  1.0000
  0.6180
  X2 =
  0.5000 + 1.6583i
  0.5000 - 1.6583i
  -1.0000 + 0.0000i    
  问题3、 设p(x)=6*x^5-4*x^4+7*x^3-2*x^2+3*x+6 ,q(x)=5*x^2+8*x-1
  (1)求 f(x)+g(x),f(x)-g(x)。
  (2)求f(x)*g(x),f(x)/g(x)。
  MATLAB没有提供专门进行多项式加减运算的函数,事实上,多项式的加减运算就是其所对应的系数加减运算。对于次数相同的两个多项式,可直接对多项式系数向量进行加减运算。如果多项式的次数不同,则应把低次的多项式系数不足的高次的项用零补足使同式中的个多项式具有相同的次数。
  MATLAB程序如下:
  p=[6,-4,7,-2,3,6];                %输入多项式p(x)各项的系数
  q=[5,8,-1];                          %输入多项式q(x)各项的系数
  q1=[0,0,0,q];                                %定义一个函数
  p+q1                                          %求p(x)+q(x)
  p-q1                                          %求p(x)-q(x)
  conv(p,q)                                    %求p(x)*q(x)
  [f,g]=deconv(p,q)                 %求p(x)/q(x),商式送f,余式送g
  运行结果如下:
  ans =
  6    -4     7     3    11     5
  ans =
  6    -4     7    -7    -5     7
  ans =
  30    28    -3    50    -8    56    45    -6
  f =
  1.2000   -2.7200    5.9920  -10.5312
  g =
  0         0         0         0   93.2416   -4.531
  显而易见,用求多项式的值的问题非常简单。
  问题4、作出函数y=sinx,y=cosx,y=sin2x,x[0,2]的图像
  MATLAB编程;
  x1=0:0.1:2*pi;
  y1=sin(x1);
  x2=linspace(0,2*pi,50);
  y2=cos(x2);
  subplot(1,2,1)
  plot(x1,y1,'ro',x2,y2,'b+');
  subplot(1,2,2)
  fun='sin(2*x)';
  plot(x1,sin(2*x1))
  运行结果如下:














  问题5 、作出参数方程x=sint,y=cost,与x=2sin2t,y=2cos3t,t[0,2]的图像;
  MATLAB编程:
  t=0:0.1:2*pi;
  x1=sin(t);
  y1=cos(t);
  x2=2*sin(2*t);
  y2=2*cos(3*t);
  plot(x1,y1,'m*',x2,y2,'g-');
  运行结果如下:














  问题6、在一个图形窗口中以子图形式同时绘制正弦、余弦、正切、余切曲线。
  MATLAB编程:
  x=linspace(0,2*pi,60);                              %控制X的范围
  y=sin(x);                                              %输出正弦函数
  z=cos(x);                                              %输出余弦函数
  t=sin(x)./(cos(x)+eps);                             %输出正切函数
  ct=cos(x)./(sin(x)+eps);                            %输出余切函数
  subplot(2,2,1);                              %选择2*2个区中的1号区
  stairs(x,y);                                          %绘制阶梯图
  title('sin(x)-1');                                   %显示坐标
  axis([0,2*pi,-1,1]);                     %控制x,y轴的数值范围
  subplot(2,1,2);                          %选择2*1个区中的2号区
  stem(x,y);                                            %绘制杆图
  title('sin(x)-2');                                  %显示坐标
  axis([0,2*pi,-1,1]);                   %控制x,y轴的数值范围
  subplot(4,4,3);                           %选择4*4个区中的3号区
  plot(x,y);                                          %将点描在坐标上
  title('sin(x)');                                   %显示坐标
  axis([0,2*pi,-1,1]);                   %控制x,y轴的数值范围
  subplot(4,4,4);                        %选择4*4个区中的4号区
  plot(x,z);                                          %将点描在坐标上
  title('cos(x)');                                   %显示坐标
  axis([0,2*pi,-1,1]);                    %控制x,y轴的数值范围
  subplot(4,4,7);                         %选择4*4个区中的7号区
  plot(x,t);                                          %将点描在坐标上
  title('tangent(x)');                              %显示坐标
  axis([0,2*pi,-40,40]);               %控制x,y轴的数值范围
  subplot(4,4,8);                       %选择4*4个区中的8号区
  plot(x,ct);                                         %将点描在坐标上
  title('cotangeng(x)');                            %显示坐标
  axis([0,2*pi,-40,40]);                 %控制x,y轴的数值范围
  运行结果如图所示














  问题7、用图形表示连续调制波形y=sin(t)sin(9t),绘制点图、折线、曲线图。
  MATLAB编程:
  t1=(0:11)/11*pi;                                 %定义一组自变量
  y1=sin(t1).*sin(9*t1);                          %数组的乘法
  t2=(0:100)/100*pi;                                %定义一组自变量
  y2=sin(t2).*sin(9*t2);                           %数组的乘法           
  subplot(2,2,1);                    %将窗口分为四个,当前为第一个
  plot(t1,y1,'r.');                                 %将点描在坐标上
  axis([0,pi,-1,1]);                       %控制x,y轴的数值范围
  title('子图(1)');                                %显示坐标
  subplot(2,2,2);              %将窗口分为四个,当前为第二个
  plot(t2,y2,'r.');                                 %将点描在坐标上
  axis([0,pi,-1,1]);                   %控制x,y轴的数值范围
  title('子图(2)');                                %显示坐标
  subplot(2,2,3);                    %将窗口分为四个,当前为第三个
  plot(t1,y1,t1,y1,'r.');                          %点少时显示的是折线
  axis([0,pi,-1,1]);                   %控制x,y轴的数值范围
  title('子图(3)');                                %显示坐标
  subplot(2,2,4);            %将窗口分为四个,当前为第四个
  plot(t2,y2);                                      %点多时才显示曲线
  axis([0,pi,-1,1]);                               %控制x,y轴的数值范围
  title('子图(4)');                               %显示坐标
  运行结果如图所示:














  从以上利用MATLAB语言对多项式的计算和绘制曲线图形的分析我们不难的出以下结论:
  MATLAB把数值运算与绘图功能充分的应用,不但可以普及计算机额的利用,充分利用资源,还可以极大提高学习者的兴趣,为其他学科的学习提供了较好计算机工具MATLAB的语法规则简单,更加贴近人的思维方式。
  在MATLAB中有很多很方便的函数帮助我们处理数据,我们要时常注意相关的函数,在以后的数据处理中就显得很轻松了。MATLAB软件-绘图,不管是二维图形还是三维图形。只要你想要能编写出函数式,在短短的几秒钟之内,它会呈现在你面前。另外就是图形的直观性,在绘编图形时,加上一点修饰,他会自动标注你想要图形的影隐部分,MATLAB具有二维和三维绘图功能,使用方法十分简单。而且可以根据需要,坐标图上加标题。也可以在同一张图上绘制不同的函数曲线。 MATLAB语言有强大的数据处理功能,处理速度快,精度高,还有许多工具包。MATLAB 语言 不同于其它计算机语言,它是一种解释语言,即解释一条就执行一条,而且严格区分大小写,所以,在写程序时要小心,这使我们在编写程序的过程中时对 MATLAB语言有了更深层次的理解。
  通过完成本论文,使我不仅进一步熟悉了MATLAB的基本操作和相关指令,还我将学到的知识用到了所学的专业中,通过计算机来解决数学中的相关问题使得必须用繁琐的计算才能完成的问题,在电脑上也能轻松完成。这次课程设计加深了我对数学和MATLAB的理解,激发了强烈的兴趣。我了解了该软件的基本功能,也知道了该软件在我们生活中的重要地位。随着社会的不断发展,科技的不断进步,计算机的普及,它也被应用在越来越多的方面。
  基础知识与实际操作相结合吧基本知识看过后,就需要找一个实际的程序来下,不要等所的知识都学好之后再去编程,在编程的过程中学习。而且我觉得最重要的是要学好英语。软件中的东西几乎都是英语,要学好,必须学好英语。我相信学生也会喜欢上这么多姿多彩的数学课堂。
  参考文献:
  [1]韩明,王家宝,李林.数学实验(MATLAB版)[M].上海:同济大学出版社,2012.
  [2]同济大学应用数学系.高等数学(第五版)[M].北京:高等教育出版社,2002.