ch2_符号计算

ch2_符号计算
ch2_符号计算

第 2 章符号计算

符号计算:

解算数学表达式、方程不是在离散化的数值点上进行,而是凭借一系列恒等式,数学定理,通过推理和演绎,获得解析结果。

符号计算建立在数值完全准确表达和推演严格解析的基础之上,所得结果完全准确。

特点:

一.相对于MATLAB的数值计算“引擎”和“函数库”而言,符号计算的“引擎”和“函数库”是独立的。

二.在相当一些场合,符号计算解算问题的指令和过程,显得比数值计算更自然、更简明。

三.大多数理工科的本科学生在学过高等数学和其他专业基础课以后,比较习惯符号计算的解题理念和模式。

2.1符号对象和符号表达式

MATLAB依靠基本符号对象(包括数字、参数、变量)、运算符及一些预定义函数来构造和衍生符号表达式和符号方程。

2.1.1符号对象的创建和衍生

一生成符号对象的基本规则

●任何基本符号对象都必须借助专门的符号函数指令sym或syms定义。

●任何包含符号对象的表达式或方程,将继承符号对象的属性。

二符号数字

符号(类)数字的定义:

sym('Num') 创建一个符号数字Num

sc=sym('Num') 创建一个符号常数sc,该常数值准确等于Num

说明:Num代表一个具体的数字;

Num必须处于(英文状态下的)单引号内,构成字符串(关于字符串参见附录A.1);

Num须为整数、有理数(如321/1000)、预定义常数(如pi);

Num应杜绝使用“十进制小数(如0.321)”、“科学法计述数(如321e-3)”,以便确保创建的符号数、符号表达式精准。此规定源于符号计算引擎的特性。

【例2.1-1】

(1)完全精准的符号数值或数值表达式的“推荐”创建法

clear

a=sin(3/10) % 创建一个双精度的数值类常数

sa=sym('sin(3/10)') % 利用有理数创建一个完全精准的符号数值表达式

vpa(sa-a,40) % 计算双精度与精准符号数间的40位精度误差

a =

0.2955

sa =

sin(3/10)

ans =

0.00000000000000002892172294171061964864168785515107729858

(2)产生非精准的符号数值或数值表达式创建法(应杜绝使用!)

sa1=sym('sin(0.3)')

sa2=sym('sin(3e-1)')

d1=vpa(sa-sa1,40 )

sa1 =

0.29552020666133957510532074568503

sa2 =

0.29552020666133957510532074568503

d1 =

-6.349448172324523418097794487226753809579e-41

(3)

whos

Name Size Bytes Class Attributes

a 1x1 8 double

ans 1x1 60 sym

d1 1x1 60 sym

sa 1x1 60 sym

sa1 1x1 60 sym

sa2 1x1 60 sym

三 基本符号变量

经典教科书里,表达式e -ax sinbx 中的a,b 称为参数,x 为变量。在MATLAB 的符号计算中,a 、b 、x 统称为基本符号变量,其中,x 总被默认为自由(待解)符号变量,其他被作为符号参数处理。 定义基本符号变量的指令格式:

para=sym(' para') 定义单个复数域符号变量para

para=sym(' para', 'Flag') 定义单个Flag 指定域符号变量para

syms para 定义单个复数域符号变量para 的另一种方式

syms para Flag 定义单个Flag 指定域符号变量para 的另一种方式

syms para1 para2 paraN 定义多个复数域符号变量para1 para2 paraN syms para1 para2 paraN Flag 定义多个Flag 指定域符号变量para1 para2 paraN

● 符号参数名不要用处于“字母表中小写字母x 及其两侧的英文字母”开头。 ● Flag 表示参数属性,可具体取以下词条:

positive 表示那些符号变量取正实数; real 表示那些符号变量限定为实数; unreal 表示那些符号变量为不限定的复数。 ● 默认值是复数域符号变量

● sym 指令只能对单变量作用,syms 不能用于对数值、常数相关的定义。

四 自由符号变量

解题通常是围绕自由符号变量进行。

确定自由符号变量的规则:

● 在专门指定变量名的符号运算中,解题一定围绕指定变量名进行。 ● 自动识别符号变量时,字母的优先次序为x ,y,w,z,v 等。

自动识别表达式中自由、独立的符号变量的指令: symvar (expression) 列出表达式中所有自由符号变量

symvar (expression, n) 列出表达式中距离x 最近的n 个自由符号变量

原来版本是

findsym(EXPR) 确认表达式EXPR 中所有自由符号变量

findsym(EXPR, N) 确认表达式EXPR 中距离x 最近的N 个自由符号变量

【例2.1-2】用符号计算研究方程sin(3)0352

=++a -w vz uz 的解。 (1)产生符号表达式

syms u v w z a5 %定义符号参数和变量 f=sym('3'); %定义符号常数 Eq=sin(f)*u*z^2+v*z+f*w-a5;

(2)基本符号变量和自由符号变量的认定

symvar(Eq) % 按字母表顺序认定基本符号变量,注意没有f

ans =

[ a5, u, v, w, z]

symvar(Eq,100) %按离x的距离认定所有自由符号变量

ans =

[ w, z, v, u, a5]

symvar(Eq,1) %仅认定一个自由符号变量

ans =

w

(3)不指定变量情况

result_1=solve(Eq)

result_1 =

a5/3 - (v*z)/3 - (u*sin(3)*z^2)/3

(4)指定变量情况

result_2=solve(Eq,z)

result_2 =

-(v - (v^2 + 4*a5*u*sin(3) - 12*u*w*sin(3))^(1/2))/(2*u*sin(3))

-(v + (v^2 + 4*a5*u*sin(3) - 12*u*w*sin(3))^(1/2))/(2*u*sin(3))

【例2.1-3】对符号变量的辨认。

(1)

syms a b x X Y % 定义基本符号变量

k=sym('3'); % 定义符号常数

z=sym('c*sqrt(d)+y*sin(t)'); % 创建“元”符号表达式

EXPR=a*z*X+(b*x^2+k)*Y; %构成衍生符号表达式

(2)

symvar(EXPR) %列出EXPR中全部基本符号变量,k、z除外

ans =

[ X, Y, a, b, c, d, t, x, y]

(3)

symvar(EXPR,10) %列出EXPR中全部自由符号变量

ans =

[ x, y, t, d, c, b, a, X, Y]

(4)

symvar(EXPR,1) %列出EXPR中最优先的一个自由符号变量

ans =

x

(5)%列出EXPR中最优先的3个自由符号变量symvar(EXPR,3)

ans =

[ x, y, t]

(6)

E3=sym('a*sqrt(theta)') % theta为sqrt函数唯一输入量引起问题??? Error using sym>convertExpression (line 2256)

Conversion to 'sym' returned the MuPAD error: Error: Expecting an arithmetical expression. [sqrt]

Error in sym>convertChar (line 2167)

s = convertExpression(x);

Error in sym>convertCharWithOption (line 2150)

s = convertChar(x);

Error in sym>tomupad (line 1881)

S = convertCharWithOption(x,a);

Error in sym (line 108)

S.s = tomupad(x,'');

E4=sym('a*sqrt(theta123)') % 创建符号表达式时,回避MATLAB自用关键词E4 =

a*theta123^(1/2)

【例2.1-4】symvar确定自由变量是对整个矩阵进行的。

syms a b t u v x y

A=[a+b*x,sin(t)+u;x*exp(-t),log(y)+v]

symvar(A,1)

A =

[ a + b*x, u + sin(t)]

[ x*exp(-t), v + log(y)]

ans =

x

2.1.2符号计算中的算符

与数值计算中的算符在形状、名称和使用方法上几乎完全相同。

2.1.3符号计算中的函数指令

2.1.4符号对象的识别

为了函数指令与数据对象的适配,MATLAB提供了用于识别数据对象属性的指令:class(var) 给出变量var的数据类别(如double,sym等)

isa(var, 'Obj') 若变量var是Obj代表的类型,给出1,表示“真”

whos 给出所有MATLAB内存变量的属性

【例2.1-5】数据对象及其识别指令的使用。

(1)

clear

a=1;b=2;c=3;d=4; % 产生4个数值变量

Mn=[a,b;c,d] % 利用已赋值变量构成数值矩阵

Mc='[a,b;c,d]' % 字符串中的a,b,c,d与前面输入的数值变量无关Ms=sym(Mc) %Ms是一个符号矩阵,它与前面各变量无关

Mn =

1 2

3 4

Mc =

[a,b;c,d]

Ms =

[ a, b]

[ c, d]

(2)

SizeMn=size(Mn)

SizeMc=size(Mc)

SizeMs=size(Ms)

SizeMn =

2 2

SizeMc =

1 9

SizeMs =

2 2

(3)

CMn=class(Mn)

CMc=class(Mc)

CMs=class(Ms)

CMn =

double

CMc =

char

CMs =

sym

(4)

isa(Mn,'double')

isa(Mc,'char')

isa(Ms,'sym')

ans =

1

ans =

1

ans =

1

(5)

whos Mn Mc Ms

Name Size Bytes Class Attributes

Mc 1x9 18 char

Mn 2x2 32 double

Ms 2x2 312 sym

2.1.5符号运算的工作机理

一、符号运算的工作机理

●sym或syms启动MuPAD引擎,开启MuPAD单独的内存空间

●被定义变量保存至Matlab内存空间

●对变量的限定性假设,保存在MuPAD空间中

二、sym和syms指令可作的限定性假设

x=sym('x') % 定义“复数”符号变量x,默认

x=sym('x','real') % 定义“实数”符号变量x

x=sym('x','positive') % 定义“正数”符号变量x

syms x y z % 定义“复数”符号变量x,y,z, 默认

syms x y z real % 定义“实数”符号变量x,y,z

syms x y z positive % 定义“正数”符号变量x,y,z

三、清除变量和撤销假设

clear x % 清除MATLAB内存中的x变量

syms x clear % 撤销MuPAD内存中对变量x的任何假设,而恢复为“复数”变量syms('x','clear')% 功能同上

assumptions(x) % 显示符号变量x的限定性假设

assumptions % 显示MuPUD内存中已带限定性假设的全部符号变量

reset(symengine) % 重启MuPUD引擎,清空MuPUD内存中所有内容

【例2.1-7】

clear all

reset(symengine)

Da=1.2;Dw=1/3;

syms sa sw sx sy sz

syms A B positive

syms C real

(2)

whos

(3)

assumptions

(4)

clear A

who

assumptions

(5)

syms B clear

who

assumptions

2.1.6符号帮助体系

1、“直接调用符号计算指令”的求助。

不依赖mfun,evalin,feval指令调用。

doc symname

doc laplace

help symname

help laplace

2、借助mfun调用的“特殊函数指令”的求助

doc mfunlist

help mfunlist

3、借助evalin,feval指令调用的“MuPAD指令”的求助,需要借助MuPUD帮助浏览器doc(symengine)

【例2.1-8】

(1)

图2.1-1

(2)erfc

图2.1-2 (3)doc(symengine)

图2.1-3

2.2符号数字及表达式的操作

2.2.1双精度数字与符号数字之间的转换

一双精度数字向符号数字的转换

借助sym函数:

sym(Num,'r') 数值类数字Num的“有理分数”表达的符号数字

sym(Num) sym(Num,'r')的简略形式

sym(Num,'f') 数值类数字Num的“两个二进制数”近似表达符号数字sym(Num,'e') 数值类数字Num的带估计误差的“广义有理表达”符号数字sym(Num,'d') 数值类数字Num的“十进制浮点”近似表达符号数字

1、Num是“双精度数字”。

2、sym(Num)中Num和sym('Num')中'Num'的差别

Num:用作符号计算函数的输入量时,是理论数字的双精度近似。

'Num':字符串数字,用作符号计算函数的输入量时,是数字的理论真值。

3、在符号运算中,“双精度数字”会自动地按sym(Num,'r')格式转换为

符号数字。

二符号数字向双精度数字转换

double(Num_sym) 把符号数字Num_sym转换为双精度数字

2.2.2符号数字的任意精度表达形式

为了兼顾计算精度和速度,提供的“变精度”算法指令:

digits 显示当前环境下符号数字“十进制浮点”表示的有效数字位数(默认32位)digits(n) 设定符号数字“十进制浮点”表示的有效数字位数

xs=vpa(x) 据表达式x得到digits指定精度下的符号数字xs

xs=vpa(x,n) 据表达式x得到n位有效数字的符号数字xs,仅在运行的当时起作用。

【例2.2-1】digits, vpa指令的使用。

(1)

reset(symengine) % 重新启动符号计算引擎

sa=sym('1/3+sqrt(2)') % 定义准确符号数

sa =

2^(1/2) + 1/3

(2)

digits %观察有效位数

Digits = 32

format long

a=1/3+sqrt(2) % 定义双精度数

sa_Plus_a=vpa(sa+a,20) % 给出20位有效数字结果

sa_Minus_a=vpa(sa-a,20) %

a =

1.747546895706428

sa_Plus_a =

3.4950937914128567869

sa_Minus_a =

-0.000000000000000022658064826339973669

(3)

sa32=vpa(sa) % 采用默认设置的32位有效数字

digits(48) % 设置48位有效数字

sa5=vpa(sa,5) % 仅影响sa5数位,对其后无影响。

sa48=vpa(sa) %仍为48位有效数字

sa32 =

1.747546895706428382135022057543

sa5 =

1.7475

sa48 =

1.74754689570642838213502205754303141190300520871

2.2.3符号表达式的基本操作

collect(合并同类项)

factor(进行因式分解)

numden(提取公因式)等

最常用:

simple(EXPR) 把EXPR(符号表达式或矩阵)转换成最简形式

【例2.2-2】简化

3

2

3

8

12

6

1

+

+

+

=

x

x

x

f。

syms x

f=(1/x^3+6/x^2+12/x+8)^(1/3)

g1=simple(f)

f =

(12/x + 6/x^2 + 1/x^3 + 8)^(1/3)

g1 =

1/x + 2

2.2.4表达式中的置换操作

一公因子法简化表达

RS=subexpr(S) 从S中自动提取公因子sigma,并把采用sigma重写的S赋给RS RS=subexpr(S,'w') 从S中自动提取公因子,记为w,并把采用w重写的S赋给RS [RS,w]=subexpr(S,'w') 该调用格式的效果与RS=subexpr(S, 'w')相同

S:符号表达式、符号表达式矩阵

【例2.2-3】对符号矩阵?

?

?

???d c b a 进行特征向量分解。 (1)

clear % 清空所有内存变量

A=sym('[a b;c d]') % 经字符串直接定义符号矩阵

[V,D]=eig(A) % 符号矩阵的特征值、特征向量分解 A =

[ a, b] [ c, d] V =

[(a/2+d/2-a^2-2*a*d+d^2+4*b*c)^(1/2)/2)/c-d/c, (a/2+d/2+(a^2-2*a*d+ d^2+4*b*c)^(1/2)/2)/c-d/c] [ 1, 1] D = [a/2 + d/2 - (a^2 - 2*a*d + d^2 + 4*b*c)^(1/2)/2, 0] [ 0, a/2 + d/2 + (a^2 - 2*a*d + d^2 + 4*b*c)^(1/2)/2]

(2)

subexpr([V;D]) % 自动提取公因式 who % 列出工作内存中的变量 sigma =

(a^2 - 2*a*d + d^2 + 4*b*c)^(1/2) ans =

[ (a/2 + d/2 - sigma/2)/c - d/c, (a/2 + d/2 + sigma/2)/c - d/c] [ 1, 1] [ a/2 + d/2 - sigma/2, 0] [ 0, a/2 + d/2 + sigma/2]

Your variables are:

A D V ans sigma

(3)

Dw=subexpr(D,'w') % 把自动提取的公因式记为w,Dw 是用w 重记D 后的表达 w =

(a^2 - 2*a*d + d^2 + 4*b*c)^(1/2) Dw =

[ a/2 + d/2 - w/2, 0] [ 0, a/2 + d/2 + w/2]

(4)

[RVD,w]=subexpr([V;D],'w') % <7> % 给出合成矩阵[V;D]的公因式表达方式 RVD =

[ (a/2 + d/2 - w/2)/c - d/c, (a/2 + d/2 + w/2)/c - d/c] [ 1, 1] [ a/2 + d/2 - w/2, 0] [ 0, a/2 + d/2 + w/2] w =

(a^2 - 2*a*d + d^2 + 4*b*c)^(1/2)

二 通用置换指令

RES=subs(ES,old,new) 用new 置换ES 中的old 后产生RES

RES=subs(ES,new) 用new 置换ES 中的自由变量后产生RES

【例2.2-4】用简单算例演示subs的置换规则。

(1)产生符号函数

syms a x;f=a*sin(x)+5

f =

a*sin(x)+5

(2)符号表达式置换

f1=subs(f,'sin(x)',sym('y')) %<2> class(f1)

f1 = % 符号表达式

a*y+5

ans =

sym

(3)符号常数置换

f2=subs(f,{a,x},{2,sym('pi/3')}) % <3> a被双精度数字置换,x被符号数字置换class(f2)

f2 = %

3^(1/2)+5

ans =

sym

(4)双精度数值置换

f3=subs(f,{a,x},{2,pi/3}) %<4> class(f3)

f3 = % 双精度数值变量

6.7321

ans =

double

(5)数值数组置换之一

f4=subs(subs(f,a,2),x,0:pi/6:pi) %<5> class(f4)

f4 = % 双精度数值变量

5.0000

6.0000 6.7321

7.0000 6.7321 6.0000 5.0000 ans =

double

(6)数值数组置换之二

f5=subs(f,{a,x},{0:6,0:pi/6:pi}) %<6> class(f5)

f5 = % 双精度数值变量

5.0000 5.5000

6.7321 8.0000 8.4641

7.5000 5.0000 ans =

double

2.3

符号微积分

2.3.1

极限和导数的符号计算

大学本科高等数学中的大多数微积分问题,都能用符号计算解决,手工笔算演绎的烦劳都可以由计算机完成。

limit(f,v,a) 求极限 )(lim v f a

v →

【例2.3-1】试求kx

x x ??

?

??-∞

→11lim 。

syms x k

Lim_f=limit ((1-1/x)^(k*x),x ,inf) Lim_f = exp(-k)

diff(f,v,n) 求n

n dv f

d (n 缺省时,默认n=1) 【例2.3-2】求??

????=x x t t a f ln cos 3求dx df , 22dt f d ,dtdx f

d 2。

syms a t x;f=[a,t^3;t*cos(x), log(x)]; df=diff (f) dfdt2=diff(f,t,2) dfdxdt=diff(diff(f,x),t) df =

[ 0, 0] [ -t*sin(x), 1/x] dfdt2 =

[ 0, 6*t] [ 0, 0] dfdxdt =

[ 0, 0] [ -sin(x), 0]

2.3.2 序列/级数的符号求和

symsum(f,v,a,b) 求f 在变量v 取遍[a, b]中所有整数时的和。a,b 缺省时默认求和区间[0, v-1]。

【例2.3-8】求∑-=1

03

],[t t k t ,∑∞

=??

?

???--12

)1(,)12(1k k k k 。 syms k t;f1=[t k^3];f2=[1/(2*k-1)^2,(-1)^k/k];

s1=simple(symsum (f1)) % f1的自变量被确认为t s2=simple(symsum (f2,1,inf)) % f1的自变量被确认为k s1 =

[ 1/2*t*(t-1), k^3*t] s2 =

[ 1/8*pi^2, -log(2)]

2.3.3 符号积分

intf=int(f,v) 求f 对变量v 的不定积分 intf=int(f,v,a,b) 求f 对变量v 的定积分

【例2.3-9】求

dx x x

x +?11。

clear syms x

f=sqrt((1+x)/x)/x s=int(f,x) f =

((x + 1)/x)^(1/2)/x s =

- atan((1/x + 1)^(1/2)*i)*2*i - 2*(1/x + 1)^(1/2)

【例2.3-11】求积分???

++2

1

22222)(x x y

x xy

dzdydx z y x 。

syms x positive syms y z

F2=int (int (int (x^2+y^2+z^2,z,sqrt(x*y),x^2*y),y,sqrt(x),x^2),x,1,2) VF2=vpa (F2) %积分结果用32位数字表示 F2 =

(14912*2^(1/4))/4641 - (6072064*2^(1/2))/348075 + (64*2^(3/4))/225 + 1610027357/6563700 VF2 =

224.92153573331143159790710032805

隐函数方程求解以及导函数——符号计算和数值计算结合

这个问题可以作为符号运算和数值运算结合的很好的一个例子:利用隐函数求导公式对f 进行一二阶求导,然后利用solve得到B关于t的一、二阶导数的符号表达式,然后再利用eval函数转化成数值表达式:整个代码如下: 1. 2.syms A B ; 3.r=1;beta=pi/5;rho=2; 4.%f的符号表达式 5.f=(r*sin(A)-rho*sin(3*B))*(cos(beta)-sin(beta)*cos(3*B)-... 6. sin(beta)*sin(3*B)*tan(B))-(r*cos(A)-rho*cos(beta)*cos(3*B))* tan(B); 7.%将A,B分别用90*t和B(t)替换,为的是好利用符号diff函数来求对B关于 t的隐函数F求导 8. F = subs(f,{'A','B'},{'90*t','B(t)'}); 9.dFt = diff(F,'t');%一阶导数 10.%将diff(B(t), t)用dBt替换,为的是下一步方便用solve求解diff(B(t), t) 的表达式 11.dFt = subs(dFt,'diff(B(t), t)','dBt'); 12.dBt = solve(dFt,'dBt');%得到B关于t的一阶导数的表达式 13.%将dBt用dBt(t)替换,为的是告诉MATLAB,dBt是关于t的函数,能够进一步 求导 14.dFt_ = subs(dFt,'dBt','dBt(t)'); 15.ddFt = diff(dFt_,'t');%二阶导数 16.%替换'diff(dBt(t), t)','diff(B(t), t)',方便求解ddBt的表达式 17.ddFt = subs(ddFt,{'diff(dBt(t), t)','diff(B(t), t)'},{'ddBt','dBt(t)'}); 18.ddBt = solve(ddFt,'ddBt');%求解B关于t的二阶导数的表达式 19.B = @(t) fzero(@(B) (r*sin(90*t)-rho*sin(3*B))*(cos(beta)-... 20. sin(beta)*cos(3*B)-sin(beta)*sin(3*B)*tan(B))-... 21. (r*cos(90*t)-rho*cos(beta)*cos(3*B))*tan(B),1);%B关于t的函数 22.eval(['dBt = @(t) ',char(dBt),';' ])%利用eval函数将符号dBt的表达式 转化为数值函数 23.eval(['ddBt = @(t) ',char(ddBt),';' ]) 24.R = 1; 25.C = @(t) R*cos(90*t)/tan(B(t))+sin(90*t);%C的表达式 26.t = 0.2:0.1:2; 27.plot(t,arrayfun(@(T) C(T),t) )%画C关于t的图 28. 复制代码 需要说明的是得到B的函数句柄B(t)后我们可以利用导数的定义来近似表达式dBt,和ddBt,这样的优点是速度快,但是不精确。上述得到的dBt,ddBt,较为精确,但是计算量比较大。 1. 2.>> (B(1)-B(1.00001))/-0.00001

matlab符号运算

MATLAB程序设计教程(9)——MATLAB符号计算 by:ysuncn(欢迎转载,请注明原创信息) 第9章MATLAB符号计算 9.1 符号对象 9.2 符号微积分 9.3 级数 9.4 符号方程求解 9.1 符号对象 9.1.1 建立符号对象 1.建立符号变量和符号常量 MATLAB提供了两个建立符号对象的函数:sym和syms,两个函数的用法不同。 (1) sym函数 sym函数用来建立单个符号量,一般调用格式为: 符号量名=sym('符号字符串') 该函数可以建立一个符号量,符号字符串可以是常量、变量、函数或表达式。 应用sym函数还可以定义符号常量,使用符号常量进行代数运算时和数值常量进行的运算不同。

下面的命令用于比较符号常量与数值常量在代数运算时的差别。 (2) syms函数 函数sym一次只能定义一个符号变量,使用不方便。MATLAB提供了另一个函数syms,一次可以定义多个符号变量。syms函数的一般调用格式为: syms 符号变量名1 符号变量名2 … 符号变量名n 用这种格式定义符号变量时不要在变量名上加字符串分界符(‘),变量间用空格而不要用逗号分隔。 2.建立符号表达式 含有符号对象的表达式称为符号表达式。建立符号表达式有以下3种方法: (1)利用单引号来生成符号表达式。 (2)用sym函数建立符号表达式。 (3) 使用已经定义的符号变量组成符号表达式。 9.1.2 符号表达式运算 1.符号表达式的四则运算 符号表达式的加、减、乘、除运算可分别由函数symadd、symsub、symmul和symdiv来实现,幂运算可以由sympow来实现。

符号计算(2)

5.1微分方程的符号解法 5.1.1符号解法和数值解法的互补作用5.1.2求微分方程符号解的一般指令5.1.3微分方程符号解示例 【例5.4-1】求d x d t y d y d t x ==- ,的解。 clear all %<1> S=dsolve('Dx=y,Dy=-x') disp(' ') disp(['微分方程的解',blanks(8),'x',blanks(20),'y']) disp([S.x,S.y]) S = y: [1x1 sym] x: [1x1 sym] 微分方程的解 x y [ C2*cos(t) + C1*sin(t), C1*cos(t) - C2*sin(t)] 【例5.4-2】图示微分方程2) (y y x y' -' =的通解和奇解的关系。(1) clear all %<1> y=dsolve('(Dy)^2-x*Dy+y=0','x') %<2> y = x^2/4 C3*x - C3^2 (2) clf,hold on hy1=ezplot(y(1),[-6,6,-4,8],1); %<4> set(hy1,'Color','r','LineWidth',5) for k=-2:0.5:2 %<6> y2=subs(y(2),'C3',k); %<7> ezplot(y2,[-6,6,-4,8],1) end %<9> hold off box on

legend('奇解','通解','Location','Best') ylabel('y') title(['\fontsize{14}微分方程',' (y '')^2 – xy '' + y = 0 ','的解']) -6 -4-2 0246 -4-2 2 4 6 8 x 微分方程 (y ')2 – xy ' + y = 0 的解 y 奇解通解 图 5.4-1 通解和奇解曲线 【例5.4-3】求解两点边值问题:0)5(,0)1(,32==='-''y y x y y x 。 (1) y=dsolve('x*D2y-3*Dy=x^2','y(1)=0,y(5)=0','x') y = (31*x^4)/468 - x^3/3 + 125/468 (2) xn=-1:6; yn=subs(y,'x',xn) ezplot(y,[-1,6]) hold on plot([1,5],[0,0],'.r','MarkerSize',20) text(1,1,'y(1)=0') text(4,1,'y(5)=0') title(['x*D2y - 3*Dy = x^2',', y(1)=0,y(5)=0']) hold off yn = Columns 1 through 7 0.6667 0.2671 0 -1.3397 -3.3675 -4.1090 0.0000

Mathematica强大的数值计算和符号运算数学专用软件

Mathematica强大的数值计算和符号运算数学专用软件 Mathematica是由美国物理学家Stephen Wolfram领导的Wolfram Research开发的数学系统软件。它拥有强大的数值计算和符号计算能力,在这一方面与Maple类似,但它的符号计算不是基于Maple上的,而是自己开发的。 Mathematica系统介绍 Mathematica的基本系统主要是用C语言开发的,因而可以比较容易地移植到各种平台上,Mathematica是一个交互式的计算系统,计算是在用户和Mathematica互相交换、传递信息数据的过程中完成的。Mathematica系统所接受的命令都被称作表达式,系统在接受了一个表达式之后就对它进行处理,然后再把计算结果返回。Mathematica对于输入形式有比较严格的规定,用户必须按照系统规定的数学格式输入,系统才能正确地处理,不过由于3.0版本(及以后版本)引入输入面板,并且可以修改、重组输入面板,因此以前版本输入指令时需要不断切换大小写字符的繁琐方式得到很好的改善。3.0版本可以用各种格式保存文件和剪贴内容,包括RTF、HTML、BMP等格式。 Mathematica是一个功能强大的数学软件,也是目前国内外最常用的数学软件之一。该软件不但可以解决数学中的数值计算问题,还可以解决符号演算问题,并且能够方便地绘出各种函数图形。不管是一个正在学习的学生,还是教师或科研人员,当在学习或科学研究中遇到棘手的数学问题时,Mathematica会提供的各种命令,可以避免做繁琐的数学推导和计算,帮助方便地解决所遇到的很多数学问题,使能省出更多的时间和精力做进一步的学习和探索。目前,我们在国内外的科研论文、教材等很多地方都能看到Mathematica的身影。此外,Mathematica 具有简单、易学、界面友好和使用方便等特点,只要你有一定的数学知识并了解计算机的基本操作方法,就能快速掌握Mathematica大部分主要功能,并能用Mathematica解决在学习、教学和科学研究中遇到的数学求解问题。 Mathematica功能简介 1、数值计算和符号计算

现代通信原理指导书 第七章 信源编码 习题详解

第七章 信源编码 7-1已知某地天气预报状态分为六种:晴天、多云、阴天、小雨、中雨、大雨。 ① 若六种状态等概出现,求每种消息的平均信息量及等长二进制编码的码长N 。 ② 若六种状态出现的概率为:晴天—;多云—;阴天—;小雨—;中雨—;大雨—。试计算消息的平均信息量,若按Huffman 码进行最佳编码,试求各状态编码及平均码长N 。 解: ①每种状态出现的概率为 6,...,1,6 1 ==i P i 因此消息的平均信息量为 ∑=- ===6 1 22 /58.26log 1 log i i i bit P P I 消息 等长二进制编码的码长N =[][]316log 1log 22=+=+L 。 ②各种状态出现的概率如题所给,则消息的平均信息量为 6 2 1 2222221log 0.6log 0.60.22log 0.220.1log 0.10.06log 0.060.013log 0.0130.007log 0.0071.63/i i i I P P bit - == = ------ ≈ ∑消息 Huffman 编码树如下图所示: 由此可以得到各状态编码为:晴—0,多云—10,阴天—110,小雨—1110,中雨—11110, 大雨—11111。 平均码长为: 6 1 10.620.2230.140.0650.01350.0071.68 i i i N n P == =?+?+?+?+?+? =∑— 7-2某一离散无记忆信源(DMS )由8个字母(1,2,,8)i X i =???组成,设每个字母出现的概率分别为:,,,,,,,。试求: ① Huffman 编码时产生的8个不等长码字; ② 平均二进制编码长度N ; ③ 信源的熵,并与N 比较。 解:①采用冒泡法画出Huffman 编码树如下图所示 可以得到按概率从大到小8个不等长码字依次为: 0100,0101,1110,1111,011,100,00,1087654321========X X X X X X X X

新旧图幅编号

我国基本比例尺地形图分幅与编号的计算方法 韩丽蓉 (青海大学水电系,青海西宁 810016) 摘要:通过实例探讨了我国基本比例尺地形图分幅与编号的计算方法,此方法可以帮助使用者快速地由某点的经纬度值计算出高斯投影带带号和某比例尺地形图的图幅编号,在测绘工作中具有一定的实用性。 关键词:分幅;编号;六度带;中央子午线经度 中图分类号:K 99 文献标识码:B 文章编号:1006-8996(2006)06-0079-04 1 高斯分带投影 1.1 基本概念 在地理坐标中,经度是以经过英国格林威治天文台的子午面作为起算点(零度),自西向东逆时针至180°为东经,自东向西顺时针从0°至180°为西经,东、西经180°经线是重合的。地图投影是把不可展的 地球椭球体面上的经纬网,按照一定的数学法则转绘到平面上[1,2]。我国的8种国家基本比例尺地形图 (1:1000000~1:5000)中,除了1:1000000万地形图采用国际通用的正轴等角割圆锥投影外,其余7种国家基本比例尺地形图统一采用高斯投影。 高斯投影中限制长度变形的最有效方法是按一定经差将地球椭球面划分成若干投影带,通常投影分为六度带和三度带。分带时既要控制长度变形使其不大于测图误差,又要使带数不致过多以减少换带计算工作。我国1:500000~1:25000的比例尺地形图多采用六度带高斯投影,1:10000~1:5000的地形图采用三度带高斯投影。我国基本比例尺地形图的分幅与编号需要用到某地所在的1:1000000 地形图(经差6° )的中央子午线经度,故需计算该六度带的带号及中央子午线经度。1.2 投影带带号和中央子午线经度的计算方法 1.2.1 六度带 从格林威治零度经线起,每隔经差6°分为一个投影带,自西向东逆时针分带,全球依次编号为1,2, 3,……60,每带中间的子午线称为中央子午线[1,2]。 东半球从经度0°逆时针回算到东、西经180°,投影带号为1~30。假如知道东半球某地区的平均大地经度L 东,则其投影带带号M 东和中央子午线经度L 6东的计算公式为: M 东=[L 东Π6](取整数商)+1(有余数时);L 6东=(6M 东-3)° (东经)西半球投影带从东、西经180°逆时针回算到0°,投影带号为31~60,假如知道西半球某地区的平均大地经度L 西,则其投影带带号M 西和中央子午线经度L 6西的计算公式为: M 西=[(360°-L 西)Π6](取整数商)+1(有余数时)=[(180°-L 西)Π6](取整数商)+1(有余数时)+30;L 6西={360°-(6M 西-3)°}(西经) 1.2.2 三度带 自东经115°子午线起,每隔经差3°自西向东分带,依次编号为1,2,3,……120[1,2] 。 东半球有60个投影带,编号为1~60,假如知道东半球某地区的平均大地经度L 东,其投影带带号N 东和中央子午线经度L 3东的计算公式为: 收稿日期:2006-07-10 作者简介:韩丽蓉(1967—),女,撒拉族,青海循化人,副教授,硕士。第24卷 第6期2006年12月 青海大学学报(自然科学版)Journal of Qinghai University (Nature Science ) Vol 124No 16Dec 12006

数学运算符号

数学符号的种类 数量符号 如:i,2+i,a,x,自然对数 底e,圆周率π。 运算符号 如加号(+),减号(-), 乘号(×或·),除号(÷或/),两个集合的并集(?),交集(?),根号(↗),对数(log,lg,ln),比(:),微分(dx),积分(?),曲线积分(?)等。 关系符号 如“=”是等号,“≈”是近 似符号,“≠”是不等号,“>” 是大于符号,“<”是小于符号,“?”是大于或等于符号(也可写 作“≤”),“?”是小于或等于 符号(也可写作“≥”),。“→”表示变量变化的趋势,“∽”是相 似符号,“≌”是全等号,“?” 是平行符号,“≧”是垂直符号,“↘”是成正比符号,(没有成反 比符号,但可以用成正比符号配倒 数当作成反比)“?”是属于符号,“?”是“包含”符号等。 结合符号 如小括号“()”中括号“[]”,大括号“{}”横线“—” 性质符号 如正号“+”,负号“-”, 绝对值符号“| |”正负号“±” 省略符号 如三角形(△),直角三角形(Rt△),正弦(sin),余弦(cos),x的函数(f(x)),极限(lim),角(?), ?因为,(一个脚站着的,站不住) ?所以,(两个脚站着的,能站住)总和(↖),连乘(?),从n个元素中每次取出r个元素所有不同的组合数(C(r)(n) ),幂(A,Ac,Aq,x^n)等。 排列组合符号 C-组合数 A-排列数 N-元素的总个数 R-参与选择的元素个数 !-阶乘,如5! =5×4×3×2×1=120 C-Combination- 组合 A-Arrangement-排列 离散数学符号(未全) ?全称量词 ?存在量词 ├ 断定符(公式在L中可证) ╞ 满足符(公式在E上有效,公式在E上可满足) ┐ 命题的“非”运算 ? 命题的“合取”(“与”)运算 ? 命题的“析取”(“或”,“可兼或”)运算 → 命题的“条件”运算 ?命题的“双条件”运算的 A<=>B 命题A 与B 等价关系 A=>B 命题 A与 B的蕴涵关系 A* 公式A 的对偶公式 wff 合式公式

用数值与符号2种方法给定函数的定积分,并对结果进行比较课程设计

课程设计(论文)任务书 软件学院学院专业班 一、课程设计(论文)题目用数值与符号2种方法给定函数的定积分,并对结果 进行比较 二、课程设计(论文)工作自 1年6月27日起至1年 7月1日止。 三、课程设计(论文) 地点: 四、课程设计(论文)内容要求: 1.本课程设计的目的 (1)熟练掌握MATLAB语言的基本知识和技能; (2)熟悉MATLAB下的程序设计; (3)熟悉MATLAB数值与符号求给定函数的定积分; (4)培养分析、解决问题的能力;提高学生的科技论文写作能力。 2.课程设计的任务及要求 1)基本要求: (1)熟练掌握MATLAB的编程语句,掌握MATLAB的基本内容,了解MATLAB理论与实际相结合的优势; (2)利用matlab中的编程,掌握用数值积分与符号积分求解定函数定积分的方法,并学会用科学的方法分析实验结果 2)课程设计论文编写要求 (1)要按照课程设计模板的规格书写课程设计论文 (2)论文包括目录、正文、心得体会、参考文献等 (3)课程设计论文用B5纸统一打印,装订按学校的统一要求完成 3)答辩与评分标准: (1)完成原理分析:20分; (2)完成设计过程:40分; (3)完成调试:20分; (4)回答问题:20分; 4)参考文献: (1)刘卫国.MATLAB程序设计与应用(第二版). 北京:高等教育出版社,2008. 5)课程设计进度安排 内容天数地点 构思及收集资料2图书馆 编程设计与调试1实验室

撰写论文2图书馆、实验室 学生签名:冯玉好 2011年7月1日 课程设计(论文)评审意见 (1)完成原理分析(20分):优()、良()、中()、一般()、差();(2)设计分析(20分):优()、良()、中()、一般()、差();(3)完成调试(20分):优()、良()、中()、一般()、差();(4)翻译能力(20分):优()、良()、中()、一般()、差();(5)回答问题(20分):优()、良()、中()、一般()、差();(6)格式规范性及考勤是否降等级:是()、否() (7) 总评分数优()、良()、中()、一般()、差(); 评阅人:职称: 2011年7月1日

Matlab基础(数值计算、符号计算和绘图)

Matlab基础(数值计算、符号计算和绘图) 第一章 MATLAB帮助 1.常用的帮助命令 Help lookfor which set/get doc type edit helpin 2.帮助窗口 3.演示系统 第二章MATLAB基础 1.MATLAB特点 基本计算单元是矩阵、向量,功能的扩展性(除了基本部分外还有专业扩展部分) 2.MATLAB组成 MATLAB MATLAB Compiler Simulink Stateflow RTW 3.MATLAB主要功能 数学计算开发工具(MATLAB Editor M-Lint Code Checker MATLAB Profiler Directory Reports) 数据的可视化交互式编辑创建图形集成的算法开发编程语言和环境图形用户界面开发环境--GUIDE 开放性、可扩展性强专业应用工具箱 4.MATLAB变量 需要注意系统变量,如:ans eps i j pi 5.MATLAB数据类型 需要注意在命令窗口中可以通过输入help datatypes命令来获取MATLAB的数据类型列表。class函数可用来获取一个变量的数据类型。 需要注意MATLAB中变量默认的类型为双精度浮点型(double)。 MATLAB的数据类型名称同样就是数据类型转换的函数。 6.MATLAB路径管理 MATLAB搜索路径(菜单栏File-Set Path) MATLAB目录管理命令(path which addpath rmpath) 7.MATLAB工作空间 工作空间的存取(save load) 工作空间管理命令(who whos clear pack size disp length) 8.MATLAB的其他命令 管理命令和函数(help doc what type lookfor which path) 与文件和操作系统有关的命令(cd dir delete getenv ! unix) 控制命令窗口)(cedit clc clf home more) 启动和退出MATLAB(quit startup) 一般信息(info subscribe hostid whatsnew ver ) 第三章 MATLABA数据 1.矩阵的建立方式 命令窗口中直接输入 通过语句和函数建立矩阵(from:step:to linspace logspace)

完整word版,MATLAB符号运算

符号运算 科学计算包括数值计算和符号计算两种计算,数值计算是近似计算;而符号计算则是绝对精确的计算。 符号变量的生成和使用 1、符号变量、符号表达式和符号方程的生成 (1)、使用sym函数定义符号变量和符号表达式 单个符号变量 sqrt(2) sym(sqrt(2)) %显示精确结果 a=sqrt(sym(2)) %显示精确结果 double(a) sym(2)/sym(3) %显示精确结果 2/5+1/3 sym(2/5+1/3) %显示精确结果 sym(2)/sym(5)+sym(1)/sym(3) %显示精确结果 sym函数定义符号表达式:单个变量定义法,整体定义法 单个变量定义法 a=sym('a') b=sym('b') c=sym('c') x=sym('x') f=a*x^2+b*x+c 整体定义法 f=sym('a*x^2+b*x+c') g=f^2+4*f-2 (2)、使用syms函数定义符号变量和符号表达式 一次可以创建任意多个符号变量syms var1 var2 var3… syms a b c x f=a*x^2+b*x+c g=f^2+4*f-2 (3)、符号方程的生成 函数:数字和变量组陈的代数式 方程:函数和等号组成的等式 用sym函数生成符号方程: equation1=sym('sin(x)+cos(x)=1') 2、符号变量的基本操作 (1)、findsym函数用于寻找符号变量 findsym(f):找出f表达式中的符号变量 findsym(s,n):找出表达式s中n个与x接近的变量 syms a alpha b x1 y findsym(alpha+a+b)

符号运算

与Wolfram公司(Mathematics的开发公司)相比,Mathworks公司一直以矩阵计算和强大的数据处理能力见长,而符号计算非强项。1993年,mathworks公司从加拿大Waterloo Maple公司购买了maple的内核技术,作为MA TLAB符号运算与推导的平台,开发了用以进行符号计算的基本符号运算工具箱和扩展符号运算工具箱,从而解决了MA TLAB在符号计算方面的缺陷。 MA TLAB7.0的符号运算工具箱已上升到3.1.1版本,它几乎可以完成所有的符号运算功能,包括符号函数与符号方程的定义、运算、复合、化简、符号矩阵的计算、符号微分、符号积分、符号代数方程、符号微分方程的求解、符号积分变换和符号特殊函数。 在MA TLAB7.0的符号数学工具箱中,符号表达式含有符号函数和符号方程两种形式,它是表示数字、函数或变量的字符串或字符串组。字符就是符号变量的值。因此在MA TLAB的源程序中符号表达式被表示成字符串和字符串组。符号函数和符号方程的区别是符号函数没有等号,而符号方程必须有等号。 符号变量的定义 MA TLAB有默认的符号自变量,但在各种情况下默认的自变量是不同的。系统默认的自变量主要有x、x1、y、y1、z、v、u、t、theta、alpha。对于这些变量MA TLAB 的默认规则与平时数学习惯大致相同,即: 当这些变量中的某一个与其他变量组成符号数学表达式时,这个变量即为默认的自变量; 当这些变量中的某几个组成符号数学表达式是,默认自变量的顺序是:x>x1>y>y1>z>v>u>t>theta>alpha 例如:

当数学表达式为cos(2*x*a^2)时,默认的自变量为x; 当数学表达式为cos(2*x*v)时,默认的自变量为x; 当数学表达式为cos(2*t*alpha)时,默认的自变量为t; 符号变量可以通过命令syms和sym定义,syms命令一个可以定义一个或多个符号变量。sym一个只能定义一个符号变量。 >> syms x y z t >> who Y our variables are: t x y z >> syms u >> who Y our variables are: t u x y z >> x=sym('x'); >> t=sym('t'); >> z=sym('z'); >> y=sym('y'); >> who Y our variables are: ans t x y z 符号表达式的定义 MA TLAB7.0当中,符号表达式可以通过基本赋值语句,采用单引号或sym/syms

第4章 符号运算

第4章符号运算 符号运算的对象是非数值的符号对象,对于像公式推导和因式分解等抽象的运算都可以通过符号运算来解决。 M A T L A B2006b对应的是S y m b o l i c M a t h T o o l b o x3.1.5。 符号工具箱能够实现微积分运算、线性代数、表达式的化简、求解代数方程和微分方程、不同精度转换和积分变换,符号计算的结果可以以图形化显示,M A T L A B 的符号运算功能十分完整和方便。 符号运算的特点: (1)符号运算以推理解析的方式进行,计算的结果不受计算累积误差影响; (2)符号计算可以得出完全正确的封闭解和任意精度的数值解; (3)符号计算命令调用简单; (4)符号计算所需要的时间较长。 4.1符号对象的创建和使用 创建符号对象都可以使用s y m和s y m s函数来实现。 1.s y m函数 S=s y m(s,参数)%由数值创建符号对象 S=s y m(…s?,参数)%由字符串创建符号对象 当被转换的s是数值时,参数可以是'd'、'f'、'e'或'r'四种格式,当被转换的's'是字符串时,参数可以是'r e a l'、'u n r e a l'和'p o s i t i v e'三种格式 2.s y m s函数 s y m s(s1,s2,s3,…,参数) 或s y m s s1,s2,s3,…,参数%创建多个符号变量 s y m s与s y m的关系是:s y m s(s1,s2,s3,…,参数)等同于s1=s y m('s1',参数),s2=s y m('s2',参数)…… 3.c l a s s函数 s=c l a s s(x)%返回对象x的数据类型 4.1.2符号常量和符号变量 符号常量是不含变量的符号表达式,用s y m函数来创建;符号变量使用s y m和s y m s 函数来创建。 例如: >>a1=s y m(s i n(2))%用数值创建符号常量 >>a2=s y m(s i n(2),'f')%用十六进制浮点表示 >>a1=s y m('a','u n r e a l')%用字符串创建符号变量 4.1.3符号表达式 符号表达式是由符号常量和符号变量等构成的表达式,使用s y m和s y m s函数来创建。 例4-3分别使用s y m和s y m s函数创建符号表达式。 >>s y m s a b c x

符号运算

六符号运算 符号矩阵的生成 在MATLAB中输入符号向量或者矩阵的方法和输入数值类型的向量或者矩阵在形式上很相像,只不过要用到符号矩阵定义函数sym,或者是用到符号定义函数syms,先定义一些必要的符号变量,再像定义普通矩阵一样输入符号矩阵。 1.用命令sym定义矩阵: 这时的函数sym实际是在定义一个符号表达式,这时的符号矩阵中的元素可以是任何的符号或者是表达式,而且长度没有限制,只是将方括号置于用于创建符号表达式的单引号中。如下例:注意:标点符号的区别 例1-1 >> sym_matrix = sym('[a b c;Jack,Help Me!,NO WAY!]') sym_matrix = [a b c] [Jack Help Me! NO WAY!]

>> sym_digits = sym('[1 2 3;a b c;sin(x)cos(y)tan (z)]') sym_digits = [1 2 3] [a b c] [sin(x)cos(y)tan(z)] 2.用命令syms定义矩阵 先定义矩阵中的每一个元素为一个符号变量,而后像普通矩阵一样输入符号矩阵。 例1-2 >> syms a b c ; >> M1 = sym('Classical'); >> M2 = sym(' Jazz'); >> M3 = sym('Blues') >> syms_matrix = [a b c;M1,M2,M3;2 3 5] syms_matrix = [ a b c] [Classical Jazz Blues] [ 2 3 5]

3把数值矩阵转化成相应的符号矩阵。 数值型和符号型在MATLAB中是不相同的,它们之间不能直接进行转化。MATLAB提供了一个将数值型转化成符号型的命令,即sym。 例1-3 >> Digit_Matrix = [1/3 sqrt(2)3.4234;exp(0.23)log(29)23^(-11.23)] >> Syms_Matrix = sym(Digit_Matrix) 结果是: Digit_Matrix = 0.3333 1.4142 3.4234 1.2586 3.3673 0.0000 Syms_Matrix = [ 1/3,sqrt(2), 17117/5000] [5668230535726899*2^(-52),7582476122586655*2^ (-51),5174709270083729*2^(-103)] 注意:矩阵是用分数形式还是浮点形式表示的,将矩阵转化成符号矩阵后,都将以最接近原值的有理数形式表示或

实验10 符号计算基础与符号微积分(第7章)

实验10 符号计算基础与符号微积分 (第7章 MATLAB 符号计算) 一、实验目的 二、实验内容 1. 利用符号表达式求值 已知x=6,y=5,利用符号表达式求 z = 提示:定义符号常数x=sym(‘6’),y=sym(‘5’)。 程序及运行结果(建议在命令窗口输入命令并运行): 2. 分解因式 (1) x 4-y 4 (2) 5135 程序及运行结果(建议在命令窗口输入命令并运行): 《数学软件》课内实验 王平

3. 化简表达式 21212 483(1)sin cos cos sin (2) 21x x x ββββ++-+ 4. 符号矩阵运算 已知 12010100100,010,001101a b c P P A d e f g h k ???? ?? ??????===?????? ???????????? 完成下列运算: (1) B=P 1·P 2·A 。 (2) B 的逆矩阵并验证结果。 (3) 包括B 矩阵主对角线元素的下三角阵。 (4) B 的行列式值。 5. 用符号方法求下列极限或导数 sin tan 301(1)2(1)1cos(2)(1)lim (2)lim ,',''sin x x x x x e e x y y y x x +→→-+---=求 3222(4),,, cos ln x a t dA d A d A A dx dt dxdt t x x ??=???? 已知分别求 程序及运行结果(建议在命令窗口输入命令并运行): 2222 0,1 (5)(,)(2),, x y xy x y y f f x y x x e x x y ---==??=-???已知求 6. 用符号方法求下列积分 48(1) (2)1dx x x ++?

图幅编号的计算

图幅编号的计算 经纬度(λ,φ) ,可按下式计算出1:100万比例尺的地形图图幅编号 a=[φ/4o]+1 b=[λ/6o]+31 某点经度为121o31‘30“,纬度为31o16‘40“,计算其所在1:100万比例尺地形图图幅的编号 a=[ 121o31‘30“/4o]+1=8 b=[31o16‘40“/6o]+31=51 由a可得出,其所对应的字符码为H 故该点所在1:100万比例尺地形图图幅的编号为H51 (31+16/60+40/3600)/4=31.2778/4=7.8194 已知图幅内某点的经纬度(λ,φ) ,可按下式计算出所求比例尺地形图在1:100万比例尺的地形图图号后的行号和列号 c=4o/△φ-[(φ/4o)/△φ] d=[(λ/6o)/△λ]+1 ( )——商取余;c——所求比例尺地形图的行号; [ ]——商取整;d——所求比例尺地形图的列号; φ——图幅内某点的纬度; λ——图幅内某点的经度; △φ——所求比例尺地形图分幅的纬差; △λ——所求比例尺地形图分幅的经差; 例:某点经度为121o31‘30“,纬度为31o16‘40“,计算其所在1:1万比例尺地形图图幅的编号 根据其所在1:100万比例尺图幅及其比例尺(1:10000),编号的前四位代码为H51G,然后按1:10000的分幅纬度差和经度差: △φ=2’30’’,△λ=3’45’’ (1:50万△φ=2o△λ=3o,1:20万40’,1o,1:10万20’,30’,1:5万10’,15’,1:2.5万5’,7’30’’,1:1万2’30’’,3’45’’) 计算其行号和列号(各三位): c=4/2’30’’-[(31o16‘40“/4)/2’30’’]=018 d=[(121o31‘30“/6o)/3’45’’]+1=025 该点所在1:1万比例尺地形图图幅的编号为 H51G018025 根据图号计算图幅西南图廓点的经纬度 已知某地形图的图号X1X2X3X4X5X6X7X8X9X10, ①根据该图号的前三位代码X1X2X3按下式计算其所在1:100万比例尺地形图对应的西南图廓点的经纬度λ0、φ0 λ0=(X2X3-31)*6o φ0=(X1-1)*4o X1——此幅1:100万比例尺地形图图幅所在纬度带字符码对应的数字码;

实验二 MATLAB数值计算与符号运算功能

课程名称: MATLAB实验 题目:实验二 MATLAB数值计算与符号运算功能 学生姓名: 专业:电子信息工程 班级: 学号: 指导教师:张静 实验地点:现代通信实验室 日期: 2012 年 12月 2 日

实验2 MATLAB数值计算、符号运算功能 一、实验目的 1、掌握建立矩阵、矩阵分析与处理的方法。 2、掌握线性方程组的求解方法。 3、掌握数据统计和分析方法、多项式的常用运算。 4、掌握求数值导数和数值积分、常微分方程数值求解、非线性代数方程数值求解的方法。 5、掌握定义符号对象的方法、符号表达式的运算法则及符号矩阵运算、符号函数极限及导数、符号函数定积分和不定积分的方法。 二、预习要求 (1)复习4、5、6章所讲内容; (2)熟悉MATLAB中的数值计算和符号运算的实现方法和主要函数。 三、实验内容 1、已知 29618 20512 885 A -?? ?? =?? ?? - ?? ,求A的特征值及特征向量,并分析其数学意义。 程序: 求A的特征值:A=[-29 6 18;20 5 12;-8 8 5]; E=eig(A) 运行结果: E = -25.3169 -10.5182 16.8351 求A的特征向量: [V,D]=eig(A) 运行结果:V = 0.7130 0.2803 0.2733 -0.6084 -0.7867 0.8725 0.3487 0.5501 0.4050 D = -25.3169 0 0 0 -10.5182 0 0 0 16.8351 数学意义:

在数学上,特别是线性代数中,对于一个给定的线性变换,它的特征向量(本征向量或称正规正交向量)是这样一个非零的向量v :当v 经过这个线性变换的作用之后,得到的新向量(长度也许改变)仍然与原来的v 保持在同一条线上。一个特征向量的长度在该线性变换下缩放的比例称为其特征值(本征值)。如果特征值为正,则表示v 在经过线性变换的作用后方向也不变;如果特征值为负,说明方向会反转;如果特征值为0,则是表示缩回零点。但无论怎样,仍在同一条直线上。 2、 不用rot90函数,实现方阵左旋90°或右旋90°的功能。例如,原矩阵为A ,A 左旋后 得到B ,右旋后得到C 。 147102581136912A ????=?????? ,101112789456123B ??????=??????,321654987121110B ?? ?? ??=?? ???? 提示:先将A 转置,再作上下翻转,则完成左旋90°;如将A 转置后作左右翻转,则完成右旋转90°,可用flipud 、fliplr 函数。 程序及运行结果如下: A=[1 4 7 10;2 5 8 11;3 6 9 12]; B=A' B = 1 2 3 4 5 6 7 8 9 10 11 12 C=flipud(B) C = 10 11 12 7 8 9 4 5 6 1 2 3 D=fliplr(B) D = 3 2 1 6 5 4 9 8 7 12 11 10

符号计算

第四章符号计算 1、选择题 1)运行命令a=sym('pi','d'),则对于变量a的描述 A 是正确的。 A. A是符号变量 B.a显示为10位的数值 C. a显示为32位的数值 D. A不存在 2)运行下列命令,则变量a的类型是 A 。 Syms a a=sin(2) A. sym B. double C. char D. int 3)运行下列命令,则 D 是正确的描述。 Syms a b c a A=[a b;c d] A. A占用的内存小于100B B. 创建了5个符号变量 C. A占用的内存是a、b、c、d之和 D. A不存在 4)运行下列命令后变量C的值是 A 。 A=sym([5 5;6 6]); B=sym([1 2;3 4]); C=A.*B [5,10] [5 10] [5*1,5*2] A.[18,24] B. [18 24] C. [6*3,6*4] D. 出错 5)运行命令“a=double(sym('sin(pi/2)'))”,则变量a是 C 。 A. 符号变量 B. 字符串'1' C. Double型1 D. 出错 6)符号表达式g=sym('sin(a*z)+cos(w*v)')中的自由变量是 C 。A. a B. z C. w D. v 7)将符号表达式化简为嵌套形式,使用 D 函数。 A.collect B.expand C. factor D. hornor 8)积分表达式 2 0cos()x dtdx π ??的实现使用下面的 B 命令。 A. int(int(cos(x)),0,pi/2) B. int(int(cos(x),'t'),0,pi/2) C. int(int(cos(x)),'t',0,pi/2) D. int(int(cos(x),'t',0,pi/2)) 9)运行命令y=dsovle('x*D2y-3Dy=x^2','t')求解微分方程,则 B 。 A. Dy是指dy/dx B. 得出y的通解有一个常数C1 C. D2y是指d2y/dx D. 得出y的通解有两个常数C1和C2 10)运行命令f=solve('x^2+1'),则 B 。 A. f是有两个数值元素的行向量 B. f是有两个数值元素的列向量 C. f是符号对象 D. F只有一个元素 2. 分别使用sym 和syms创建符号表达式“sin(x)+cos(y)”。

符号计算基础与符号微积分

练习十 符号计算基础与符号微积分 1.已知x=6,y=5,利用符号表达式求y x x z -++=31 。 提示:定义符号常数)'5(')'6('sym y sym x ==,。 x=sym('6'); y=sym('5'); z=(x+1)/(sqrt(3+x)-sqrt(y)) 2.分解因式。 (1)44y x - (2)5135 (1) syms x y ; factor(x^4-y^4) (2)factor(sym('5135')) 3.化简表达式。 (1)2121sin cos cos sin ββββ- (2)1 23842+++x x x (1) syms beta1 beta2 z=sin(beta1)*cos(beta2)-cos(beta1)*sin(beta2); simplify(z)

(2) x=sym('x'); z=(4*x^2+8*x+3)/(2*x+1); simplify(z) 4.已知 ??????????=??????????=??????????=i h g f e d c b a A P P ,,10101000110000101021 完成下列运算: (1)B=A P P ??21。 (2)B 的逆矩阵并验证结果。 (3)包括B 矩阵主对角线元素的下三角阵 。(4)B 的行列式值。 P1=[0,1,0;1,0,0;0,0,1]; P2=[1,0,0;0,1,0;1,0,1]; A=sym('[a,b,c;d,e,f;g,h,i]'); B=P1*P2*A %(1) inv(B)%(2) tril(B)%(3) det(B)%(4)

相关文档
最新文档