文档库 最新最全的文档下载
当前位置:文档库 › MATLAB 数据分析与多项式计算

MATLAB 数据分析与多项式计算

MATLAB 数据分析与多项式计算
MATLAB 数据分析与多项式计算

中南林业科技大学

MATLAB程序设计论文学生姓名:曾圣华

学院:理学院

专业年级:2012级信息与计算科学

课程:MATLAB程序设计教程

设计题目:MATLAB矩阵及其基本运算

指导教师:孙玉荣

2014年6月23日

MATLAB 数据分析与多项式计算

摘要

在科学计算和工程应用中,经常会遇到数据分析与多项式计算的问题。在MATLAB中,由于对数据的操作是基于矩阵的,可以让矩阵的每列或每行代表不同的被测变量,相应的行或列代表被测向量的观测值,这样就很容易通过对矩阵元素的访问进行数据的统计分析。

关于多项式,它是一种基本的数据分析工具,也是一种简单的函数,很多复杂的函数都可以用多项式逼近。

关键词

数据统计处理、数据插值与拟合及多项式计算。

Data analysis and the polynomial calculation Summary

In scientific computing and engineering applications, data analysis and the polynomial computing problems often, In MATLAB, as to the operation of the data is based on the matrix, can let each column of the matrix or each represent different measured variables, the corresponding row or column represents the amount of direction finding is the observed value, so it is easy to through the statistical analysis of matrix element access to data.

About polynomial, it is a kind of basic data analysis tools, also is a kind of simple function, many complicated functions can use polynomial approximation.

Keyword

MATLAB data processing, data interpolation and polynomial fitting, and the polynomial calculation

一、数据统计处理

数据统计问题一般包括求矩阵最大、最小元素,求矩阵平均值和中值,矩阵元素求和、求积,矩阵元素累加和与累乘积,求标准方差、相关系数、元素排序等。

它们都有相应的调用格式:

①求矩阵最大、最小元素的调用格式

max(A):返回一个行向量,Y向量的第i个元素是A矩阵的第i列上的最大元素。

[Y,U]=max(A):返回两个行向量,Y向量记录A的每列的最大元素,U向量记录每列最大元素的行号。

max(A,[ ],dim):dim取1或2。dim取1时,该函数和max(A)完全相同。Dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大元素。

U=max(A,B):A、B是两个同型的向量或矩阵。结果U是与A、B同型的向量或矩阵,U的每个元素等于A、B对应元素的较大者。

U=max(A,n):n是一个标量。结果U是与A同型的向量或矩阵,U的每个元素等于A对应元素和max完全相同。

min函数的用法和max完全相同。

②求矩阵平均值和中值的调用格式

求矩阵和向量元素的平均值的函数是mean,求中值的函数是median。设X 是一个向量,A是一个矩阵,两个函数的用法如下:

mean(X):返回向量X的算术平均值。

median(X):返回向量X的中值。

mean(A):返回一个行向量,其第i个元素是A的第i列的算数平均值。

medianA):返回一个行向量,其第i个元素是A的第i列的中值。

mean(A,dim):当dim为1时,该函数等同于mean(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的算术平均值。

median A,dim):当dim为1时,该函数等同于median(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的中值。

③矩阵元素求和、求积的调用格式

矩阵和向量求和与求积的基本函数是sum和prod,其使用方法类似。设X 是一个向量,A是一个矩阵,函数的调用格式为:

sum(X):返回向量X各元素的和。

prod(X):返回向量X各元素的乘积。

sum(A):返回一个行向量,其第i个元素是A的第i列的元素和。

prod (A ):返回一个行向量,其第i 个元素是A 的第i 列的元素乘积。

sum (A ,dim ):当dim 为1时,该函数等同于sum (A );当dim 为2时,返回一个列向量,其第i 个元素是A 的第i 行元素的各元素和。

prod (A ,dim ):当dim 为1时,该函数等同于prod (A );当dim 为2时,返回一个列向量,其第i 个元素是A 的第i 行元素的各元素乘积。

④求矩阵元素累加和与累乘积的调用格式

在MATLAB 中,使用cumsum 和cumprod 函数能方便地求的向量和矩阵的累加和与累乘积向量,函数的调用格式为:

cumsum (X ):返回向量X 累加和向量。

cumprod (X ):返回向量X 累乘积向量。

cumsum (A );返回一个矩阵,其第i 列是A 的第i 列的累加和向量。 cumprod (A );返回一个矩阵,其第i 列是A 的第i 列的累乘积向量。 cumsum (A ,dim );当dim 为1时,该函数等同于cumsum (A );当dim 为2时,返回一个矩阵,其第i 行是A 的第i 行的累加和向量

cumprod (A ,dim );当dim 为1时,该函数等同于cumsum (A );当dim 为2时,返回一个矩阵,其第i 行是A 的第i 行的累乘积向量。

⑤求标准方差的调用格式

对于具有N 个元素的数据序列x 1,x 2,x 3,…,x N ,标准方差的计算公式如下:

∑=--=N i i X X N S 1

21)(11 或 ∑=-=

N i i X X N S 122)(1 其中 ∑==N i X

N X 111对于向量X ,std (X )返回一个标准方差。对于矩阵A ,std

(A )返回一个行向量,它的各个元素便是矩阵A 各列或各行的标准方差。std 函数一般点用格式为:

std (A ,flag ,dim )

其中dim 取1或2。当dim=1时,求各列元素的标准方差;当dim=2时,则求各行元素的标准方差。flag 取0或1,当flag=0时,按S 1所列公式计算标准方差;当flag=1时,按S 2所列公式计算标准方差。默认flag=0,dim=1。

⑥相关系数的调用格式

对于两组数据数列x i 、y i (i=1,2,…,n ),可以由下式计算出两组数据的相关系数: ()()()()∑∑∑----=22x x

r y y x y y x i i i i

corrcoef 函数的调用格式为:

corrcoef (X ):返回从矩阵X 形成的一个相关系数矩阵此相关系数矩阵的大小与矩阵X 一样。它把矩阵X 的每列作为一个变量,然后求它们的相关系数。

corrcoef (X ,Y ):在这里,X 、Y 是向量,它们的作用与corrcoef ([X,Y])中一样。

⑦元素排序的调用格式

MATLAB 中对向量X 排序函数是sort (X ),函数返回一个对X 中的元素按升序排序的新向量。

sort 函数也可以对矩阵A 的各列(或行)重新排序,其调用格式为;

[Y ,I]=sort (A ,dim )

其中dim 指明对A 的列还是行进行排序,若dim=1,则按列排;若dim=2, 则按行排。Y 是排序后的矩阵,而I 记录Y 中的元素在A 中位置。

这里我们举几个例子说明一下:

例1 求矩阵A 的每行及每列的最大元素,并求整个矩阵的最小元素。

??????

? ??--=13021782556456025584512A 命令如下:

A=[12,45,58;25,60,-45;56,25,178;2,0,-13];

max(A,[],2) %求每行最大元素

ans= 58

60

178

2

max(A) %求每列最大元素

ans =56 60 178

min(min(A)) %求整个矩阵的最小元素。也可用命令:min(A(:)) ans =-45

例2 求向量x 的平均和中值。

[]120862410x --=

命令如下:

x=[10,24,6,-8,0,-12]; %偶数个元素

mean(x) %求此向量的平均值

x =10 24 6 -8 0 -12

ans =3.3333

median(x) %求此向量的中值

ans =3

例3 对下列矩阵做各种排序。

????

? ??--=2091671515110A

命令如下:

A=[0,-11,5;1,15,7;16,9,-20];

sort(A) %对A 的每列按升序排序

ans =0 -11 -20

1 9 5

16 15 7

-sort(-A,2) %对A 的每行按降序排列

ans =5 0 -11

15 7 1

16 9 -20

[X,I]=sort(A) %对A按列排序,并将每个元素所在行号送矩阵I

X =0 -11 -20

1 9 5

16 15 7

I = 1 1 3

2 3 1

3 2 2

二、数据插值与拟合

插值与拟合是来源于实际、又广泛应用于实际的两种重要方法。随着计算机的不断发展及计算水平的提高,他们在国民经济和科学研究等方面扮演这越来越重要的角色。

(1)插值

插值计算在数据你和和数据平滑等方面应用普遍。插值计算的目的是通过离散的数据点来获得更为丰富的信息,它可以细分为一维插值和二维插值。一维插值是在线的方向上对数值点进行插值;二维插值则可以理解为在面的方向上进行插值。比较典型的例子就是在绘图过程中,当绘制二维曲线时,利用一维插值从少量数据中获得足够的信息进行描点;在绘制三维曲线时,则必须对两个方向的数据进行插值来获得其他点的信息。

(2)曲线拟合

很多时候,在工程研究与计算中得到的原始数据往往只是在某些点上的离散值,它们所代表的函数关系不易得出一个容易表示的数学表达式;或者所得处的数据的函数表达式比较复杂,不易计算,这样在计算这些函数其他所需要的数值方面就带来了诸多不便。解决这个难题的方法之一就是利用一些性质相对“好”的简单函数,在某种规定和标准下,去拟合或逼近这些“困难”函数,然后通过这些简单函数去获得所希望得到的结果。

曲线拟合根据拟合方法的不同,有参数拟合和非参数拟合。参数拟合,曲线不通过所有点,采用最小二乘法;非参数拟合,曲线通过所有点,采用插值法。

插值和拟合都是数据优化的一种方法,当实验数据不够多时经常需要用到这种方法来画图。在MATLAB中都有特定的函数来完成这些功能。这两种方法的确别在于:

当测量值是准确的,没有误差时,一般用插值;

当测量值与真实值有误差时,一般用数据拟合。

下面对插值和拟合这两种数据处理的方法进行一下比较。

插值:

对于一维曲线的插值,一般用到的函数yi=interp1(X,Y,xi,method),其中method包括nearst,linear,spline,cubic。

对于二维曲面的插值,一般用到的函数zi=interp2(X,Y,Z,xi,yi,method),其中method也和上面一样,常用的是cubic。

拟合:

对于一维曲线的拟合,一般用到的函数p=polyfit(x,y,n)和

yi=polyval(p,xi),这个是最常用的最小二乘法的拟合方法。

对于二维曲面的拟合,有很多方法可以实现,这里运用Spline Toolbox里面的函数功能。

举例说明二维曲面的插值和拟合。

例4 原始数据

x=[1:1:15];

y=[1:1:5];

z=[0.2 0.24 0.25 0.26 0.25 0.25 0.25 0.26 0.26 0.29 0.25 0.29;

0.27 0.31 0.3 0.3 0.26 0.28 0.29 0.26 0.26 0.26 0.26 0.29;

0.41 0.41 0.37 0.37 0.38 0.35 0.34 0.35 0.35 0.34 0.35 0.35;

0.41 0.42 0.42 0.41 0.4 0.39 0.39 0.38 0.36 0.36 0.36 0.36;

0.3 0.36 0.4 0.43 0.45 0.45 0.51 0.42 0.4 0.37 0.37 0.37]; z是一个5乘12的矩阵。

直接用原始数据画图如下:

surf(x,y,z)

title(’Original data Plot’);

xlabel(’X'), ylabel(’Y'), zlabel(’Z'),

colormap, colorbar;

axis([0 15 0 6 0.15 0.55]

先考虑插值,需要用到的函数interp2。

x1=1:0.2:12;

y1=1:0.2:5;

[x2,y2]=meshgrid(x1,y1);

t11=interp2(x,y,z,x2,y2,’cubic’);

surf(x1,y1,t11)

title(’After Fit data Plot’);

xlabel(’X'), ylabel(’Y'), zlabel(’Z'), colormap, colorbar;

axis([0 15 0 6 0.2 0.55])

然后考虑拟合:

ky = 3; knotsy = augknt([0:2.5:13],ky); sp = spap2(knotsy,ky,y,z);

yy = 0:.5:12; vals = fnval(sp,yy); coefsy = fnbrk(sp,’c');

kx = 5; knotsx = augknt([1:4:5],kx);

sp2 = spap2(knotsx,kx,x,coefsy.’);

coefs = fnbrk(sp2,’c').’;

xv = 1:.25:5; yv = 1:.5:12;

values

spcol(knotsx,kx,xv)*coefs*spcol(knotsy,ky,yv).’;

surf(yv,xv,values)

title(’After Polynal data Plot’);

xlabel(’X'), ylabel(’Y'), zlabel(’Z');

colormap, colorbar;

axis([0 15 0 6 0.2 0.55])

三、多项式计算

(1)多项式计算问题

多项式的形式一般很简单,一般都是按未知量的降幂排列的各项之和。MATLAB中有关多项式的命令简单实用,对一般多项式的计算,既加、减、乘、除、求导和估值等,MATLAB基本上都提供了相应的函数命令。利用这些函数

命令,我们能轻松的完成多项式的计算,从而大大降低实际工作的工作量。(2)各类多项式计算问题的实际操作

1.多项式的加法运算

进行加减运算的多项式应该具有相同的阶次,如果阶次不同,低阶次的多项式必须用零填补至高阶多项式的阶次。

例:求两个多项式a(x)=5x4+4x3+3x2+2x+1和b(x)=3x2+1的和。

>>a=[5 4 3 2 1];b=[3 0 1];

>>c=a+[0 0 b]

c=5 4 6 2 2

对应的结果是c(x)=5x4+4x3+6x2+2x+2。

2.多项式的乘法

多项式的乘法采用conv函数

>>d=conv(a,b)

d=15 12 14 10 6 2 1

3.多项式的除法

由deconv函数完成,结果包括商多项式和余数多项式两部分。

>>[div,rest]=deconv(d,a)

div=3 0 1

rest=0 0 0 0 0 0 0

4.微分

使用polyder函数来求解多项式的微分。

例:求多项式p(x)=2x4-6x3+3x2+7

>>p(x)=[2 -6 3 0 7];

>>q=polyder(p)

q=8 -18 6 0

5.求根

要对多项式求根,可以采用roots函数。多项式的根数目不定,要视其阶数而定,可以有一个到多个,其类型也有实数和虚数两种可能。

例:求上题p(x)的根。

>>x=roots(p)

x=1.9322+0.4714i

1.9322-0.4714i

-0.4322+0.8355i

-0.4322-0.8355i

6.求值

采用polyval函数可以求出多项式中的未知数为某个特定值时该多项式的值。>>polyval(p,1)

ans=6

总结

本文通过论述MATLAB在数据统计处理以及多项式计算中的应用,充分体现了采用MATLAB对测量数据进行处理是简便、快捷和直观的。工程与科研中大量的统计问题运用MATLAB解决起来即高效又准确;多项式插值则在信号处理与图像处理上应用较为广泛;根据最小二乘原理拟合出的图形可供试验报告中采用或手工计算时查找,得出的多项式可供理论分析或产品的CAD中使用,而该方法同样适合于其它行业中图表曲线的处理,而且能满足工程的精度要求。

在论文编写过程中,我不仅掌握了用MATLAB解决数据处理问题的方法,也更加深了对《MATLAB语言》这门课的理解。这次的课程论文不但是对这门课一学期来的学习成果的一次检验,也是对学到的知识的一次非常好的实践,了解了理论与实践结合的重要性。这次论文编写使得所学的知识与实践相结合,更让我领略到了MATLAB的强大计算功能,以及其在各个领域的广泛应用。

参考文献

[1] 刘卫国.MATLAB程序设计教程(第二版).北京:中国水利水电出版社,2005

[2] 王斌.基于MATLAB的数值计算—插值及曲线拟合,阴山学刊,2006

[3] 李远钊.MATLAB中的多项式计算.北京,期刊论文,2012

MATLAB数据分析与多项式计算(M)

第7章 MATLAB数据分析与多项式计算 6.1 数据统计处理 6.2 数据插值 6.3 曲线拟合 6.4 离散傅立叶变换 6.5 多项式计算 6.1 数据统计处理 6.1.1 最大值和最小值 MATLAB提供的求数据序列的最大值和最小值的函数分别为max 和min,两个函数的调用格式和操作过程类似。 1.求向量的最大值和最小值 求一个向量X的最大值的函数有两种调用格式,分别是: (1) y=max(X):返回向量X的最大值存入y,如果X中包含复数元素,则按模取最大值。 (2) [y,I]=max(X):返回向量X的最大值存入y,最大值的序号存入I,如果X中包含复数元素,则按模取最大值。 求向量X的最小值的函数是min(X),用法和max(X)完全相同。 例6-1 求向量x的最大值。 命令如下: x=[-43,72,9,16,23,47]; y=max(x) %求向量x中的最大值 [y,l]=max(x) %求向量x中的最大值及其该元素的位置 2.求矩阵的最大值和最小值 求矩阵A的最大值的函数有3种调用格式,分别是: (1) max(A):返回一个行向量,向量的第i个元素是矩阵A的第i 列上的最大值。 (2) [Y,U]=max(A):返回行向量Y和U,Y向量记录A的每列的最大值,U向量记录每列最大值的行号。 (3) max(A,[],dim):dim取1或2。dim取1时,该函数和max(A)完全相同;dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大值。 求最小值的函数是min,其用法和max完全相同。

例6-2 分别求3×4矩阵x中各列和各行元素中的最大值,并求整个矩阵的最大值和最小值。 3.两个向量或矩阵对应元素的比较 函数max和min还能对两个同型的向量或矩阵进行比较,调用格式为: (1) U=max(A,B):A,B是两个同型的向量或矩阵,结果U是与A,B 同型的向量或矩阵,U的每个元素等于A,B对应元素的较大者。 (2) U=max(A,n):n是一个标量,结果U是与A同型的向量或矩阵,U的每个元素等于A对应元素和n中的较大者。 min函数的用法和max完全相同。 例6-3 求两个2×3矩阵x, y所有同一位置上的较大元素构成的新矩阵p。 6.1.2 求和与求积 数据序列求和与求积的函数是sum和prod,其使用方法类似。设X是一个向量,A是一个矩阵,函数的调用格式为: sum(X):返回向量X各元素的和。 prod(X):返回向量X各元素的乘积。 sum(A):返回一个行向量,其第i个元素是A的第i列的元素和。 prod(A):返回一个行向量,其第i个元素是A的第i列的元素乘积。 sum(A,dim):当dim为1时,该函数等同于sum(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的各元素之和。 prod(A,dim):当dim为1时,该函数等同于prod(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的各元素乘积。 例6-4 求矩阵A的每行元素的乘积和全部元素的乘积。 6.1.3 平均值和中值 求数据序列平均值的函数是mean,求数据序列中值的函数是median。两个函数的调用格式为: mean(X):返回向量X的算术平均值。 median(X):返回向量X的中值。

初中数学-多项式乘以多项式练习

初中数学-多项式乘以多项式练习 一、选择题 计算(2a-3b)(2a+3b)的正确结果是( ) A.4a2+9b2 B.4a2-9b2 C.4a2+12ab+9b2 D.4a2-12ab+9b2 若(x+a)(x+b)=x2-kx+ab,则k的值为( ) A.a+b B.-a-b C.a-b D.b-a 计算(2x-3y)(4x2+6xy+9y2)的正确结果是( ) A.(2x-3y)2 B.(2x+3y)2 C.8x3-27y3 D.8x3+27y3 (x2-px+3)(x-q)的乘积中不含x2项,则( ) A.p=q B.p=±q C.p=-q D.无法确定 若0<x<1,那么代数式(1-x)(2+x)的值是( ) A.一定为正B.一定为负C.一定为非负数D.不能确定计算(a2+2)(a4-2a2+4)+(a2-2)(a4+2a2+4)的正确结果是( ) A.2(a2+2) B.2(a2-2) C.2a3 D.2a6 方程(x+4)(x-5)=x2-20的解是( ) A.x=0 B.x=-4 C.x=5 D.x=40 若2x2+5x+1=a(x+1)2+b(x+1)+c,那么a,b,c应为( ) A.a=2,b=-2,c=-1 B.a=2,b=2,c=-1 C.a=2,b=1,c=-2 D.a=2,b=-1,c=2 若6x2-19x+15=(ax+b)(cx+d),则ac+bd等于( ) A.36 B.15 C.19 D.21 (x+1)(x-1)与(x4+x2+1)的积是( ) A.x6+1 B.x6+2x3+1 C.x6-1 D.x6-2x3+1 二、填空题 (3x-1)(4x+5)=_________. (-4x-y)(-5x+2y)=__________. (x+3)(x+4)-(x-1)(x-2)=__________. (y-1)(y-2)(y-3)=__________.

顺序链式一元多项式加法、减法、乘法运算的实现

1.1设计内容及要求 1)设计内容 (1)使用顺序存储结构实现多项式加、减、乘运算。 例如: 10321058)(2456+-+-+=x x x x x x f ,x x x x x x g +--+=23451020107)( 求和结果:102220128)()(2356++-+=+x x x x x g x f (2)使用链式存储结构实现多项式加、减、乘运算, 10305100)(1050100+-+=x x x x f ,x x x x x x g 320405150)(10205090+++-= 求和结果:1031040150100)()(102090100++-++=+x x x x x x g x f 2)设计要求 (1)用C 语言编程实现上述实验内容中的结构定义和算法。 (2)要有main()函数,并且在main()函数中使用检测数据调用上述算法。 (3)用switch 语句设计如下选择式菜单。 ***************数据结构综合性实验**************** *******一、多项式的加法、减法、乘法运算********** ******* 1.多项式创建 ********** ******* 2.多项式相加 ********** ******* 3.多项式相减 ********** ******* 4.多项式相乘 ********** ******* 5.清空多项式 ********** ******* 0.退出系统 ********** ******* 请选择(0—5) ********** ************************************************* *请选择(0-5): 1.2数据结构设计 根据下面给出的存储结构定义: #define MAXSIZE 20 //定义线性表最大容量

matlab在统计数据的描述性分析的应用

统计数据的描述性分析 一、实验目的 熟悉在matlab中实现数据的统计描述方法,掌握基本统计命令:样本均值、样本中位数、样本标准差、样本方差、概率密度函数pdf、概率分布函数df、随机数生成rnd。 二、实验内容 1 、频数表和直方图 数据输入,将你班的任意科目考试成绩输入 >> data=[91 78 90 88 76 81 77 74]; >> [N,X]=hist(data,5) N = 3 1 1 0 3 X = 75.7000 79.1000 82.5000 85.9000 89.3000 >> hist(data,5)

2、基本统计量 1) 样本均值 语法: m=mean(x) 若x 为向量,返回结果m是x 中元素的均值; 若x 为矩阵,返回结果m是行向量,它包含x 每列数据的均值。 2) 样本中位数 语法: m=median(x) 若x 为向量,返回结果m是x 中元素的中位数; 若x 为矩阵,返回结果m是行向量,它包含x 每列数据的中位数3) 样本标准差 语法:y=std(x) 若x 为向量,返回结果y 是x 中元素的标准差; 若x 为矩阵,返回结果y 是行向量,它包含x 每列数据的标准差

std(x)运用n-1 进行标准化处理,n是样本的个数。 4) 样本方差 语法:y=var(x); y=var(x,1) 若x 为向量,返回结果y 是x 中元素的方差; 若x 为矩阵,返回结果y 是行向量,它包含x 每列数据的方差 var(x)运用n-1 进行标准化处理(满足无偏估计的要求),n 是样本的个数。var(x,1)运用n 进行标准化处理,生成关于样本均值的二阶矩。 5) 样本的极差(最大之和最小值之差) 语法:z= range(x) 返回结果z是数组x 的极差。 6) 样本的偏度 语法:s=skewness(x) 说明:偏度反映分布的对称性,s>0 称为右偏态,此时数据位于均值右边的比左边的多;s<0,情况相反;s 接近0 则可认为分布是对称的。 7) 样本的峰度 语法:k= kurtosis(x) 说明:正态分布峰度是3,若k 比3 大得多,表示分布有沉重的尾巴,即样本中含有较多远离均值的数据,峰度可以作衡量偏离正态分布的尺度之一。 >> mean(data) ,

第6章matlab数据分析与多项式计算_习题答案

第6章 MATLAB数据分析与多项式计算 习题6 一、选择题 1.设A=[1,2,3,4,5;3,4,5,6,7],则min(max(A))的值是()。B A.1 B.3 C.5 D.7 2.已知a为3×3矩阵,则运行mean(a)命令是()。B A.计算a每行的平均值 B.计算a每列的平均值 C.a增加一行平均值 D.a增加一列平均值 3.在MATLAB命令行窗口输入下列命令: >> x=[1,2,3,4]; >> y=polyval(x,1); 则y的值为()。 D A.5 B.8 C.24 D.10 4.设P是多项式系数向量,A为方阵,则函数polyval(P,A)与函数polyvalm(P,A)的值()。D A.一个是标量,一个是方阵 B.都是标量 C.值相等 D.值不相等 5.在MATLAB命令行窗口输入下列命令: >> A=[1,0,-2]; >> x=roots(A); 则x(1)的值为()。 C A.1 B.-2 C. D. 6.关于数据插值与曲线拟合,下列说法不正确的是()。A A.3次样条方法的插值结果肯定比线性插值方法精度高。 B.插值函数是必须满足原始数据点坐标,而拟合函数则是整体最接近原始数据点,而不一定要必须经过原始数据点。 C.曲线拟合常常采用最小二乘原理,即要求拟合函数与原始数据的均方误差达到极小。 D.插值和拟合都是通过已知数据集来求取未知点的函数值。 二、填空题 1.设A=[1,2,3;10 20 30;4 5 6],则sum(A)= ,median(A)= 。 [15 27 39],[4 5 6[ 2.向量[2,0,-1]所代表的多项式是。2x2-1 3.为了求ax2+bx+c=0的根,相应的命令是(假定a、b、c已经赋值)。为了

多项式乘多项式课堂练习题

多项式乘以多项式 类型一 (3m-n)(m-2n). (x+2y)(5a+3b). ()()5332--x x ()()y x y x 2332+- ()()y x x y 5323-- ()()y x y x 432-- ()()()()2315332---+-x x x x ()()?? ? ??----213265312x x x x ()()()()y x y x y x y x -----3222332 ()()()y x x y x y x 5624334--+- 类型二 ()()23++x x ()()56++x x ()()53--x x ()()61--x x ()()53+-x x ()()58+-x x ()()56+-x x ()()2010+-x x 总结归纳 ()()=++b x a x

三化简求值: 1. m2(m+4)+2m(m2-1)-3m(m2+m-1),其中m=2 5 2.x(x2-4)-(x+3)(x2-3x+2)-2x(x-2),其中x=3 . 2 3.(x-2)(x-3)+2(x+6)(x-5)-3(x2-7x+13),再求其值,其中x= 四选择题 1.若(x+m)(x-3)=x2-nx-12,则m、n的值为 ( ) A.m=4,n=-1 B.m=4,n=1 C.m=-4,n=1 D.m=-4,n=-1 2.若(x-4)·(M)=x2-x+(N),M为一个多项式,N为一个整数,则 ( ) A.M=x-3,N=12 B.M=x-5,N=20 C.M=x+3.N=-12 D.M=x+5,N=-20 3.已知(1+x)(2x2+ax+1)的结果中x2项的系数为-2, 则a的值为 ( ) A.-2 B.1 C.-4 D.以上都不对 4.若M=(a+3)(a-4),N=(a+2)(2a-5),其中a为有理数,则M与N的大小关系为( )

一元多项式加减乘除运算

中国计量学院实验报告 实验课程:算法与数据结构实验名称:一元二项式班级:学号: 姓名:实验日期: 2013-5-7 一.实验题目: ①创建2个一元多项式 ②实现2个多项式相加 ③实现2个多项式相减 ④实现2个多项式相乘 ⑤实现2个多项式相除 ⑥销毁一元多项式 实验成绩:指导教师:

二.算法说明 ①存储结构:一元多项式的表示在计算机内可以用链表来表示,为了节省存储 空间,只存储多项式中系数非零的项。链表中的每一个结点存放多项式的一个系数非零项,它包含三个域,分别存放该项的系数、指数以及指向下一个多项式项结点的指针。创建一元多项式链表,对一元多项式的运算中会出现的各种可能情况进行分析,实现一元多项式的相加、相减操作。 ②加法算法

三.测试结果 四.分析与探讨 实验数据正确,部分代码过于赘余,可以精简。 五.附录:源代码#include<> #include<> #include<> typedef struct Polynomial { float coef; int expn; struct Polynomial *next; }*Polyn,Polynomial; 出多项式a和b\n\t2.多项式相加a+b\n\t3.多项式相减a-b\n"); printf("\t4.多项式相除a*b\n\t5.多项式相除a/b\n\t6.销毁多项式\n"); printf("\t7.退出

\n*********************************** ***********\n"); printf("执行:"); scanf("%d",&flag); switch(flag) { case(1): printf("多项式a:");PrintPolyn(pa); printf("多项式b:");PrintPolyn(pb);break; case(2): pc=AddPolyn(pa,pb); printf("多项式a+b:");PrintPolyn(pc); DestroyPolyn(pc);break; case(3): pd=SubtractPolyn(pa,pb); printf("多项式a-b:");PrintPolyn(pd); DestroyPolyn(pd);break; case(4): pf=MultiplyPolyn(pa,pb); printf("多项式a*b:");PrintPolyn(pf); DestroyPolyn(pf);break; case(5): DevicePolyn(pa,pb); break; case(6): DestroyPolyn(pa); DestroyPolyn(pb); printf("成功销毁2个一元二项式\n"); printf("\n接下来要执行的操作:\n1 重新创建2个一元二项式 \n2 退出程序\n"); printf("执行:"); scanf("%d",&i); if(i==1) { // Polyn pa=0,pb=0,pc,pd,pf;//定义各式的头指针,pa与pb在使用前付初值NULL printf("请输入a的项数:"); scanf("%d",&m); pa=CreatePolyn(pa,m);// 建立多项式a printf("请输入b的项

Matlab对采样数据进行频谱分析

使用Matlab对采样数据进行频谱分析 1、采样数据导入Matlab 采样数据的导入至少有三种方法。 第一就是手动将数据整理成Matlab支持的格式,这种方法仅适用于数据量比较小的采样。 第二种方法是使用Matlab的可视化交互操作,具体操作步骤为:File --> Import Data,然后在弹出的对话框中找到保存采样数据的文件,根据提示一步一步即可将数据导入。这种方法适合于数据量较大,但又不是太大的数据。据本人经验,当数据大于15万对之后,读入速度就会显著变慢,出现假死而失败。 第三种方法,使用文件读入命令。数据文件读入命令有textread、fscanf、load 等,如果采样数据保存在txt文件中,则推荐使用 textread命令。如 [a,b]=textread('data.txt','%f%*f%f'); 这条命令将data.txt中保存的数据三个三个分组,将每组的第一个数据送给列向量a,第三个数送给列向量b,第二个数据丢弃。命令类似于C语言,详细可查看其帮助文件。文件读入命令录入采样数据可以处理任意大小的数据量,且录入速度相当快,一百多万的数据不到20秒即可录入。强烈推荐! 2、对采样数据进行频谱分析 频谱分析自然要使用快速傅里叶变换FFT了,对应的命令即 fft ,简单使用方法为:Y=fft(b,N),其中b即是采样数据,N为fft数据采样个数。一般不指定N,即简化为Y=fft(b)。Y即为FFT变换后得到的结果,与b的元素数相等,为复数。以频率为横坐标,Y数组每个元素的幅值为纵坐标,画图即得数据b的幅频特性;以频率为横坐标,Y数组每个元素的角度为纵坐标,画图即得数据b的相频特性。典型频谱分析M程序举例如下: clc fs=100; t=[0:1/fs:100]; N=length(t)-1;%减1使N为偶数 %频率分辨率F=1/t=fs/N p=1.3*sin(0.48*2*pi*t)+2.1*sin(0.52*2*pi*t)+1.1*sin(0.53*2*pi*t)... +0.5*sin(1.8*2*pi*t)+0.9*sin(2.2*2*pi*t); %上面模拟对信号进行采样,得到采样数据p,下面对p进行频谱分析 figure(1) plot(t,p); grid on title('信号 p(t)'); xlabel('t') ylabel('p')

多项式乘多项式试题精选(二)附答案

多项式乘多项式试题精选(二) 一.填空题(共13小题) 1.如图,正方形卡片A类、B类和长方形卡片C类各若干张,如果要拼一个长为(2a+b),宽为(a+b)的长方形,则需要C类卡片_________张. 2.(x+3)与(2x﹣m)的积中不含x的一次项,则m=_________. 3.若(x+p)(x+q)=x2+mx+24,p,q为整数,则m的值等于_________. 4.如图,已知正方形卡片A类、B类和长方形卡片C类各若干张,如果要拼成一个长为(a+2b)、宽为(a+b)的大长方形,则需要A类卡片_________张,B类卡片_________张,C类卡片_________张. 5.计算: (﹣p)2?(﹣p)3=_________;=_________;2xy?(_________)=﹣6x2yz;(5﹣a)(6+a)=_________. 6.计算(x2﹣3x+1)(mx+8)的结果中不含x2项,则常数m的值为_________. 7.如图是三种不同类型的地砖,若现有A类4块,B类2块,C类1块,若要拼成一个正方形到还需B类地砖 _________块. 8.若(x+5)(x﹣7)=x2+mx+n,则m=_________,n=_________. 9.(x+a)(x+)的计算结果不含x项,则a的值是_________. 10.一块长m米,宽n米的地毯,长、宽各裁掉2米后,恰好能铺盖一间房间地面,问房间地面的面积是_________平方米. 11.若(x+m)(x+n)=x2﹣7x+mn,则﹣m﹣n的值为_________. 12.若(x2+mx+8)(x2﹣3x+n)的展开式中不含x3和x2项,则mn的值是_________. 13.已知x、y、a都是实数,且|x|=1﹣a,y2=(1﹣a)(a﹣1﹣a2),则x+y+a3+1的值为_________.

数据结构中实现一元多项式简单计算

数据结构中实现一元多项式简单计算: 设计一个一元多项式简单的计算器。 基本要求: 一元多项式简单计算器的基本功能为: (1)输入并建立多项式; (2)输出多项式; (3)两个多项式相加,建立并输出和多项式; (4)两个多项式相减,建立并输出差多项式; #include #include #define MAX 20 //多项式最多项数 typedef struct//定义存放多项式的数组类型 { float coef; //系数 int exp; //指数 } PolyArray[MAX]; typedef struct pnode//定义单链表结点类型 { float coef; //系数 int exp; //指数 struct pnode *next; } PolyNode; void DispPoly(PolyNode *L) //输出多项式 { PolyNode *p=L->next; while (p!=NULL) { printf("%gX^%d ",p->coef,p->exp); p=p->next; } printf("\n"); } void CreateListR(PolyNode *&L,PolyArray a,int n) //尾插法建表 { PolyNode *s,*r;int i; L=(PolyNode *)malloc(sizeof(PolyNode)); //创建头结点 L->next=NULL; r=L; //r始终指向终端结点,开始时指向头结点for (i=0;i

多项式乘多项式习题(含答案)

第3课时多项式与多项式相乘 知识点多项式与多项式相乘 1.填空:(1)(x-1)(x+2)=x2+________+________-2=______________; (2)(2x+3y)(x-2y)=________+________+________+________=________________. 2.[2018·武汉]计算(a-2)(a+3)的结果是( ) A.a2-6 B.a2+a-6 C.a2+6 D.a2-a+6 3.有下列各式: ①(a-2b)(3a+b)=3a2-5ab-2b2;②(2x+1)(2x-1)=4x2-x-1; ③(x-y)(x+y)=x2-y2;④(x+2)(3x+6)=3x2+6x+12. 其中正确的有( ) A.4个 B.3个 C.2个 D.1个 4.化简: (1)(2x+3y)(3x-2y); (2)(a+3)(a-1)+a(a-2); (3)(2x-3)(x+4)-(x+5)(x+6). 5.先化简,再求值: (1)8x2-(x-2)(3x+1)-2(x+1)(x-5),其中x=-2; (2)x(x+2)(x-3)+(x-1)(-x2-x+1),其中x=-1 3 . 6.根据右图的面积可以说明多项式的乘法运算(2a+b)(a+b)=2a2+3ab+b2,那么根据图②的面积可以说明多项式的乘法运算是( ) A.(a+3b)(a+b)=a2+4ab+3b2 B.(a+3b)(a+b)=a2+3b2 C.(b+3a)(b+a)=b2+4ab+3a2 D.(a+3b)(a-b)=a2+2ab-3b2 7.已知a+b=m,ab=-4,化简(a-2)(b-2)的结果是( ) A.6 B.2m-8 C.2m D.-2m

数据结构一元多项式的计算

课程设计成果 学院: 计算机工程学院班级: 13计科一班 学生姓名: 学号: 设计地点(单位): 设计题目:一元多项式的计算 完成日期:年月日 成绩(五级记分制): _________________ 教师签名:_________________________ 目录 1 需求分析 ......................................................................... 错误!未定义书签。 2 概要设计 ......................................................................... 错误!未定义书签。 2.1一元多项式的建立 ............................................................... 错误!未定义书签。 2.2显示一元多项式 ................................................................... 错误!未定义书签。 2.3一元多项式减法运算 ........................................................... 错误!未定义书签。 2.4一元多项式加法运算 ........................................................... 错误!未定义书签。 2.5 设计优缺点.......................................................................... 错误!未定义书签。3详细设计 .......................................................................... 错误!未定义书签。 3.1一元多项式的输入输出流程图........................................... 错误!未定义书签。 3.2一元多项式的加法流程图................................................... 错误!未定义书签。 3.3一元多项式的减法流程图.................................................. 错误!未定义书签。 3.4用户操作函数....................................................................... 错误!未定义书签。4编码 .................................................................................. 错误!未定义书签。5调试分析 .......................................................................... 错误!未定义书签。4测试结果及运行效果...................................................... 错误!未定义书签。5系统开发所用到的技术.................................................. 错误!未定义书签。参考文献 ............................................................................. 错误!未定义书签。附录全部代码................................................................... 错误!未定义书签。

Matlab大数据处理

Matlab大数据处理2:硬盘访问.mat文件 分类:Matlab Hack2013-09-08 20:16 146人阅读评论(0) 收藏举报Matlab程序中经常要访问.mat文件,通常在作法是用load函数直接加载.mat文件。如果.mat文件非常大,超过了系统可用内存的时候该怎么办呢?Matlab2013b为提供了matfile函数,matfile函数可以通过索引直接访问.mat文件中的Matlab变量,而无需将.mat文件加载入内存。 matfile有两种用法: m = matfile(filename),用文件名创建matfile对象,通过这个对象可以直接访问mat文件中的matlab变量。 m = matfile(filename,'Writable',isWritable),isWritable开启或关闭文件写操作。 使用示例: 1. 向mat文件中写入变量 x = magic(20); m = matfile('myFile.mat'); % 创建一个指向myFile.mat的matfile对象 m.x = x; % 写入x m.y(81:100,81:100) = magic(20); % 使用坐标索引

2. 加载变量 filename = 'topography.mat'; m = matfile(filename); topo = m.topo; %读取变量topo [nrows,ncols] = size(m,'stocks'); %读取stocks变量的size avgs = zeros(1,ncols); for idx = 1:ncols avgs(idx) = mean(m.stocks(:,idx)); end 3. 开启写权限 filename = 'myFile.mat'; m = matfile(filename,'Writable',true); 或者 m.Properties.Writable = true;

5.多项式乘以多项式练习题

5.多项式与多项式相乘 一、选择题 1.计算(2a-3b)(2a+3b)的正确结果是() A.4a2+9b2B.4a2-9b2C.4a2+12ab+9b2D.4a2-12ab+9b2 2.若(x+a)(x+b)=x2-kx+ab,则k的值为() A.a+b B.-a-b C.a-b D.b-a 3.计算(2x-3y)(4x2+6xy+9y2)的正确结果是() A.(2x-3y)2B.(2x+3y)2C.8x3-27y3D.8x3+27y3 4.(x2-px+3)(x-q)的乘积中不含x2项,则() A.p=q B.p=±q C.p=-q D.无法确定 5.若0<x<1,那么代数式(1-x)(2+x)的值是() A.一定为正B.一定为负C.一定为非负数D.不能确定6.计算(a2+2)(a4-2a2+4)+(a2-2)(a4+2a2+4)的正确结果是() A.2(a2+2)B.2(a2-2)C.2a3D.2a6 7.方程(x+4)(x-5)=x2-20的解是() A.x=0 B.x=-4 C.x=5 D.x=40 8.若2x2+5x+1=a(x+1)2+b(x+1)+c,那么a,b,c应为() A.a=2,b=-2,c=-1 B.a=2,b=2,c=-1 C.a=2,b=1,c=-2 D.a=2,b=-1,c=2 9.若6x2-19x+15=(ax+b)(cx+d),则ac+bd等于() A.36 B.15 C.19 D.21 10.(x+1)(x-1)与(x4+x2+1)的积是() A.x6+1 B.x6+2x3+1 C.x6-1 D.x6-2x3+1 二、填空题 1.(3x-1)(4x+5)=_________. 2.(-4x-y)(-5x+2y)=__________. 3.(x+3)(x+4)-(x-1)(x-2)=__________. 4.(y-1)(y-2)(y-3)=__________. 5.(x3+3x2+4x-1)(x2-2x+3)的展开式中,x4的系数是__________.

八年级数学多项式乘以多项式练习题

3.多项式与多项式相乘 一、选择题 1.计算(2a-3b)(2a+3b)的正确结果是() A.4a2+9b2B.4a2-9b2C.4a2+12ab+9b2D.4a2-12ab+9b2 2.若(x+a)(x+b)=x2-kx+ab,则k的值为() A.a+b B.-a-b C.a-b D.b-a 3.计算(2x-3y)(4x2+6xy+9y2)的正确结果是() A.(2x-3y)2B.(2x+3y)2C.8x3-27y3D.8x3+27y3 4.(x2-px+3)(x-q)的乘积中不含x2项,则() A.p=q B.p=±q C.p=-q D.无法确定 5.若0<x<1,那么代数式(1-x)(2+x)的值是() A.一定为正B.一定为负C.一定为非负数D.不能确定 6.计算(a2+2)(a4-2a2+4)+(a2-2)(a4+2a2+4)的正确结果是() A.2(a2+2)B.2(a2-2)C.2a3D.2a6 7.方程(x+4)(x-5)=x2-20的解是() A.x=0 B.x=-4 C.x=5 D.x=40 8.若2x2+5x+1=a(x+1)2+b(x+1)+c,那么a,b,c应为() A.a=2,b=-2,c=-1 B.a=2,b=2,c=-1 C.a=2,b=1,c=-2 D.a=2,b=-1,c=2 9.若6x2-19x+15=(ax+b)(cx+b),则ac+bd等于() A.36 B.15 C.19 D.21 10.(x+1)(x-1)与(x4+x2+1)的积是() A.x6+1 B.x6+2x3+1 C.x6-1 D.x6-2x3+1 二、填空题 1.(3x-1)(4x+5)=__________. 2.(-4x-y)(-5x+2y)=__________. 3.(x+3)(x+4)-(x-1)(x-2)=__________. 4.(y-1)(y-2)(y-3)=__________.

一元多项式计算问题课程设计

长沙学院课程设计说明书 题目一元多项式计算问题系(部) 计算机系 专业(班级) 10级软件D班 姓名向栋良 学号2010022D08 指导教师邓旭东 起止日期2011.9.4-2011.9.8

课程设计任务书 课程名称:数据结构与算法 设计题目:一元多项式计算问题 已知技术参数和设计要求: 问题描述: 设计一个稀疏多项式简单计算器 基本要求: (1)输入并分别建立多项式A和B (2)输入输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……,其中n是多项式的项数,ci和ei是第i项的系数和指数,序列按指数降序排列 (3)完成两个多项式的相加、相减,并将结果输出; 测试数据: (1) A+B A= 3x14-8x8+6x2+2 B=2x10+4x8+-6x2 (2) A-B A=11x14+3x10+2x8+10x6+5 B=2x14+3x8+5x6+7 (3) A+B A=x3+x1B=-x3-x1 (4) A+B A=0 B=x7+x5+x3+x1 (5) A-B A=100x100+50x50+20x20+x B=10x100+10x50+10x20+x 选作内容: (1).多项式在x=1时的运算结果 (2)求多项式A和B的乘积 设计工作量: 40课时 日期节次地点设计方式9月4日(周日)1-4 科1408 讲授内容 9月4日(周日)5-8 科1608 答疑 9月5日(周一)1-4科1408上机调试 9月5日(周一)5-8 科1608 答疑 9月6日(周二)1-4科1408上机调试 9月6日(周二)5-8 科1608 答疑 9月7日(周三)1-4科1408上机调试 9月7日(周三)5-8 科1608 答疑 9月8日(周四)1-4科1608答疑 9月8日(周四)5-8 科1408 答辩

多项式乘多项式练习题

整式乘法:多项式乘多项式习题(4) 一、选择题 1.计算(2a-3b)(2a+3b)的正确结果是() A.4a2+9b2B.4a2-9b2C.4a2+12ab+9b2D.4a2-12ab+9b2 2.若(x+a)(x+b)=x2-kx+ab,则k的值为() A.a+b B.-a-b C.a-b D.b-a 3.计算(2x-3y)(4x2+6xy+9y2)的正确结果是() A.(2x-3y)2B.(2x+3y)2C.8x3-27y3D.8x3+27y3 4.(x2-px+3)(x-q)的乘积中不含x2项,则() A.p=q B.p=±q C.p=-q D.无法确定 5.若0<x<1,那么代数式(1-x)(2+x)的值是() A.一定为正B.一定为负C.一定为非负数D.不能确定6.计算(a2+2)(a4-2a2+4)+(a2-2)(a4+2a2+4)的正确结果是() A.2(a2+2)B.2(a2-2)C.2a3D.2a6 7.方程(x+4)(x-5)=x2-20的解是() 8.A.x=0 B.x=-4 C.x=5 D.x=40 9.若2x2+5x+1=a(x+1)2+b(x+1)+c,那么a,b,c应为() A.a=2,b=-2,c=-1 B.a=2,b=2,c=-1 C.a=2,b=1,c=-2 D.a=2,b=-1,c=2 10.若6x2-19x+15=(ax+b)(cx+b),则ac+bd等于() A.36 B.15 C.19 D.21 11.(x+1)(x-1)与(x4+x2+1)的积是() A.x6+1 B.x6+2x3+1 C.x6-1 D.x6-2x3+1 二、填空题 1.(3x-1)(4x+5)=__________. 2.(-4x-y)(-5x+2y)=__________. 3.(x+3)(x+4)-(x-1)(x-2)=__________. 4.(y-1)(y-2)(y-3)=__________. 5.(x3+3x2+4x-1)(x2-2x+3)的展开式中,x4的系数是__________.

最新第6章 MATLAB数据分析与多项式计算_习题答案

精品好文档,推荐学习交流 第6章 MATLAB数据分析与多项式计算 习题6 一、选择题 1.设A=[1,2,3,4,5;3,4,5,6,7],则min(max(A))的值是()。B A.1 B.3 C.5 D.7 2.已知a为3×3矩阵,则运行mean(a)命令是()。B A.计算a每行的平均值B.计算a每列的平均值 C.a增加一行平均值D.a增加一列平均值 3.在MA TLAB命令行窗口输入下列命令: >> x=[1,2,3,4]; >> y=polyval(x,1); 则y的值为()。D A.5 B.8 C.24 D.10 4.设P是多项式系数向量,A为方阵,则函数polyval(P,A)与函数polyvalm(P,A)的值()。D A.一个是标量,一个是方阵B.都是标量 C.值相等D.值不相等 5.在MA TLAB命令行窗口输入下列命令: >> A=[1,0,-2]; >> x=roots(A); 则x(1)的值为()。C A.1 B.-2 C.1.4142 D.-1.4142 6.关于数据插值与曲线拟合,下列说法不正确的是()。A A.3次样条方法的插值结果肯定比线性插值方法精度高。 B.插值函数是必须满足原始数据点坐标,而拟合函数则是整体最接近原始数据点,而不一定要必须经过原始数据点。 C.曲线拟合常常采用最小二乘原理,即要求拟合函数与原始数据的均方误差达到极小。 D.插值和拟合都是通过已知数据集来求取未知点的函数值。 二、填空题 1.设A=[1,2,3;10 20 30;4 5 6],则sum(A)= ,median(A)= 。 [15 27 39],[4 5 6[ 2.向量[2,0,-1]所代表的多项式是。2x2-1 仅供学习与交流,如有侵权请联系网站删除谢谢1

一元多项式计算(数据结构课程设计)

一元多项式计算(数据结构课程设计)

一、系统设计 1、算法思想 根据一元多项式相加的运算规则:对于两个一元多项式中所有指数相同的项,对应指数相加(减),若其和(差)不为零,则构成“和(差)多项式”中的一项;对于两个一元多项式中所有指数不相同的项,则分别写到“和(差)多项式”中去。 因为多项式指数最高项以及项数是不确定的,因此采用线性链表的存储结构便于实现一元多项式的运算。为了节省空间,我采用两个链表分别存放多项式a 和多项式b,对于最后计算所得的多项式则利用多项式a进行存储。主要用到了单链表的插入和删除操作。

(1)一元多项式加法运算 它从两个多项式的头部开始,两个多项式的某一项都不为空时,如果指数相等的话,系数就应该相加;相加的和不为零的话,用头插法建立一个新的节点。P 的指数小于q的指数的话就应该复制q的节点到多项式中。P的指数大于q的指数的话,就应该复制p节点到多项式中。当第二个多项式空,第一个多项式不为空时,将第一个多项式用新节点产生。当第一个多项式空,第二个多项式不为空时,将第二个多项式用新节点产生。 (2)一元多项式的减法运算 它从两个多项式的头部开始,两个多项式的某一项都不为空时,如果指数相等的话,系数就相减;相加的和不为零的话,用头插法建立一个新的节点。p的指数小于q的指数的话,就应该复制q的节点到多项式中。P的指数大于q的指数的话就应该复制p的节点到多项式中,并且建立的节点的系数为原来的相反数;当第二个多项式空,第一个多项式不为空时,将第一个多项式用新节点产生。当第一个多项式空,第二个多项式不为空时,将第二个多项式用新节点产生,并且建立的节点的系数为原来的相反数。 2、概要设计 (1)主函数流程图: (注:a代表第一个一元二次方程,b代表第二个一元二次方程)

一元多项式的计算数据结构课程设计

一元多项式的计算—加,减 摘要(题目)一元多项式计算 任务:能够按照指数降序排列建立并输出多项式; 能够完成两个多项式的相加、相减,并将结果输入; 目录 1.引言 2.需求分析 3.概要设计 4.详细设计 5.测试结果 6.调试分析 7.设计体会 8.结束语 一:引言: 通过C语言使用链式存储结构实现一元多项式加法、减法和乘法的运算。按指数

降序排列。 二:需求分析 建立一元多项式并按照指数降序排列输出多项式,将一元多项式输入并存储在内存中,能够完成两个多项式的加减运算并输出结果 三:概要设计 存储结构:一元多项式的表示在计算机内可以用链表来表示,为了节省存储空间,只存储多项式中系数非零的项。链表中的每一个结点存放多项式的一个系数非零项,它包含三个域,分别存放该项的系数、指数以及指向下一个多项式项结点的指针。创建一元多项式链表,对一元多项式的运算中会出现的各种可能情况进行分析,实现一元多项式的相加、相减操作。 1.单连表的抽象数据类型定义: ADT List{ 数据对象:D={ai|ai∈ElemSet,i=1,2,…,n,n≥0} 数据关系:R1={| ai-1, ai∈D,i=2,…,n} 基本操作: InitList(&L) //操作结果:构造一个空的线性表 CreatPolyn(&L) //操作结果:构造一个以单连表存储的多项试 DispPolyn(L) //操作结果:显示多项试 Polyn(&pa,&pb) //操作结果:显示两个多项试相加,相减的结果 } ADT List 2.本程序包含模块: typedef struct LNode //定义单链表 { }LNode,*LinkList; void InitList(LinkList &L) //定义一个空表 { } void CreatPolyn(LinkList &L) //用单链表定义一个多项式 { } void DispPolyn(LinkList L) //显示输入的多项式

相关文档
相关文档 最新文档