当前位置:文档之家› 计算机代数系统第6章-程序设计

计算机代数系统第6章-程序设计

计算机代数系统第6章-程序设计
计算机代数系统第6章-程序设计

第六章Maple 程序设计

前面,我们使用的是Maple 的交互式命令环境.所谓交互式命令环境,就是一次输入一条或几条命令,然后按回车,这些命令就被执行了,执行的结果显示在同一个可执行块中.对于大多数用户来说,利用交互式命令环境解决问题已经足够了,但如果要解决一系列同一类型的问题或者希望利用Maple 编写需要的解决特定问题的函数和程序,以期更加充分地利用Maple 的强大功能,提高大规模问题的计算效率,掌握一定的程序设计是必要的.幸运的是,Maple 自身提供了一套编程工具,即Maple 语言.Maple 语言实际上是由Maple 各种命令以及一些简单的过程控制语句组成的.1编程基础

1.1算子

所谓算子,是从一个抽象空间到另一个抽象空间的函数.在数学上算子的含义通常是函数到函数的映射.在Maple 中,算子常用“箭头”记号定义(也称箭头操作符):>f:=x->a*x*exp(x);

:= f → x a x e x

>g:=(x,y)->a*x*y*exp(x^2+y^2);

:= g → (),x y a x y e

() + x 2y 2另外,函数unapply 也可以从表达式建立算子:

>unapply(x^2+1,x); → x + x 21

>unapply(x^2+y^2,x,y);

→ (),x y + x 2y 2

当我们依次把算子f 作用到参数0,a,x^2+a 时即可得平常意义上的函数值:>f:=t->t*sin(t);

:= f → t t ()

sin t >f(0);

>f(a);

a ()

sin a >f(x^2+a);

() + x 2a ()

sin + x 2a 上述结果是函数作用的例子.而最后一个结果)sin()(22a x a x ++实际上是算子f 与算子g:=t->t^2+a 复合后再作用到参数x 的结果.

从数学上讲,作用与复合是不同的,它们产生的结果是有区别的,但在使用它们时,两者还是有些重叠的.在Maple 中,可以依赖于语法把它们区分开:

(1)当复合两个算子时,结果仍是算子,两个算子的定义域必须是相容的;

(2)当把一个算子作用于一个参数(参数必须在算子的定义域中)时,结果是一个表达式;

(3)在Maple 中,函数作用的语法是使用括号(),如函数f 作用到参数u 写作f(u).而复合算子的符号是@,多重复合时使用符号@@.

通过进一步的例子可以清楚区分作用与复合的功能:f 和g 复合的结果是算子))((:t g f t g f ??=,而把这个算子作用到参数x 得到表达式f (g (x )).例如,)exp(),sin(u u g t t f ??=+=?,则))sin(exp(:?+=z z g f ??是一个算子,而))sin(exp()((?+=x x g f 是一个表达式,因为x 是一个实数.试比较下述两例:>D(g@f);

()@()()D g f ()

D f >D(g*h);

+ ()D g h g ()

D h 另外一个应引起注意的问题是算子(函数)与表达式的异同,在第一章2.2.2中曾探讨过函数与表达式的区别,这里再通过几个例子说明其中的微妙差异:

>f1:=x^2+1;

>f2:=y^2+1;

:= f1 + x 21

:= f2 + y 21

>f3:=f1+f2;

:= f3 + + x 22y 2

再看下面的例子:

>g1:=x->x^2+1;

>g2:=y->y^2+1;

:= g1 → x + x 21

:= g2 → y + y 21

>g3:=g1+g2;

:= g3 + g1g2

与前面例子不同的是,两个算子(函数)g1,g2相加的结果依然是函数名g 3,出现这个问题的主要原因是g1与g2分别为x ,y 的函数,Maple 认为它们的定义域不相容.要得到与前例的结果,只需稍作改动:

>g3:=g1(x)+g2(y);

:= g3 + + x 22y 2

下面的例子想说明生成Maple 函数的两种方式“箭头操作符”及“unapply ”之间微妙的差异:

>x:='x':a:=1:b:=2:c:=3:

>a*x^2+b*x+c;

+ + x 22x 3

>f:=unapply(a*x^2+b*x+c,x);

:= f → x + + x 22x 3

>g:=x->a*x^2+b*x+c;

:= g → x + + a x 2b x c

由此可见,f 中的a,b,c 已经作了代换,而g 中则显含a,b,c 。再看下面实验:>f(x);g(x);

+ + x 22x 3

+ + x 22x 3

f 与

g 两者相同,再对其微分:

>D(f);D(g);

→ x + 2x 2

→ x + 2a x b

再改变常数c 的值,观察f 与g 的变化:

>c :=15;

:= c 15

>f(x);g(x);

+ + x 22x 3

+ + x 22x 15

由此可见,在利用Maple 进行函数研究时,对同一问题应该用不同方法加以校验,而这一切的支撑是数学基础!

1.2编程初体验

利用算子可以生成最简单的函数—单个语句的函数,但严格意义上讲它并非程序设计,它所生成的数据对象是子程序.所谓子程序,简单地说,就是一组预先编好的函数命令,我们由下面的简单程序来看看Maple 程序的结构:

>plus:=proc(x,y)

x+y;

end;

这个程序只有2个参数,在程序内部它的名称是x ,y,这是Maple 最简单的程序结构,仅仅在proc ()和end 中间加上在计算中需要的一条或者多条命令即可,Maple 会把最后一个语句的结果作为整个子程序的返回结果,这一点需要引起注意.再看下例:>P :=proc(x,y)

x-y;

x*y;

x+y;

end end:

:>P (3,4);

7

显然,尽管程序P 有三条计算命令,但返回的只是最后一个语句x+y;的结果.要想输出所有的计算结果,需要在程序中增加print 语句:

>P :=proc(x,y)

print(x-y);

print(x*y);

print(x+y);

end::

end

>P(3,4);

-1

12

7

再看下面几个例子:

>for i from2to6do

expand((x+y)^i);

od;

x22x y y2

+ +

x33x2y3x y2y3

+ + +

x44x3y6x2y24x y3y4

+ + + +

x55x4y10x3y210x2y35x y4y5

+ + + + +

x66x5y15x4y220x3y315x2y46x y5y6

+ + + + + +

>F:=proc(n::integer)

if n mod12=0then true

else false

fi

end:

>F(123^123),F(1234567890^9);

false true

,

从上面几个简单的例子可以看出Maple子程序主要包含以下一些内容:

(i)把定义的子程序赋值给程序名procname,以后就可以用子程序名procname来调用程序;

(ii)子程序一律以proc()开头,括号里是程序的输入参数,如果括号中什么都没有,表示这个子程序没有任何输入参数;

(iii)子程序中的每一个语句都用分号(或冒号)分开(这一点不是主要的,程序设计时,

在可能的时候—过程当中的最后一个语句、for-循环、if 语句中的最后一个语句省略终结标点也是允许的,这并不是为了懒惰,而是因为在终结语句后面插入一个语句产生的影响要比仅仅执行一个新语句产生的影响大);

(iv)在定义完子程序之后,Maple 会显示它对该子程序的解释(除非在end 后用冒号结束),它的解释和你的定义是等价的,但形式上不一定完全相同;

(v)Maple 会自动地把除了参数以外的变量都作为局部变量(local variable),这就是说,它们仅仅在这个子程序的定义中有效,和子程序以外的任何同名变量无关.

在定义了一个子程序以后,执行它的方法和执行任何Maple 系统子程序一样—程序名再加上一对圆括号(),括号中包含要调用的参数,如果子程序没有参数,括号也是不能省略的.

除了上面给出的程序设计方法外,在Maple 中还可以直接由“->”(箭头)生成程序,如下例:

>f:=x->if x>0then x else -x fi;

:= f proc ()end proc x option ;,operator arrow if then else end if < 0x x ?x >f(-5),f(5);

,55

甚至于程序名也可以省略,这种情况通常会在使用函数map 时遇到:

>map(x->if x>0then x else -x fi,[-4,-3,-2,0,1]);

[]

,,,,43201如果需要察看一个已经定义好的子程序的过程,用eva eval

l 命令,查看Maple 中源程序(如factor 函数)使用下述组合命令:

interface (verboseproc=2);

print (factor);

再看一个更为有用的简单程序:代数方程的参数解。该程序在代数方程f(x,y)=0求解中使用了一个巧妙的代换y=tx 得到了方程的参数解,它的主要用途是用来画图、求积分、求微分和求级数.程序如下:

>parsolve:=proc(f,xy::{list(name),set(name)},t::name)local p,x,y;

x:=xy[1];

y:=xy[2];

p:={solve(subs(y=t*x,f),x)}minus{0};

map((xi,u,xx,yy)->{xx=xi,yy=u*xi},p,t,x,y)

end:

调用该程序可以方便求解:

>parsolve(u^2+v^2=a^2,[u,v],t);

{}

,{}, = u ?a

+ 1t 2 = v ?t a + 1t 2{}, = u a + 1t 2 = v t a + 1t 2>f:=randpoly([x,y],degree=3,sparse);

:= f ? + + + + + 53x 85x y 49y 278x 317x y 272y 3

>parsolve(f,[x,y],t);

= y 12t ()? ? + 49t 285t + + + 2401t 423594t 310829t 216536 + + 72t 37817t 2

,{{ =

x 12? ? + 49t 285t + + + 2401t 423594t 310829t 216536 + + 72t 37817t 2}{, = y 1t ()? ? ? 49t 285t + + + 2401t 423594t 310829t 216536 + + 72t 37817t 2

, =

x 12? ? ? 49t 285t + + + 2401t 423594t 310829t 216536 + + 72t 37817t 2}}1.3局部变量和全局变量

Maple 中的全局变量,是指那些在交互式命令环境中定义和使用的变量,前面所使用的变量几乎都属于全局变量.而在编写子程序时,需要定义一些只在子程序内部使用的变量,称其为局部变量.当Maple 执行子程序时,所有和局部变量同名的全局变量都保持不变,而不管在子程序中给局部变量赋予了何值.如果要把局部变量定义为全局变量,需要用关键词global 在程序最开始加以声明,而局部变量则用local 声明,虽然这是不必要的,但在程序设计时,声明变量是有一定好处的.

下面通过实例演示局部变量与全局变量的不同.为了更清楚地观察子程序对全局变量的影响,在子程序外先设定一个变量a 的值:

>a:=1;

:= a 1

>f:=proc()

local a;

a:=12345678/4321;

evalf(a/2);

end;

>f();

1428.567230

>a;

1

>g:=proc()

global a;

a:=12345678/4321;

evalf(a/2);

end;

>g();

1428.567230

>a;

12345678

4321

显然,在前一个程序中,由于在子程序外已经赋值给a,a是全局变量,它的值不受子程序中同名局部变量的影响;而在后一个子程序中,由于重新把a定义为全局变量,所以子程序外的a随着子程序中的a值的变化而变化.

子程序中的输入参数,它既不是全局的,也不是局部的.在子程序内部,它是形式参数,也就是说,它的具体取值尚未被确定,它在程序调用时会被替换成真正的参数值.而在子程序外部,它们仅仅表示子程序接受的参数的多少,而对于具体的参数值没有关系.

1.4变量nargs,args与procname

在所有程序中都有三个有用的变量:nargs,args与procname.前两个给出关于调用参量的信息:nargs变量是调用的实际参量的个数,args变量是包含参量的表达式序列, args的子序列通过范围或数字的参量选取.例如,第i个参量被调用的格式为:args[

args[i]i]. nargs,args变量通常在含有可选择参量的程序中使用.下面看一个例子:

>p:=proc()

local i;

RETURN(nargs,[seq(i^3,i=args)])

end proc:

>p(1,2,3,4,5,6,7,8,9,10);

,,,,,,,,,

1827641252163435127291000

10[]

,

Maple e函数RETUR

RETURN N返回了输入参量的个数以及参量序列的立方列表,该程序利用Mapl

RETURN函数使用时必须在其后加圆括号,即使无结果返回时也得如此。下面是一个关于求任意序列最大值的复杂程序:

>maximum:=proc()

local r,i;

r:=args[1];

for i from 2to nargs do

if args[i]>r then r:=args[i]

end if

end do;

r;

end proc:

>maximum(12^4,5^7,69^3,10^4+4.9*1000);

328509

如果变量procname (程序被调用的名字)存在的话,它可以用来直接访问该程序,通常用procname(args)完成调用:

>f:=proc(a)

if a>0then RETURN(a^(1/2))

else RETURN('procname(args)')

end if

end proc:

>f(100-3^6),f(10^2+90-9*4);

,()f -629154

2基本程序结构

所有的高级程序设计语言都具有程序结构,因为为了完成一项复杂的任务,仅仅按照语句顺序依次执行是远远不够的,更需要程序在特定的地方能够跳转、分叉、循环,……,与此同时,程序结构就产生了.

2.1for 循环

在程序设计中,常常需要把相同或者类似的语句连续执行多次,此时,通过for 循环结构可以更便捷地编写程序.试看下面几个例子:

①求1至5自然数的和:

>total:=0:

for i from 1to 5do

total:=total+i:

od; := total 1 := total 3 := total 6 := total 10 := total 15

②列示2,4,6,8,10及其平方数、立方数:

>for i from 2to 10by 2do

'i'=i,'i^2'=2^i,'i^3'=i^3;

od;

,, = i 2 = i 24 = i 38

,, = i 4 = i 216 = i 364

,, = i 6 = i 264 = i 3216

,, = i 8 = i 2256 = i 3512

,, = i 10 = i 21024 = i 31000

③列示第100到第108个素数(第1个素数是2):

>for j from 100to 108do

prime[j]=ithprime(j);

od;

= prime 100541

= prime 101547

= prime 102557

= prime 103563

= prime 104569

= prime 105571

= prime 106577

= prime 107587

= prime 108593

④列示5到10的阶乘及其因数分解:

>for n in seq(i!,i=5..10)do

n=ifactor(n);

od;

= 120() 23() 3()

5 = 720() 24() 32()

5 = 5040() 24() 32() 5()

7

=

40320()27()32()5()7

=

362880()27()34()5()7

=

3628800()28()34()52()7

⑤一个复杂的幂指函数生成:

>f:=proc(x,n)

local i,t;

t:=1;

for i from1to n do

t:=x^(t^x);

od;

t;

end:

>f(x,10);

x ?

?

??

??

??

??

??

?

??

??

??

??

??

??

?

?

?

??

??

??

??

??

?

??

??

??

??

??

??

??

?

??

??

?

??

??

??

??

??

??

??

??

??

?

?

??

??

?

??

??

??

??

??

??

??

??

??

x

?

?

??

??

?

??

??

??

??

??

??

??

??

?

?

??

??

?

??

??

??

??

??

??

??

???

?

??

??

??

??

??

??

??

??

??

??

?

?

??

??

??

??

??

??

??

??

??

??x

?

?

??

??

??

??

??

??

??

??

??

?

?

??

??

??

??

??

??

??

??

??

?

?

?

??

??

??

??

??

??

??

??

?

?

?

??

??

??

??

??

??

??

??

x

?

?

?

??

??

??

??

??

??

??

?

?

?

??

??

??

??

??

??

??

?

?

??

??

??

??

??

??

??

?

?

??

??

??

??

??

??

??

x

?

?

??

??

??

??

??

??

?

?

??

??

??

??

??

??

?

?

??

??

??

?

??

??

?

?

??

??

??

?

??

??

x

?

?

??

??

??

?

??

?

?

??

??

??

?

??

?

?

??

??

??

??

?

?

??

??

??

??

x

?

?

??

??

??

?

?

??

??

??

?

?

??

?

??

?

?

??

?

??

x

?

?

??

?

?

?

??

?

?

?

???

?

??

x

()

x x

x

x

x

x

x

x

x

x

通过上述例子可以看出,Maple的for循环结构很接近于英语语法.在上面例子中,i 称为循环变量,用于循环计数,do后面的部分,称为循环体,就是需要反复执行的语句,可以是一条语句,也可以是多条语句.在循环体中,也可以引用循环变量.循环体的结束标志,也就是整个for循环结构的结束标志,是字母“od”.for循环结构的语法可总结为:

for循环变量from初始值to终止值(by步长)do

循环体

od

在for循环结构中,初始值和终了值必须是数值型的,而且必须是实数,如果初始值是1,可以省略不写,而步长用by引出.

对于上面程序中的重复循环似乎可有可无,但实际科学计算中,重复次数往往成千上万,或者重复的次数无法确定,循环就必不可少了.下面再看一个实用程序—从1到n

的自然数的求和程序:

>SUM:=proc(n)

local i,total;

total:=0;

for i from 1to n do

total:=total+i;

od;

end;

>SUM(1000);

500500

该程序仅仅具有练习例举的意义,因为在Maple 中像这样一个问题只需要一个简单语句就可以完成:

>Sum(n,n=1..1000)=sum(n,n=1..1000);

= ∑ = n 11000

n 500500

更一般地,对于确定的求和可用add 命令(该命令无惰性函数形式):

>add(n,n=1..1000);

500500

再看下面一个动画制作例子(图略去):

>for i from -20to 30do

p||i:=plots[implicitplot](x^3+y^3-5*x*y p||i:=plots[implicitplot](x^3+y^3-5*x*y=

=1-i/8,x=-3..3,y=-3..3,numpoints=800,tickmarks=[2,2])

od:

>plots[display](p||(-20..30),insequence=true );

2.2分支结构(条件语句)

所谓分支结构,是指程序在执行时,依据不同的条件,分别执行两个或多个不同的程序块,所以常常称为条件语句.if 条件结构的语法为:

if 逻辑表达式1(条件1)then 程序块1

elif 逻辑表达式2(条件2)then 程序块2

else 程序块3

fi

下面是一个判断两个数中较大者的例子:

>bigger:=proc(a,b)

if a>=b then a

else b

fi

end;

再如下例:

>ABS:=proc(x)

if x<0then-x

else x;

fi;

end;

显然,这个绝对值函数的简单程序,对于任意实数范围内的数值型变量计算都是没有问题的,但对于非数值型的参数则无能为力.为此,我们需要在程序中添加一条判断参数是否为数值型变量的语句:

>ABS:=proc(x)

if type(x,numeric)then

if x<0then-x else x;

fi;

else

'ABS'(x);

fi;

end:

这里,我们用到一个if语句的嵌套,也就是一个if语句处于另一个if语句当中.这样的结构可以用来判断复杂的条件.我们还可以用多重嵌套的条件结构来构造更为复杂的函数,例如下面的分段函数:

>HAT:=proc(x)

if type(x,numeric)then

if x<=0then0;

else

if x<=1then x;

else0;

fi;

fi;

else

'HAT'(x);

fi;

end;

尽管在上面的程序中我们用了不同的缩进来表示不同的层次关系,这段程序还是很难懂.对于这种多分支结构,可以用另一种方式书写,只需在第二层的if语句中使用elif,这样就可以把多个分支形式上写在同一个层次中,以便于阅读.

>HAT:=proc(x)

if type(x,numeric)then

if x<=0then 0;

elif x<=1then x;

else 0;

fi;

else

'HAT'(x);

fi;

end;

和许多高级语言一样,这种多重分支结构理论上可以多到任意多重.

再来看看前面的绝对值函数的程序,似乎是完美的,但是,对于乘积的绝对值则没有办法,下面用map 命令来修正,注意其中的type(…,`*`)是用来判断表达式是否为乘积,进而对其进行化简.

>ABS:=proc(x)

if type(x,numeric)then

if x<0then -x else x fi;

elif type(x,`*`)then map(ABS,x);

else

'ABS'(x);

fi;

end:

>ABS(-1/2*b);

1()ABS b 分段函数是一类重要的函数,条件语句在定义分段函数时具有明显的优越性,下面学习几个实例:

(1)>f:=proc(x )

if x<0then x^2+1else sin(Pi*x)fi;

end;

(2) = ()g x ???????? + x 2x ≤ x 0()sin x < x 3π ? + ? + x 26πx 9π2x 3π ≤ 3πx

>g:=proc(x)

if x<=0then

x^2+x

else

= ()f x { + x 21 < x 0()sin πx ≤ 0x

if x<3*Pi then

sin(x)

else

x^2-6*x*Pi+9*Pi^2-x+3*Pi

fi

fi

end;

2.3while循环

for循环在那些已知循环次数,或者循环次数可以用简单表达式计算的情况下比较适用.但有时循环次数并不能简单地给出,我们要通过计算,判断一个条件来决定是否继续循环,这时,可以使用while循环.while循环标准结构为:

while条件表达式do

循环体

od

Maple首先判断条件是否成立,如果成立,就一遍遍地执行循环体,直到条件不成立为止.

Euclidean n 下面看一个简单的程序,是用辗转相除法计算两个自然数的最大公约数(Euclidea 算法).

>GCD:=proc(a::posint,b::posint)

local p,q,r;

p:=max(a,b);

q:=min(a,b);

r:=irem(p,q);

while r<>0do

p:=q;

q:=r;

r:=irem(p,q);

od;

q;

end:

>GCD(123456789,987654321);

9

在上面程序中的参数a、b后面的双冒号“::”指定了输入的参数类型.若类型不匹配时输出错误信息.再看下面一个扩展Euclidean算法的例子:

>mygcdex:=proc(a::nonnegint,b::nonnegint,x::name,y::name)

local a1,a2,a3,x1,x2,x3,y1,y2,y3,q;

a1:=a;a2:=b;

x1:=1;y1:=0;

x2:=0;y2:=1;

while (a2<>0)do

a3:=a1mod a2;

q:=floor(a1/a2);

x3:=x1-q*x2;

y3:=y1-q*y2;

a1:=a2;a2:=a3;

x1:=x2;x2:=x3;

y1:=y2;y2:=y3;

od;

x:=x1;y:=y1;

RETURN(a1)

end:

>mygcdex(2^10,6^50,'x','y');

1024

2.4递归子程序

正如在一个子程序中我们可以调用其他的子程序一样(比如系统内部函数,或者已经定义好的子程序),一个子程序也可以在它的内部调用它自己,这样的子程序我们称为递归子程序.在数学中,用递归方式定义的例子很多,如Fibonacci 数列:

)

2(,1,02110≥+===??n f f f f f n n n 下面我们在Maple 中利用递归子程序求Fibonacci 数列的第n 项:

>Fibonacci:=proc(n::nonnegint)Fibonacci:=proc(n::nonnegint)::list

::list if n<=1then n;

else

Fibonacci(n-1)+Fibonacci(n-2);

fi;

end:

>seq(Fibonacci(i),i=0..19);

,,,,,,,,,,,,,,,,,,,01123581321345589144233377610987159725844181>Fibonacci(20);

6765

但是,应用上述程序计算Fibonacci(2000)时则不能进行,原因是要计算F2000,就先得计算F1999、F1998、……,无限制地递归会耗尽系统的堆栈空间而导致错误.

由数据结构有关理论知道,递归程序理论上都可以用循环实现,比如我们重写上面的程序如下:

>Fibonacci:=proc(n::nonnegint)

local temp,fnew,fold,i;

if n<=1then n;

else

fold:=0;

fnew:=1;

for i from2to n do

temp:=fnew+fold;

fold:=fnew;

fnew:=temp;

od;

fi;

end:

>Fibonacci(2000):

>time(Fibonacci(2000));

.019

利用循环,程序不像前面那么易懂了,但同时带来的好处也是不可忽视的,循环结构不仅不会受到堆栈的限制,而且计算速度得到了很大的提高.

我们知道,Maple子程序默认情况下把最后一条语句的结果作为子程序的结果返回.我们可以用RETURN命令来显式地返回结果,比如前面的递归结果可等价地写成:

>Fibonacci:=proc(n::nonnegint)

option remember;

if n<=1then RETURN(n);

fi;

Fibonacci(n-1)+Fibonacci(n-2);

end:

程序进入n<=1的分支中,执行到RETURN命令就跳出程序,而不会接着执行后面的语句了.另外,使用RETURN命令在一定程度上可以增加程序的可读性.

在第二章中曾提到Maple的自动求导功能,下面通过实例说明。第一个例子是关于分段函数求导问题:

>F:=x->if x>0then sin(x)else arctan(x)fi;

F x proc ()

:= option ;

,operator arrow if then else end if

< 0x ()sin x ()arctan x end proc

>Fp:=D(F);

Fp x proc ()

:= option ;

,operator arrow if then else end if

< 0x ()cos x /()1 + 1^x 2end proc

将分段函数及其导数的曲线绘制在同一个坐标系中,实线为F ,虚线为Fp :>plot({F,Fp},-3*Pi..3*Pi,linestyle=[1,4],color=black);

第二个例子试图说明Maple 能够完成对多个函数的自动求导:

>f:=proc(x)

local s,t;

s:=ln(x);

t:=x^2;

s*t+3*t;

end;

:= f proc ()end proc

x local ;,s t ;; := s ()ln x := t ^x 2 + ×s t ×3t >fp:=D(f);

fp x proc ()

:= local ;

,,,tx s t sx ;;;; := sx /1x := s ()ln x := tx ×2x := t ^x 2 + + ×sx t ×tx s ×3tx

end proc

程序fp 是怎样构造的呢?对比f 和fp 的源代码可以帮助我们了解Maple 自动求导

机理:

在fp 的源代码中,每一条赋值语句V:=f(v1,v2,…vn)之前是Vx:=fp(v1,v2,…vn),此处vi 是局部变量或形式参数,fp(v1,v2,…vn)是对f(v1,v2,…vn)在形式上的微分,用该赋值语句的的导数取代最后一条语句或返回值。这种方法被称为向前自动微分法。在Maple 内部对这种方法有一些限制:不能有递归程序,不能有记忆选项,不能对全局变量赋值,只能有常数的循环变量,等。

下面一个例子说明自动求导在计算时间和存储空间上的优越性,这是一个利用递归定义的)1(,11>==?n x

f x f n f n 的幂函数的自动求导问题:

>f:=proc(x,n)local i,t;

t:=1;

for i to n do

t:=x^t

od;

t

end;

:= f proc ()end proc ,x n local ;,i t ;; := t 1for to do end do i n := t ^x t t >f1_3:=D[1$3](f):#求f 对x 的三阶导数

>setbytes:=kernelopts(bytesused):#使用寄存器内存量>settime:=time():#开始计时

>f1_3(1.1,22);

18.23670379

>cpu_time:=(time()-settime)*seconds;#计算时间

:= cpu_time .230seconds

>memory_used:=evalf((kernelopts(bytesused)-setbytes)/1024*kbytes,5);#存储空间大小

:= memory_used 671.86kbytes

再利用符号微分重复上述步骤:

>f22:=unapply(f(x,22),x):

>setbytes:=kernelopts(bytesused):

>settime():

>(D@@3)(f22)(1.1);

18.23670379

>cpu_time:=(time()-settime)*seconds;

cpu_time119.160seconds

:=

>memory_used:=evalf((kernelopts(bytesused)-setbytes)/1024*kbytes,5);

memory_used63423.kbytes

:=

显然Maple自动求导在计算时间和存储空间上具有明显的优越性。巧妙利用自动微分解决较复杂的函数求导问题有十分现实的意义。

3子程序求值

在Maple子程序中的语句,求值的方式和交互环境中的求值有所不同,这在某种程度上是为了提高子程序的执行效率而考虑的.在交互式环境中,Maple对于一般的变量和表达式都进行完全求值(除了数组、映射表等数据结构外).比如先将b赋给a,再将c 赋给b,则最终a的值也指向c.

>a:=b:

b:=c:

a+1;

c1

+

但在子程序内部情况就不一样了,试看下述实验:

>f:=proc()

local a,b;

a:=b;

b:=c;

a+1;

end:

结果居然是:

>f();

b1

+

这是因为a和b都是局部变量,Maple对于子程序中的局部变量只进行一层的求值.下面,我们针对子程序中的不同的变量,系统介绍其求值机制.

3.1参数

子程序中的参数,就是那些在proc()的括号中的变量.参数是一类特殊的变量,在调用子程序时,会把它们替换成实际的参数.

>sqrt1:=proc(x::anything,y::name)

y:=x^2;

计算机控制系统考试

第一章 1.计算机控制系统与常规仪表控制系统的主要异同点是什么? 2.分析说明图1-3计算机控制系统的硬件组成及其作用。 3.计算机控制系统的软件由哪些部分构成? 4.按控制方案来分,计算机控制系统划分成那几大类? 5.计算机控制装置可以分成哪几种机型?可编程控制器可编程调节器总线式工控机单片微型计算机 1. 计算机控制系统及工程应用--是把计算机技术与自动化控制系统融为一体的一门综合性学问,是以计算机为核心部件的过程控制系统和运动控制系统。从计算机应用的角度出发,自动化控制工程是其重要的一个应用领域;而从自动化控制工程来看,计算机技术又是一个主要的实现手段。 ?计算机控制系统是由常规仪表控制系统演变而来的; 2.计算机控制系统硬件一般包括:主机--CPU +RAM+ROM+系统总线常规外部设备--输入/输出设备、外存储器等过程输入输出通道—AI、AO、DI、DO 人机接口设备—CRT、LED、LCD、打印机等通信设备—交换机、modem、集线器等 3.软件通常分为系统软件和应用软件两大类;系统软件一般由计算机厂家提供,专门用来使用和管理计算机本身的程 图1-4 计算机控制系统硬件组成框图 序;应用软件是用户针对生产过程要求而编制的各种应用程序。 4.数据采集系统(DAS)操作指导控制系统(OGC) 直接数字控制系统(DDC)计算机监督控制系统(SCC) 分散控制系统(DCS 现场总线控制系统(FCS) 5.可编程控制器可编程调节器总线式工控机单片微型计算机 第二章 8、结合图2-3,分析说明DAC0832的内部结构组成及其作用 DAC0832主要由8位输入寄存器、8位DAC寄存器、8位D/A转换器以及输入控制电路四部分组成。8 位输入寄存器用于存放主机送来的数字量,使输入数字量得到缓冲和锁存,由LE1加以控制;8位DAC寄存器用于存放待转换的数字量,由LE2加以控制;8位D/A转换器输出与数字量成正比的模拟电流;由与门、非与门组成的输入控制电路来控制2个寄存器的选通或锁存状态。 第三章 2.分析说明8路模拟开关CD4051的结构原理图,结合真值表设计出两个CD4051扩展为一个8路双端模拟开关的示意图。 3.什么叫周期采样?采样时间?采样周期?

计算机控制系统作业参考答案

《计算机控制系统》作业参考答案 作业一 第一章 1.1什么是计算机控制系统?画出典型计算机控制系统的方框图。 答:计算机控制系统又称数字控制系统,是指计算机参与控制的自动控制系统,既:用算机代替模拟控 制装置,对被控对象进行调节和控制. 控制系统中的计算机是由硬件和软件两部分组成的.硬件部分: 计算机控制系统的硬件主要是由主机、外部设备、过程输入输出设备组成; 软件部分: 软件是各种程序的统称,通常分为系统软件和应用软件。 1.2.计算机控制系统有哪几种典型的类型?各有什么特点。 答:计算机控制系统系统一般可分为四种类型: ①数据处理、操作指导控制系统;计算机对被控对象不起直接控制作用,计算机对传感器产生的参数巡回检测、处理、分析、记录和越限报警,由此可以预报控制对象的运行趋势。 ②直接数字控制系统;一台计算机可以代替多台模拟调节器的功能,除了能实现PID 调节规律外, 还能实现多回路串级控制、前馈控制、纯滞后补偿控制、多变量解藕控制,以及自适应、自学习,最优控制等复杂的控制。 ③监督计算机控制系统;它是由两级计算机控制系统:第一级DDC 计算机, 完成直接数字控制功能;第二级SCC 计算机根据生产过程提供的数据和数学模型进行必要的运算,给DDC 计算机提供最佳给定值和最优控制量等。 ④分布式计算机控制系统。以微处理机为核心的基本控制单元,经高速数据通道与上一级监督计算机和CRT 操作站相连。 1.3.计算机控制系统与连续控制系统主要区别是什么?计算机控制系统有哪些优点? 答:计算机控制系统与连续控制系统主要区别:计算机控制系统又称数字控制系统,是指计算机参与 控制的自动控制系统,既:用计算机代替模拟控制装置,对被控对象进行调节和控制。 与采用模拟调节器组成的控制系统相比较,计算机控制系统具有以下的优点: (1)控制规律灵活,可以在线修改。(2)可以实现复杂的控制规律,提高系统的性能指标. (3)抗干扰能力强,稳定性好。 (4)可以得到比较高的控制精度。 (5)能同时控制多个回路,一机多用,性能价格比高。 (6)便于实现控制、管理与通信相结合,提高工厂企业生产的自动化程度. (7)促进制造系统向着自动化、集成化、智能化发展。 图1.3-2 典型的数字控制系统 给定

计算机控制系统课后习题参考答案(刘士荣版)--第6章—1

思考题与习题 6-6 具有纯滞后补偿的控制系统如图6-12所示,采样周期1T s =,对象为 221()1 s s G s e e s --= +, 求Smith 预估器的控制算式)(k y τ。 解 则预估器的传递函数为 21 ()()(1)(1)1 s s G s G s e e s ττ--=-= -+ 2()1()(1)()1 s s Ts Y s e G s e U s e s ττ----=-=+ () ()()(3)dy t y t u t T u t T dt ττ+=--- ()(1) ()(1)(3)y k y k y k u k u k T τττ--+=--- ()0.5(1)0.5(1)0.5(3)y k y k u k u k ττ=+---- 6-12 前馈控制结构图如图6-18,设被控对象的干扰通道和控制通道的传递函数分别为 s n e s s G 4191)(-+= s e s s G 21 301 )(-+= 采样周期T =1s 。试推导完全补偿前馈控制器()n D z 输出()n u k 。 解 () Y s 图6-12 具有纯滞后补偿的控制系统

s s s n n n e s s e s e s s G s G s N s U s D 2241 91301 301191 )()()()()(---++-=++-=-== 相应的微分方程为: )]2() 2(30[)()(9 -+--=+t n dt t dn t u dt t du n n 对上式进行离散化,得: )]2() 12 ()2(30[)()1()(9T k n T T k n T k n k u T k u k u n n n -+-----=+-- s T 1= ∴ 上式为: )2()]3()2([30)()]1()([9------=+--k n k n k n k u k u k u n n n )3(30)2(31)1(9)(10-+---=k n k n k u k u n n 即 )3(3)2(1.3)1(9.0)(-+---=k n k n k u k u n n 此式即为完全补偿前馈控制器的控制算法。 注意:1、除了上面的2道题外,第6章要求过的还有: 6-2 :参考课本内容及例题 6-3(包括响应曲线):参考课本内容及例题 6-11:参考课本图6-17和图6-22 第6章这些题要求全面掌握! 2、理解: 下图是一个简单的水位控制系统。 ⑴试说明它的工作原理。 ⑵指出系统的被控对象、被控量、给定量(输入信号)。 ⑶画出系统工作原理的方框图。 进水 出水 h 水位 高度

《计算机控制系统》课后题答案刘建昌等科学出版社

第一章计算机控制系统概述 习题与思考题 1.1什么是计算机控制系统?计算机控制系统较模拟系统有何优点?举例说明。 解答:由计算机参与并作为核心环节的自动控制系统,被称为计算机控制系统。与模拟系统相比,计算机控制系统具有设计和控制灵活,能实现集中监视和操作,能实现综合控制,可靠性高,抗干扰能力强等优点。例如,典型的电阻炉炉温计算机控制系统,如下图所示: 炉温计算机控制系统工作过程如下:电阻炉温度这一物理量经过热电偶检测后,变成电信号(毫伏级),再经变送器变成标准信号(1-5V或4-20mA)从现场进入控制室;经A/D转换器采样后变成数字信号进入计算机,与计算机内部的温度给定比较,得到偏差信号,该信号经过计算机内部的应用软件,即控制算法运算后得到一个控制信号的数字量,再经由D/A转换器将该数字量控制信号转换成模拟量;控制信号模拟量作用于执行机构触发器,进而控制双向晶闸管对交流电压(220V)进行PWM调制,达到控制加热电阻两端电压的目的;电阻两端电压的高低决定了电阻加热能力的大小,从而调节炉温变化,最终达到计算机内部的给定温度。 由于计算机控制系统中,数字控制器的控制算法是通过编程的方法来实现的,所以很容易实现多种控制算法,修改控制算法的参数也比较方便。还可以通过软件的标准化和模块化,这些控制软件可以反复、多次调用。又由于计算机具有分时操作功能,可以监视几个或成十上百个的控制量,把生产过程的各个被控对象都管理起来,组成一个统一的控制系统,便于集中监视、集中操作管理。计算机控制不仅能实现常规的控制规律,而且由于计算机的记忆、逻辑功能和判断功能,可以综合生产的各方面情况,在环境与参数变化时,能及时进行判断、选择最合适的方案进行控制,必要时可以通过人机对话等方式进行人工干预,这些都是传统模拟控制无法胜任的。在计算机控制系统中,可以利用程序实现故障的自诊断、自修复功能,使计算机控制系统具有很强的可维护性。另一方面,计算机控制系统的控制算法是通过软件的方式来实现的,程序代码存储于计算机中,一般情况下不会因外部干扰而改变,因此计算机控制系统的抗干扰能力较强。因此,计算机控制系统具有上述优点。 1.2计算机控制系统由哪几部分组成?各部分的作用如何? 解答:计算机控制系统典型结构由数字控制器、D/A转换器、执行机构和被控对象、测量变送环节、采样开关和A/D转换环节等组成。 被控对象的物理量经过测量变送环节变成标准信号(1-5V或4-20mA);再经A/D转换器采样后变成数字信号进入计算机,计算机利用其内部的控制算法运算后得到一个控制信号的数字量,再经由D/A转换器将该数字量控制信号转换成模拟量;控制信号模拟量作用于执行机构触发器,进而控制被控对象的物理量,实现控制要求。 1.3应用逻辑器件设计一个开关信号经计算机数据总线接入计算机的电路图。 解答: 1.4应用逻辑器件设计一个指示灯经过计算机数据总线输出的电路图。 解答: 1.5设计一个模拟信号输入至计算机总线接口的结构框图。 解答: 模拟量输入通道组成与结构图 1.6设计一个计算机总线接口至一个4~20mA模拟信号输出的结构框图。 解答:

计算机控制系统试卷四答案

计算机控制系统试卷四答案 班级:姓名:学号:成绩: 一、简答题(每小题3分,共30分) 1. 使用光电隔离器件时,如何做到器件两侧的电气被彻底隔离? 答:光电隔离器件两侧的供电电源必须完全隔离。 2. 给出多通道复用一个D/A转换器的原理示意图。 答: 3.什么是信号重构? 答:把离散信号变为连续信号的过程,称为信号重构,它是采样的逆过程。 4.写出零阶保持器的传递函数,引入零阶保持器对系统开环传 递函数的极点有何影响? 答:零阶保持器的传递函数为 1e () Ts H s s - - =。零阶保持器的引入并不影响开环系统脉冲传递函数的极点。 5.阶跃响应不变法的基本思想是什么? 答:阶跃响应不变法的基本思想是:离散近似后的数字控制器的阶跃响应序列与模拟控制器的阶跃响应的采样值一致。

6.如何消除积分饱和现象? 答:减小积分饱和的关键在于不能使积分项累积过大。因此当偏差大于某个规定的门限值时,删除积分作用,PID控制器相当于一个PD调节器,既可以加快系统的响应又可以消除积分饱和现象,不致使系统产生过大的超调和振荡。只有当误差e在门限 之内时,加入积分控制,相当于PID控制器,则可消除静差,提高控制精度。 7.给出常规的直接设计法或离散化设计法的具体设计步骤。 答:直接设计法或称离散化设计法的具体设计步骤如下: (1)根据已知的被控对象,针对控制系统的性能指标要求及其它约束条件,确定理想的闭环脉冲传递函数() Φz。 (2)确定数字控制器的脉冲传递函数D(z);根据D(z)编制控制算法程序。 8.采用状态反馈任意配置闭环系统极点的充分必要条件是什 么? 答:采用状态反馈任意配置闭环系统极点的充分必要条件是系统状态完全能控。 9.说出实施信号隔离的主要方法。 答:信号隔离方法主要有变压器隔离和光电隔离,变压器隔离适用于模拟信号隔离,光电隔离则特别适合数字信号的隔离。 10.故障诊断中的状态估计方法的基本思想是什么?

计算机操作系统第一章练习题答案

第一章答案 1.操作系统负责管理计算机系统的(③),其中包括处理机、内存、外围 设备和文件。 ①、程序;②、文件;③、资源;④、进程 2.(③)操作系统允许在一台主机上同时连接多台终端,多个用户可 以通过各自的终端同时交互的使用计算机。 ①、网络;②、分布式;③、分时;④、实时 3.操作系统的四大功能是处理机管理、存储器管理、设备管理、文件管理 4.批处理系统主要解决吞吐量问题,分时系统主要解决 交互性问题。(华中理工大2001) 5.操作系统的基本特征是并发、共享、虚拟、异步。 6.如果操作系统具有交互性强、可供多个用户同时使用及响应较及时的特 点,则属于分时类型,如果操作系统可靠,响应及时但仅有简单的交互能力则属于实时类型,如果操作系统在用户提交作业后,不提供交互能力,它所追求的是计算机资源的高利用率,大吞吐量和作业流程的自动化,则属于批处理类型。 7.用户和操作系统之间的接口主要分为 命令接口、图形接口、程序接口。 8.多道程序(multiprogramming)和多重处理(multiprocessing)有何区别答:多道程序是作业之间自动调度执行、共享系统资源,并不是真正的同时执行多个作业;而多重处理系统配置多个CPU,能真正同时执行多道程序。要有效使用多重处理,必须采用多道程序设计技术,而多道程序设计原则上不一定要求多重处理系统的支持。 9.设计操作系统与哪些硬件器件有关 答:计算机操作系统的重要功能之一是对硬件资源的管理,因此设计计算机操作系统时应考虑下述计算机硬件资源: ①CPU与指令的长度及执行方式; ②内存、缓存和高速缓存等存储装置;

③各类寄存器,包括各种通用寄存器、控制寄存器和状态寄存器等; ④中断机构; ⑤外部设备与I/O控制装置; ⑥内部总线与外部总线; ⑦对硬件进行操作的指令集。 10.多用户系统于网络操作系统有什么区别 答:网络操作系统的工作,用户必须知道网址,而多用户操作系统是面向用户的,可以不必知道计算机的详细确切地址,多用户技术的关键是在用户之间有保密安全措施,网络操作系统强调的是客户机和服务器之间的通信。以单机多用户系统为例,说明它与网络操作系统的比较。 11.分时系统和实时系统有何不同 答: 系统设计目标不同。分时系统于与实时系统中的信息处理系统相似,都能为多个用户服务,系统按分时原则为多个终端用户服务; 而实时系统则表现为经常对多路现场信息进行采集,以及对多个对象或多个执行机构进行控制。因此,分时系统的目标是提供一种通用性强的系统,而实时系统大多具有某种特殊用途,是一种专用系统。 响应时间要求不同。分时系统与实时信息处理系统对象应时间的要求都是以人所能接受的等待时间来确定的。而实时控制系统的响应时间是以控制对象所能接受的时延来确定的,实时性要求更强。 交互性强弱不同。分时系统主要用于运行终端用户程序,因此具有较强

计算机控制系统习题参考答案--第2章

习题参考答案 2-3 信号调理单元的功能是什么?通常包括哪些电路? 放大、电平变换、电隔离、阻抗变换、线性化和滤波,将传感器输出的电信号尽可能不失真地转变为标准的电流或电压信号(通常为4~20mA 、0~5V 等)。 通常包括标度变换器、滤波电路、线性化处理及电参量间的转换电路等。 2-5 仪表放大器与普通运算放大器有何不同?其特点有哪些? 对于输出阻抗大,共模电压高的输入信号,需要用到高输入阻抗和高共模抑制比的差动放大器,仪器放大器是专为这种应用场合设计的增益可调的放大器。 如果由普通的运放构成增益可设定的差动放大器,因其输入阻抗低,电阻参数对称性调整复杂,共模抑制比低,故而不适合作为传感器输出信号的差动放大器。 2-11 采样保持器的作用是什么?是否所有的模拟量输入通道中都需要采样保持器?为什么? 采样保持器的作用是:在A/D 转换期间保持输入模拟信号不变。 并不是所有的模拟量输入通道中都需要采样保持器,如被采样的模拟信号的变化频率相对于A/D 转换的转换速度较低的话,可以不加采样保持器。 2-13 A/D 转换器有哪些技术指标? (1) 分辨率 通常用转换后的数字量的位数表示,如8位、10位、12位、16位等 (2) 量程 它是指所能转换的电压范围。如5V 、10V 等。 (3) 转换精度 它是指转换后所得结果相对于实际值的准确度。A/D 转换器的转换精度取决于量化误差q 、微分线性度误差DNLE 和积分线性度误差INLE 。通常用绝对精度和相对精度两种表示方法。绝对精度常用数字量的位数表示法,如绝对精度为±1/2LSB 。,相对精度用相对于满量程的百分比表示。如满量程为10V 的8位A /D 转换器,其绝对精度为81/210/219.5mV ?=±,而8位A /D 的相对精度为%59.0%1002/)2/1(8=?FSR 。 精度和分辨率不能混淆。即使分辨率很高,但温度漂移、线性不良等原因可能造成精度不是很高。 (4) 转换时间 它是指启动A/D 到转换结束所需的时间,即孔径时间。 (5) 工作温度范围 较好的A/D 转换器的工作温度为-40~85℃,一般的为0~70℃。 2-14 一个12位的A/D 转换器,孔径时间为20μs ,绝对精度为±1LSB ,若不使用采样保持器,为了确保转换精度,则允许转换的正弦波模拟信号的最大频率是多少? /100 2100A D m U ft U δπ??==? 6/(1/4096)*100 1.9Hz 21002π2010100 A D f t δ π-∴==≈????

第六章 代数系统

第六章代数系统 1. 填空题:f是X上的n元运算的定义是()。 2. 判断正误,并说明原因:自然数集合N上的减法运算“-”是个封闭的运算。 3. 判断正误,并说明原因:实数集合R上的除法运算“?”是个封闭的运算。 4.填空题:代数系统的定义是:()。 5. 填空题:*是X上的二元运算,*具有交换性,则它的运算表的特征是()。 6.填空题:*是X上的二元运算,*具有幂等性,则它的运算表的特征是()。 7. 简答题:*是X上的二元运算,*具有幺元,如何在它的运算表上判定哪个元素是幺元? 8. 简答题:*是X上的二元运算,*具有零元,如何在它的运算表上判定哪个元素是零元? 9. 简答题:*是X上的二元运算,*具有幺元,如何判定哪个元素是元素x的逆元? 10 令N4={0,1,2,3},N4上定义运算+4: 任何x,y∈N4 , x+4 y=(x+y)(mod 4) 。例如2+43=(2+3)(mod 4) =5(mod 4)=1 请列出的运算表。然后判断+4运算是否有交换性、有幺元、有零元、各个元素是否有逆元?如果有上述这些元素,请指出这些元素都是什么。 11. 判断正误,并说明原因:对于整集合I上的减法运算“-”来说,0是幺元。 12. 填空题:E是全集,E={a,b},E的幂集P(E)上的交运算?的幺元是()。零元是()。有逆元的元素是(),它们的逆元分别是()。 13. 填空题:E是全集,E={a,b},E的幂集P(E)上的并运算è的幺元是()。零元是()。有逆元的元素是(),它们的逆元分别是()。

14. 填空题:E是全集,E={a,b},E的幂集P(E)上的对称差运算?的幺元是()。零元是()。有逆元的元素是()。它们的逆元分别是()。 15. 填空题:对于自然数集合N上的加法运算“+”,13=()。 16. 填空题:你所知道的满足吸收律的运算有()。 17. 填空题:你所知道的具有零元的运算有(),其零元是()。 18. 设?是X上的二元运算,如果有左幺元e L∈X,也有右幺元e R∈X,则e L= e R =e ,且幺元e 是唯一的。 19. 设?是X上的二元运算,如果有左零元θL∈X,也有右零元θR∈X,则θL=θR =θ,且零元θ是唯一的。 20. 设?是X上有幺元e且可结合的二元运算,如果x∈X,x的左、右逆元都存在,则x的左、右逆元必相等。且x的逆元是唯一的。 21. 设?是X上且可结合的二元运算,如a∈X,且a-1∈X,则a是可消去的,即任取x,y∈X,设有a?x=a?y 则x=y。 22. 对于实数集合R,给出运算如下:+是加法、—是减法、·是乘法、max是两个数中取最大的、min是两个数中取最小的、|x-y|是x与y差的绝对值。判 N”。 23. 设R是实数集合,在R上定义二元运算* 如下:任取x,y∈R, x*y=xy-2x-2y+6

计算机控制系统作业答案

计算机控制系统作业答案 作业一 第一章 1.1什么是计算机控制系统?画出典型计算机控制系统的方框图。 参考答案: 答:计算机控制系统又称数字控制系统,是指计算机参与控制的自动控制系统,既:用算机代替模拟控制装置,对被控对象进行调节和控制. 控制系统中的计算机是由硬件和软件两部分组成的.硬件部分: 计算机控制系统的硬件主要是由主机、外部设备、过程输入输出设备组成; 软件部分: 软件是各种程序的统称,通常分为系统软件和应用软件。 图1.3-2 典型的数字控制系统 1.2.计算机控制系统有哪几种典型的类型?各有什么特点。 参考答案: 计算机控制系统系统一般可分为四种类型: ①数据处理、操作指导控制系统;计算机对被控对象不起直接控制作用,计算机对传感器产生的参数巡回检测、处理、分析、记录和越限报警,由此可以预报控制对象的运行趋势。 ②直接数字控制系统;一台计算机可以代替多台模拟调节器的功能,除了能实现PID调节规律外, 还能实现多回路串级控制、前馈控制、纯滞后补偿控制、多变量解藕控制,以及自适应、自学习,最优控制等复杂的控制. ③监督计算机控制系统;它是由两级计算机控制系统:第一级DDC计算机, 完成直接数字控制功能;第二级SCC计算机根据生产过程提供的数据和数学模型进行必要的运算,给DDC计算机提供最佳给定值和最优控制量等。 ④分布式计算机控制系统。以微处理机为核心的基本控制单元,经高速数据通道与上一级监督计算机和CRT操作站相连. 1.3.计算机控制系统与连续控制系统主要区别是什么?计算机控制系统有哪些优点? 参考答案: 计算机控制系统与连续控制系统主要区别:计算机控制系统又称数字控制系统,是指计算机参与控制的自动控制系统,既:用计算机代替模拟控制装置,对被控对象

《计算机控制技术》教材习题解答1

《计算机控制技术》习题解答 第一章 什么是计算机控制系统计算机控制系统由哪几部分组成 答:计算机控制系统就是利用计算机(通常称为工业控制计算机,简称工业控制机)来实现生产过程自动控制的系统。 计算机控制系统的组成:计算机控制系统由计算机(工业控制机)和生产过程两大部分组成。、微型计算机控制系统的特点是什么 微机控制系统与常规的自动控制系统相比,具有如下特点: a.控制规律灵活多样,改动方便 b.控制精度高,抑制扰动能力强,能实现最优控制 ` c.能够实现数据统计和工况显示,控制效率高 d.控制与管理一体化,进一步提高自动化程度 计算机控制系统结构有哪些分类指出这些分类的结构特点和主要应用场合。 答: (1)操作指导控制系统 优点:结构简单,控制灵活,安全。 缺点:由人工操作,速度受到限制,不能控制多个对象。 (2)直接数字控制系统(DDS) 优点:实时性好,可靠性高,适应性强。 (3)监督控制系统(SCC) % 优点:生产过程始终处于最优工况。 (4)分散控制系统(DCS) 优点:分散控制、集中操作、分级管理、分而自治和综合协调。 (5)现场总线控制系统(FCS) 优点:与DCS相比,降低了成本,提高了可靠性。国际标准统一后,可实现真正的开放式互联系统结构。 .计算机控制系统的控制过程是怎样的 计算机控制系统的控制过程可归纳为以下三个步骤: (1)实时数据采集:对被控量的瞬时值进行检测,并输入给计算机。 (2)实时决策:对采集到的表征被控参数的状态量进行分析,并按已定的控制规律,决定下一步的控制过程。 (3)实时控制:根据决策,适时地对执行机构发出控制信号,完成控制任务。 ; .实时、在线方式和离线方式的含义是什么 答:所谓实时,是指信号的输入、计算和输出都要在一定的时间范围内完成,亦即计算机对输入信息,以足够快的速度进行控制,超出了这个时间,就失去了控制的时机,控制也就失去了意义。 在计算机控制系统中,生产过程和计算机直接连接,并受计算机控制的方式称为在线方式或联机方式;生产过程不和计算机相连,且不受计算机控制,而是靠人进行联系并做相应操作

计算机控制系统课后习题参考答案--第4章

4-6 试求下列函数的初值和终值 (1) 1 12 )(--=z z X (2) 2 11 )1(10)(---=z z z X (3) 23 (1)()(1) T z z X z z +=- (4) )2)(1(5)(2 --=z z z z X 解 (1) 1 2 (0)lim ()lim 21z z x X z z -→∞ →∞===- 1 1 1 2 ()lim(1)()lim(1) 21z z x z X z z z -→→∞=-=-=- (2) 1 12 10(0)lim ()lim 0(1)z z z x X z z --→∞→∞===- 1 12 1110()lim(1)()lim(1)(1)z z z x z X z z z --→→∞=-=-=∞- (3) 23 (1) (0)lim ()lim 0(1)z z T z z x X z z →∞→∞+===- 23 11(1)()lim(1)()lim(1)(1)z z T z z x z X z z z →→+∞=-=-=∞- (4) 2 5(0)lim ()lim 5(1)(2) z z z x X z z z →∞→∞===-- 2 115()lim(1)()lim(1)5(1)(2) z z z x z X z z z z →→∞=-=-=--- 4-9 S 平面与Z 平面的映射关系sT T j T z e e e σω== 解 (1) S 平面的虚轴,映射到Z 平面为 单位圆周 。 (2) S 平面的虚轴,当ω由0趋向∞变化时,Z 平面上轨迹的变化。 从(1,0)绕单位圆逆时针旋转无穷圈 (3) S 平面的左半平面,映射到Z 平面为 单位圆内 。 (4) S 平面的右半平面,映射到Z 平面为 单位圆外 。 (5) S 平面上σ由0趋向∞变化时,Z 平面上轨迹的变化。 若ω不变,则Z 平面上轨迹为从原点出发的一条射线,其角度由ω决定 4-12 已知闭环系统的特征方程,试判断系统的稳定性,并指出不稳定的极点数。 解 (2) 3 2 1.50.250.4=0 z z z --+

第一章 计算机系统概论

第一章计算机系统概论 (一)选择题 1.有些计算机将一部分软件永恒地存于只读存储器中,称之为 A.硬件 B.软件 C.固件 D.辅助存储器 E.以上都不对 2.输入、输出装置以及外接的辅助存储器称为 A.操作系统 B.存储器 C.主机 D.外部设备 3.计算机系统中的存储系统是指 A. RAM存储器 B. ROM存储器 C.主存 D.主存和辅存 4.计算机与日常使用的袖珍计算器的本质区别在于 A.运算速度的高低 B.存储器容量的大小 C.规模的大小 D.自动化程度的高低 5.冯·诺伊曼机工作方式的基本特点是 A.多指令流单数据流 B.按地址访问并顺序执行指令 C.堆栈操作 D.存储器按内容选择地址 6.用户与计算机通信的界面是 A. CPU B外部设备 C.应用程序 D 系统程序 7.下列属于应用软件。 A.操作系统 B 编译程序 C.连接程序D文本出来程序 8下列不是输入设备。 A.画笔与图形板 B 键盘 C.鼠标器 D 打印机 9.下列各装置中,具有输入及输出功能。 A.键盘 B 显示器 C.磁盘驱动器 D 打印机 10.下列设备中不属于输出设备。 A.打印机 B 磁带机 C.光笔 D 绘图仪 11下列语句中是正确的。 A.数据库属于系统软件 B.磁盘驱动器只有输入功能 C.评估计算机的执行速度可以用每秒执行的指令数为判断依据 D.个人计算机是小型机 12.计算机只懂机器语言,而人类熟悉高级语言,故人机通信必须借助 A.编译程序 B.编辑程序 C.连接程序 D.载入程序 13.计算机的算术逻辑单元和控制单元合称为 A. ALU B. UP C. CPU D. CAD 14.只有当程序要执行时,它才会去将源程序翻译成机器语言,而且一次只能读取、翻译并执行源程序中的一行语句,此程序称为 A.目标程序 B.编译程序C解释程序 D.汇编程序 15下列语句中是正确的。 A. 1 KB= 1024x1024 B B. 1 KB=1024 MB C. 1 MB = 1024 x1024 B D. 1 MB = 1 024 B 16.一片1 MB的磁盘能存储的数据。 A. 106字节 B. 10-6字节 C. 109字节 D. 220字节 17. 32位的个人计算机,一个字节( byte)由位(bit)组成。 A. 4 B. 8 C. 16 D. 32

计算机基础第一章复习题含答案

计算机基础第一章复习题 一、填空题 1.计算机硬件由中央处理器、内存储器、存储器、输入设备和输出设备五大部件组成。2. 字长是计算机在单位时间内__1__次能处理的__二__进制位数。 3.计算机的主机部分是由CPU和内存储器组成的。 4、计算机软件一般可分为系统软件和应用软件两类,用户写的C语言源程序属于应用软件。 5、运算器和控制器合称CPU。 6、程序、数据和及其相关的文档合称文件。 7、计算机系统的层次结构中,位于硬件之外的所有层次统称为软件系统。 8、由CPU、内存与I/O接口合在一起构成的处理系统称为主机。 9、计算机硬件系统中各部件之间传输的信息流是数据流和指令。 10、程序的运行过程由取指令、分析取令和执行指令组成。 11、内存中的指令,一般先取到数据缓冲寄存器,再送到指令寄存器。 12、(09)计算机语言分为高级语言、__汇编语言___和机器语言。 13、计算机语言分为高级语言、汇编语言和机器语言。 二、选择题 1.微机的诊断程序属于__B__。 A)管理软件B)系统软件 C)编辑软件D)应用软件 2.在下列软件中,不属于系统软件的是_D___。 A)操作系统B)诊断程序 C)编译程序D)用PASCAL编写的程序 3.某公司的财务管理软件属于__D__。 A)工具软件B)系统软件 C)编辑软件D)应用软件 4.计算机软件应包括_A___。 A)系统软件与应用软件 B)管理软件和应用软件 C)通用软件和专用软件 D)实用软件和编辑软件 5.一个字长的二进制位数是A。 A)8 B)16 C)32 D)随计算机系统而不同的 6.CPU主要由运算器与控制器组成,下列说法中正确的是 C 。 A)运算器主要负责分析指令,并根据指令要求作相应的运算 B)控制器主要完成对数据的运算,包括算术运算和逻辑运算 C)控制器主要负责分析指令,并根据指令要求作相应的运算 D)控制器直接控制计算机系统的输入与输出操作 7.微型计算机硬件系统主要包括存储器、输入设备、输出设备和_A___。 A)中央处理器B)运算器C)控制器D)主机 8.下列可选项,都是硬件的是__D__。 A)Windows、ROM和CPU B)WPS、RAM和显示器 C)ROM、RAM和Pascal D)硬盘、光驱和软驱 9.通常,在微机中所指的80486是__B__。 A)微机名称B)微处理器型号C)产品型号D)主频 10.一个字节的二进制位数是__C__。 A)2 B)4 C)8 D)16 11.在微机中,bit的中文含义是__A__。 A)二进制位B)字节C)字D)双字

第一章计算机系统概论习题参考答案

1.比较数字计算机和模拟计算机的特点。 解:模拟计算机的特点:数值由连续量来表示,运算过程是连续的; 数字计算机的特点:数值由数字量(离散量)来表示,运算按位进行。 两者主要区别见P1 表1.1。 2.数字计算机如何分类?分类的依据是什么? 解:分类:数字计算机分为专用计算机和通用计算机。通用计算机又分为巨型机、大型机、中型机、小型机、微型机和单片机六类。 分类依据:专用和通用是根据计算机的效率、速度、价格、运行的经济性和适应性来划分的。 通用机的分类依据主要是体积、简易性、功率损耗、性能指标、数据存储容量、 指令系统规模和机器价格等因素。 3.数字计算机有那些主要应用? (略) 4.冯. 诺依曼型计算机的主要设计思想是什么?它包括哪些主要组成部分? 解:冯. 诺依曼型计算机的主要设计思想是:存储程序和程序控制。 存储程序:将解题的程序(指令序列)存放到存储器中; 程序控制:控制器顺序执行存储的程序,按指令功能控制全机协调地完成运算任务。 主要组成部分有:控制器、运算器、存储器、输入设备、输出设备。 5.什么是存储容量?什么是单元地址?什么是数据字?什么是指令字? 解:存储容量:指存储器可以容纳的二进制信息的数量,通常用单位KB、MB、GB来度量,存储容 量越大,表示计算机所能存储的信息量越多,反映了计算机存储空间的大小。 单元地址:单元地址简称地址,在存储器中每个存储单元都有唯一的地址编号,称为单元地址。 数据字:若某计算机字是运算操作的对象即代表要处理的数据,则称数据字。 指令字:若某计算机字代表一条指令或指令的一部分,则称指令字。 6.什么是指令?什么是程序? 解:指令:计算机所执行的每一个基本的操作。 程序:解算某一问题的一串指令序列称为该问题的计算程序,简称程序。 7.指令和数据均存放在内存中,计算机如何区分它们是指令还是数据? 解:一般来讲,在取指周期中从存储器读出的信息即指令信息;而在执行周期中从存储器中读出

计算机控制系统(康波)第4章部分参考答案[1]

4.1 解:()()()()() 11 111.01?????=?????+=e z z e Kz s s K Z z G 所以,系统的闭环脉冲传递函数为 ) 1())(1()1()(1)()()()(111????+???=+==e Kz e z z e Kz z G z G z R z Y z Φ 系统的闭环特征方程为 0)1())(1(11=?+????e Kz e z z ,得到 03679.06321.03679.1)(2=++?=Kz z z z Δ 由二阶计算机控制系统稳定充要条件 ?? ???>?><0)1(0)1(1)0(ΔΔΔ 可解得:3281.40<=??>=ΔΔn 满足系统稳定的必要条件,再构造Jury 表如下 1686 .0 8308 .05442.04521.04521 .05442.0 4055 .06513.03217.02641.02641 .03217.06513.0 5824 .09856.07196.06832.05740.05740 .06832.07196.09856.012.0 1 8.0 61.0 67.0 12.012 .067.0 61.0 8.0 1?×????×?????×?????×??????? Jury 阵列奇数行首列系数均大于零,故系统稳定。 4.3 解:开环z 传递函数为) 1)(5.0()(??=z z Kz z G

闭环传递函数为Kz z z Kz z G z G z R z Y z +??=+==)5.0)(1()(1)()()()(Φ 令特征多项式 ()05.05.1)(2 =+?+=z K z z Δ由二阶计算机控制系统稳定充要条件 ?? ???>?><0)1(0)1(1)0(ΔΔΔ 可解得:30<

计算机控制系统3

《计算机控制系统》 学习中心: 专业: 学号: 姓名:

作业三第五章 5.1 已知连续系统的传递函数: (1) 2 G(s) (s1)(s2) = ++ ; (2) s a G(s) s(s b) + = + 试用冲击不变法﹑阶跃不变法﹑零极点匹配法﹑双线性变换法、差分变换法,将上述传递函数转换为等效的Z传递函数. 取采样周期T=0.1s. 5.2 已知比例积分模拟调节器D(s)=Kp+Ki/s ,试用后向差分法和双线性变换法求数字调节 器D(z)及其控制算法。 5.3 已知Z传递函数 z0.7 G(z) z0.2 + = - ,试分析其频率特性,并判断它是低通滤波器还是高通 滤波器.

5.4 已知系统的差分方程为: y(k)0.8y(k1)x(k)2x(k1) =-++-, 其中x (k)为输入序列,y (k) 为输出序列. 试分析其频率特性. 5.5 已知低通滤波器 0.5266z D(z) z0.4734 = - , 求D(z)的带宽ωm.. 取采样周期T=2ms. 5.6 已知广义对象的Z传递函数 0.05(z0.7) HG(z) (z0.9)(z0.8) + = -- ,试设计PI调节器 D(z)=Kp+Ki/(1-z-1),使速度误差e ss=0.1 ,取采样周期T=0.1s.

5.7 已知10.15s D(s)0.05s += ,写出与它相对应的PID 增量型数字控制算法。 第六章 6.1试述在最少拍设计中,系统的闭环Z 传递函数Gc(z)和误差Z 传递函数Ge(z)的选择原则。 6.2最少拍控制系统有哪几种改进设计方法。 6.3已知不稳定的广义对象:1 1 2.2z HG(z)1 1.2z --=+, 试设计单位阶跃作用下的最少拍调节器。

计算机监控技术第1章 计算机控制系统概述

第1章计算机控制系统概述 习题与思考题 1-1 测控系统微机化的重要意义是什么? 1-2 对计算机控制系统有哪些基本要求? 1-3 闭环控制与开环控制有什么不同? 1-4 计算机控制系统中的在线方式与离线方式的含义是什么? 1-5 按应用领域和设备形式,计算机控制系统可分为哪几种? 1-6计算机控制系统有哪几种输入与输出信号?各有什么特点和应用场合? 1-7 针对不同行业、不同被控对象,可以选择哪些计算机控制装置(主机)? 1-8 以定位减速和工件加工为例,说明计算机控制系统的工作原理。 1-9 什么是实时计算机系统?在计算机控制系统中实时性体现在哪几个方面? 1-10 什么是智能控制?有哪几种形式的智能控制系统? 1-11 计算机控制系统各环节软、硬件的发展趋势是什么? 参考答案 1-1 测控系统微机化的重要意义是什么? 答:传统的测控系统主要由“测控电路”组成,所具备的功能较少,也比较弱。随着计算机技术的迅速发展,使得传统的测控系统发生了根本性变革,即采用微型计算机作为测控系统的主体和核心,替代传统测控系统的常规电子线路,从而成为新一代的微机化测控系统。由于微型计算机的速度快、精度高、存储容量大、功能强及可编程等特点,将微型计算机引入测控系统中,不仅可以解决传统测控系统不能解决的问题,而且还能简化电路、增加或增强功能、提高测控精度和可靠性,显著增强测控系统的自动化、智能化程度,而且可以缩短系统研制周期、降低成本、易于升级换代等。因此,现代测控系统设计,特别是高精度、高性能、多功能的测控系统,目前已很少有不采用计算机技术的了。在当今,完全可以这样说,没有微处理器的仪器就不能称为仪器,没有微型计算机的测控系统就更不能称其为现代工业测控系统。 计算机技术的引入,为测控系统带来以下一些新特点和新功能: 1)自动清零功能。在每次采样前对传感器的输出值自动清零,从而大大降低因测控系统漂移变化造成的误差。 2)量程自动切换功能。可根据测量值和控制值的大小改变测量范围和控制范围,在保证测量和控制范围的同时提高分辨率。 3)多点快速测控。可对多种不同参数进行快速测量和控制。 4)数字滤波功能。利用计算机软件对测量数据进行处理,可抑制各种干扰和脉冲信号。 5)自动修正误差。许多传感器和控制器的特性是非线性的,且受环境参数变化的影响比较严重,从

计算机控制系统知识点资料

(一)基本概念 第一章 1、什么是计算机控制系统?与传统的控制系统相比,计算机控制系统的优点是什么? 答:计算机控制系统:用计算机代替常规控制系统中的模拟控制器对系统进行控制的系统。 优点:具有精度高速度快、存储容量大和逻辑判断功能,看完实现高级复杂的控制方法,获得快速静谧的控制效果。 2、简述计算机控制系统的硬件组成和各自的功能。 答:计算机控制系统的硬件一般由主机、接口和输入/输出通道、通用外部设备、执行机构、检测元件、仪表、操作台等部分组成。 主机:采用一台或多台计算机,通过接口和I/O口通道,接收检测设备传来的信息并向控制系统的各个部件发出命令,同时计算机对系统的各个参数进行巡回检测、数据处理、控制计算、分析报警、逻辑判断等。 接口与I/O通道:主机与被控对象之间进行信息交换的纽带。 通用外部设备:扩大计算机的功能,是计算机系统与操作人员的交互界面,用来完成信息的记录、存储、显示、打印、传送。 检测元件、仪表、执行机构:检测元件和仪表用来测量生产对象的某些参数,并将非电量的被测参数转换为电量表示;执行机构接受CPU的命令使被控对象完成规定的控制动作。 操作台:用来实现人机之间的交互功能。 3、计算机控制系统应当有哪些主要特征? 答:1.实时性 2.良好的输入/输出能力 3.标准化和系列化 4.模块化的系统结构 5.可靠性(平均无故障时间、抗干扰能力强、具有定时自动启动功能和硬件自检功能) 4、计算机控制系统大致可分为哪几类?简述各类计算机控制系统的结构和特点。 答:计算机控制系统大致可分为以下五类: 1)数据采集系统(DAS,Data Acquision System) 2)直接数字控制系统(DDC,Direct Digital Control) 3)计算机监督系统(SCC,Supervisory Computer Control) 4)分布式控制系统(DCS,Distributed Control System) 5)现场总线控制系统(FCS,Fieldbus Control System) 1)数据采集系统简称:DAS 计算机只对控制系统的参数进行采集、加工和分析处理,并将处理后的数据输出。操作人员根据输出的数据,对生产过程出现的问题进行处理,计算机不直接参与生产过程的控制,该系统结构简单,安全可靠。

相关主题
文本预览
相关文档 最新文档