东北大学 MATLAB符号运算2014_第1页
东北大学 MATLAB符号运算2014_第2页
东北大学 MATLAB符号运算2014_第3页
东北大学 MATLAB符号运算2014_第4页
东北大学 MATLAB符号运算2014_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MATLAB符号运算所谓符号计算是指在运算时,无须事先对变量赋值,而将所得到结果以标准的符号形式来表示。MathWorks公司以Maple的内核作为符号计算引擎(Engine),依赖Maple已有的函数库,开发了实现符号计算的两个工具箱:基本符号工具箱和扩展符号工具箱。MATLAB的符号计算MATLAB的符号运算与数值运算的区别数值运算中必须先对变量赋值,然后才能参与运算。符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。(一)定义符号变量参与符号运算的对象可以是符号变量、符号表达式或符号矩阵。符号变量要先定义,后引用。可以用sym函数、syms函数将运算量定义为符号型数据。引用符号运算函数时,用户可以指定函数执行过程中的变量参数;若用户没有指定变量参数,则使用findsym函数默认的变量作为函数的变量参数。符号计算基础1、sym函数

sym函数的主要功能是创建符号变量,以便进行符号运算,也可以用于创建符号表达式或符号矩阵。用sym函数创建符号变量的一般格式为:

x=sym(‘x’)其目的是将’x’创建为符号变量,以x作为输出变量名。每次调用该函数,可以定义一个符号变量。(一)定义符号变量例如,a=sym(‘a’)建立符号变量a,此后,可以在表达式中使用变量a进行各种运算。符号变量a和在其他过程中建立的非符号变量a不同。一个非符号变量在参与运算前必须赋值,变量的运算是该变量所对应值的运算,其运算结果是一个和变量类型对应的值,而符号变量参与运算前无须赋值,其结果是一个由参与运算的变量名组成的表达式。(一)定义符号变量>>a=sym('a');>>w=a^3+3*a+10w=a^3+3*a+10>>x=5;>>w=x^3+3*x+10w=150>>whosNameSizeBytesClassAttributesa1x1126symw1x18doublex1x18double(一)定义符号变量例:考察符号变量和数值变量的差别。在MATLAB命令窗口,输入命令:>>a=sym('a');b=sym('b');c=sym('c');d=sym('d');%定义4个符号变量>>w=10;x=5;y=-8;z=11;%定义4个数值变量>>A=[a,b;c,d];%建立符号矩阵A>>B=[w,x;y,z];%建立数值矩阵B>>det(A)%计算符号矩阵A的行列式ans=a*d-b*c>>det(B)%计算数值矩阵B的行列式ans=150(一)定义符号变量>>a=sym(‘a’);%定义符号变量a,b,c>>b=sym('b');>>c=sym('c');>>x=5;%定义数值变量x,y,z>>y=-8;>>z=11;>>w=a*a+b*b+c*c%符号运算w=a^2+b^2+c^2>>w=x*x+y*y+z*z%数值运算w=210(一)定义符号变量当数值常量作为sym()的输入参量时,就建立了一个符号对象——符号常量。虽然看上去是一个数值量,但已经是一个符号对象了。例:>>a=3/4;b='3/4';c=sym(3/4);d=sym('3/4');

>>whos%查看变量类型

NameSizeBytesClassAttributesa1x18doubleb1x36charc1x1130symd1x1130syma为实双精度浮点数值类型;b为实字符类型;c和d都是符号对象类型。(一)定义符号变量>>p1=sym('pi');a=sym('4');>>p2=pi;x=4;>>sin(p1/3)ans=1/2*3^(1/2)>>sin(p2/3)ans=0.8660>>cos((a+10)^2)-sin(pi/4)ans=cos(196)-1/2*2^(1/2)>>cos((x+10)^2)-sin(pi/4)ans=-0.3646(一)定义符号变量例:作符号计算:a,b,x,y均为符号运算量。在符号运算前,应先将a,b,x,y定义为符号运算量。(一)定义符号变量a=sym('a');%定义‘a’为符号运算量,输出变量名为ab=sym('b');x=sym('x');y=sym('y');[x,y]=solve(a*x-b*y-1,a*x+b*y-5,x,y)

%以a,b为符号常数,x,y为符号变量即可得到方程组的解:x=3/ay=2/b(一)定义符号变量例:已知一复数表达式z=x+i*y,试求其共轭复数,并求该表达式与其共轭复数乘积的多项式。(为了使乘积表达式x^2+y^2非负,这里,把变量x和y定义为实数)x=sym(‘x’,’real’);y=sym(‘y’,’real’);z=x+i*y;%定义复数表达式conj(z);%求共轭复数expand(z*conj(z))%求表达式与其共轭复数乘积的多项式ans=x^2+y^2若要去掉’x’的属性,可以使用下面语句

x=sym(‘x’,’unreal’)

将’x’创建为纯格式的符号变量。(2)syms函数

syms函数可以在一个语句中同时定义多个符号变量,一般调用格式为:

symsvar1var2…varn用于将var1,var2,…,varn等符号创建为符号型数据。用这种格式定义符号变量时不要在变量名上加字符串分界符(‘),变量间用空格而不要用逗号分隔。

当需要同时定义多个符号变量时,使用syms更简洁一些。symsabc%定义a,b,c均为符号变量16(三)符号表达式符号表达式由符号变量、函数、算术运算符等组成。符号表达式的书写格式与数值表达式相同。例如,数学表达式

其符号表达式为:(1+sqr(5*x))/2注意,在定义表达式前应先将表达式中的字符x定义为符号变量。建立符号表达式建立符号表达式有以下2种方法:用sym函数建立符号表达式。使用已经定义的符号变量组成符号表达式。符号表达式的创建凡是用到sym命令的时候,表达式和方程式对空格都是敏感的,因此不要随意添加空格符到式中。建立符号表达式用sym命令直接创建符号表达式,这种创建方式不需要在前面有任何说明,使用快捷方便。将整个表达式用单引号括起来,再用sym函数定义。例如:

>>f=sym('a+b+c')在命令窗口中输入上述语句按回车键,出现以下结果:f=a+b+c。说明已成功将符号表达式a+b+c赋给变量f。>>U=sym('3*x^2-5*y+2*x*y+6')U=3*x^2-5*y+2*x*y+6>>F=sym('cos(x^2)-sin(2*x)=0')F=cos(x^2)-sin(2*x)=0>>M=sym('[a,b;c,d]')M=[a,b][c,d]建立符号表达式使用已经定义的符号变量组成符号表达式按照普通书写方式创建符号表达式。它需要在具体创建一个符号表达式之前,将这个表达式所包含的全部符号变量创建完毕。例如:

>>symsabc>>f=a+b+cf=a+b+c建立符号表达式例:用两种方法建立符号表达式。在MATLAB窗口,输入命令:>>U=sym('3*x^2+5*y+2*x*y+6');%定义符号表达式U>>symsxy;%建立符号变量x、y>>V=3*x^2+5*y+2*x*y+6;%定义符号表达式V>>2*U-V+6%求符号表达式的值ans=3*x^2+5*y+2*x*y+12生成符号函数将表达式中的自变量定义为符号变量后,赋值给符号函数名,即可生成符号函数。例如有一数学表达式:其用符号表达式生成符号函数fxy的过程为:

symsabcxy%定义符号运算量

fxy=(a*x^2+b*y^2)/c^2%生成符号函数生成符号函数fxy后,即可用于微积分等符号计算。例:定义一个符号函数fxy=(a*x2+b*y2)/c2

,分别求该函数对x、y的导数和对x的积分。symsabcxy%定义符号变量fxy=(a*x^2+b*y^2)/c^2;%生成符号函数diff(fxy,x)%符号函数fxy对x求导数ans=2*a*x/c^2diff(fxy,y)%符号函数fxy对y求导数ans=2*b*y/c^2%符号函数fxy对x求积分int(fxy,x)ans=1/c^2*(1/3*a*x^3+b*y^2*x)MATLAB的符号运算在符号运算的整个过程中,所有的运算均是以符号进行的,即使以数字形式出现的量也是字符量。可以用+、-、*、/、^运算符实现符号运算。例如:>>f=sym('sin(x/2)');>>dfdx=diff(f)dfdx=1/2*cos(1/2*x)上式是对sin(x/2)求导的过程,一切都是由符号变量和符号表达式完成,没有涉及到具体的数值运算,其中1/2也被当作是字符量。>>f=sym('2*x^2+3*x-5')f=2*x^2+3*x-5>>g=sym('x^2-x+7')g=x^2-x+7>>f+gans=3*x^2+2*x+2>>f^gans=(2*x^2+3*x-5)^(x^2-x+7)例:比较符号常数与数值在代数运算时的差别。在MATLAB命令窗口,输入命令:pi1=sym('pi');k1=sym('8');k2=sym('2');k3=sym('3');%定义符号变量pi2=pi;r1=8;r2=2;r3=3;%定义数值变量sin(pi1/3)%计算符号表达式值

ans=1/2*3^(1/2)sin(pi2/3)%计算数值表达式值

ans=0.8660sqrt(k1)%计算符号表达式值

ans=2*2^(1/2)sqrt(r1)%计算数值表达式值

ans=2.8284sqrt(k3+sqrt(k2))%计算符号表达式值

ans=(3+2^(1/2))^(1/2)sqrt(r3+sqrt(r2))%计算数值表达式值

ans=2.1010>>sqrt(2)ans=1.4142>>a=sqrt(sym(2))a=2^(1/2)>>double(a)ans=1.4142>>sym(3)/sym(5)ans=3/5>>3/5+1/3ans=0.9333>>sym(3)/sym(5)+sym(1)/sym(3)ans=14/15符号表达式运算例:符号表达式的四则运算示例。在MATLAB命令窗口,输入命令:>>symsxyz;>>f=2*x+x^2*x-5*x+x^3%符号表达式的结果为最简形式f=-3*x+2*x^3>>f=2*x/(5*x)%符号表达式的结果为最简形式f=2/5>>f=(x+y)*(x-y)%符号表达式的结果不是x^2-y^2,而是(x+y)*(x-y)f=(x+y)*(x-y)符号表达式的四则运算符号表达式的运算结果仍是符号表达式。符号表达式的加、减、乘、除运算可分别由函数symadd、symsub、symmul、sumdiv来实现,幂运算可以由sympow来实现。例:定义一个符号函数fxy=(a*x2+b*y2)/c2

,分别求该函数对x、y的导数和对x的积分。symsabcxy%定义符号变量fxy=(a*x^2+b*y^2)/c^2;%生成符号函数diff(fxy,x)%符号函数fxy对x求导数ans=2*a*x/c^2diff(fxy,y)%符号函数fxy对y求导数ans=2*b*y/c^2int(fxy,x)%符号函数fxy对x求积分ans=1/c^2*(1/3*a*x^3+b*y^2*x)如果符号表达式是一个有理分式或可以展开为有理分式,可利用numden函数来提取符号表达式中的分子或分母。其一般调用格式为:

[n,d]=numden(s)该函数提取符号表达式s的分子和分母,分别将它们存放在n与d中。>>a=sym(0.333)a=333/1000>>[n,d]=numden(a)n=333d=1000>>f=sym('a*x^2/(b+x)')f=a*x^2/(b+x)>>[n,d]=numden(f)n=a*x^2d=b+xnumden函数在提取各部分之前,将符号表达式有理化后,返回所得的分子和分母。>>g=sym('(x^2+3)/(2*x-1)+3*x/(x-1)')g=(x^2+3)/(2*x-1)+3*x/(x-1)>>[n,d]=numden(g)n=x^3+5*x^2-3d=(2*x-1)*(x-1)>>h=sym('[3/2,(2*x+1)/3;a/x+a/y,3*x+4]')h=[3/2,(2*x+1)/3][a/x+a/y,3*x+4]>>[n,d]=numden(h)n=[3,2*x+1][a*(y+x),3*x+4]d=[2,3][x*y,1]符号矩阵的创建数值矩阵clearA=[1,2;3,4]A=[a,b;c,d]——不识别用函数sym创建矩阵命令格式:A=sym('[]')符号矩阵内容同数值矩阵需用sym指令定义,需用‘’标识注意与'[a,b;c,d]'的区别符号矩阵使用sym函数直接生成符号矩阵矩阵各元素之间可以使用空格或逗号分隔,各符号表达式的长度可以不同,矩阵元素可以是任意符号表达式。

>>a=sym('[123;456;789]')a=[1,2,3][4,5,6][7,8,9]例如:>>A=sym('[a,2*b;3*a,0]')A=[a,2*b][3*a,0]注意:符号矩阵的每一行的两端都有方括号,这是与Matlab数值矩阵的一个重要区别。>>A='[a,b;c,d]'A=[a,b;c,d]>>B=sym('[a,b;c,d]')B=[a,b][c,d]>>whosNameSizeBytesClassAttributesA1x918charB2x2312sym用字符串直接创建矩阵采用直接输入字符串的方法生成符号矩阵需保证同一列中各元素字符串有相同的长度。当要输入的字符串长度不一致时,可以在较短字符串的前面或后面加上空格补充例如:>>A=['[a,2*b]';'[3*a,0]']A=[a,2*b][3*a,0]符号矩阵用字符串直接创建矩阵

>>a=['[10,sin(x)]';'[1/c,x]']???Errorusing==>vertcatCATargumentsdimensionsarenotconsistent.>>a=['[10,sin(x)]';'[1/c,x]']a=[10,sin(x)][1/c,x]符号矩阵运算>>m=sym('[x,x^2,2*x,1/x]')m=[x,x^2,2*x,1/x]>>n=sym('[3*x,y,x,x^2]')n=[3*x,y,x,x^2]>>m-nans=[-2*x,x^2-y,x,1/x-x^2]>>m+nans=[4*x,x^2+y,3*x,1/x+x^2]>>a=m'*na=[3*conj(x)*x,conj(x)*y,conj(x)*x,conj(x)*x^2][3*conj(x)^2*x,conj(x)^2*y,conj(x)^2*x,conj(x)^2*x^2][6*conj(x)*x,2*conj(x)*y,2*conj(x)*x,2*conj(x)*x^2][3/conj(x)*x,1/conj(x)*y,1/conj(x)*x,1/conj(x)*x^2]符号数组四则运算>>q=sym('[1234;xyzw;abcd]')q=[1,2,3,4][x,y,z,w][a,b,c,d]>>p=sym('[x,1/x,x^2,x^3;abcd;1234]')p=[x,1/x,x^2,x^3][a,b,c,d][1,2,3,4]>>r=q*p%第一矩阵的列必须和第二矩阵的行的元素个数相同???Errorusing==>sym.mtimesat31Innermatrixdimensionsmustagree.>>q.*pans=[x,2/x,3*x^2,4*x^3][x*a,y*b,z*c,w*d][a,2*b,3*c,4*d]符号数组四则运算>>q=sym(‘[1234;xyzw;abcd]’);>>p=sym(‘[x,1/x,x^2,x^3;abcd;1234]’);>>q./pans=[1/x,2*x,3/x^2,4/x^3][x/a,y/b,z/c,w/d][a,1/2*b,1/3*c,1/4*d]>>q.\pans=[x,1/2/x,1/3*x^2,1/4*x^3][a/x,b/y,c/z,d/w][1/a,2/b,3/c,4/d]符号矩阵的修改直接修改指令修改:用A1=subs(A,‘new’,‘old’)来修改>>A=sym('[a,2*b;3*a,0]');>>A(2,2)='4*b'A=[a,2*b][3*a,4*b]>>A2=subs(A,'c','b')A2=[a,2*c][3*a,4*c]数值型与符号型变量的转换对于任意数值型变量t,使用sym函数可以将其转换为4种形式的符号变量:有理数形式:syms(t)或syms(t,’r’)浮点数形式:syms(t,’f’)指数形式:syms(t,’e’)数值精度形式:syms(t,’d’)将数值型矩阵转换为符号型矩阵,只能转换为有理数形式。>>sym(1.5)ans=3/2>>sym(3.14)ans=157/50函数eval可以将符号表达式变换成数值表达式。>>phi=sym('(1+sqrt(5))/2')phi=(1+sqrt(5))/2>>eval(phi)ans=1.6180符号矩阵由数值矩阵转换为符号矩阵数值型变量和符号型变量不能直接计算,要先将数值型变量转换成符号型变量,再进行计算。函数调用格式:sym(A)

>>M=[123;456;789]M=123456789>>S=sym(M)S=[1,2,3][4,5,6][7,8,9]符号矩阵将数值矩阵转化为符号矩阵>>A=[1/3,2.5;1/0.7,2/5]A=0.33332.50001.42860.4000>>sym(A)ans=[1/3,5/2][10/7,2/5]默认符号变量在数学表达式中,一般习惯于使用排在字母表中前面的字母作为变量的系数,而用排在后面的字母表示变量。例如:f=ax2+bx+c表达式中的a,b,c通常被认为是常数,用作变量的系数;而将x看作自变量。找寻变量原则:找寻除i、j之外,在字母顺序上最接近x的小写字符;若表达式中有两个符号变量与x的距离相等,则ASCII大者优先。默认符号变量例如,数学表达式

f=xng=sin(at+b)根据数学式中表示自变量的习惯,默认a,b,n为符号常数,x为符号变量。若在MATLAB中表示上述表达式,首先用syms函数定义a,b,n,t,x为符号对象。在进行导数运算时,由于没有指定符号变量,则系统采用数学习惯来确定表达式中的自变量,默认a,b,n为符号常数,x,t为符号变量。即:对函数f求导为:df/dx

对函数g求导为:dg/dt符号表达式中变量的确定可以用findsym函数查询符号表达式中的符号变量。该函数的引用格式为:findsym(f,n)说明:f为用户定义的符号函数,n为正整数,表示查询变量的个数。n=i,表示查询i个系统默认变量。n值省略时表示查询符号函数中全部系统默认变量。findsym以字符串形式返回结果。例:查询符号函数

f=xng=sin(at+b)中的系统默认变量。symsabntx%定义符号变量f=x^n;%给定符号函数g=sin(a*t+b);findsym(f,1)%在f函数中查询1个系统默认变量ans=x表示f函数中查询的1个系统默认变量为x。>>symsxayzb;>>s1=3*x+y;s2=a*y+b;>>findsym(s1)ans=x,y>>findsym(s2,2)ans=y,b>>findsym(5*x+2)ans=x>>c=sym('3');>>findsym(a*x+b*y+c)ans=a,b,x,y符号表达式的因式分解与展开可以对符号计算结果进行简化,诸如因式分解、同类项合并、符号表达式的展开、符号表达式的化简和通分等等。常用化简函数

collect(s,v)对符号表达式按变量v合并同类项

collect(s)对符号表达式s合并同类项

expand(s)对符号表达式s展开多项式

factor(s)对符号表达式s因式分解符号表达式的化简合并同类项collect(v)----将表达式v的相同次幂的项合并。例:>>symsxt%定义基本变量

>>f=(x-1)*(x-2)*(x-3);%定义符号表达式

>>collect(f)%合并f中x的同类项

ans=-6+x^3-6*x^2+11*x符号表达式的化简>>s3=(x+y)*(x^2+y^2+1)s3=(y+x)*(x^2+y^2+1)>>collect(s3)ans=x^3+y*x^2+(y^2+1)*x+y*(y^2+1)>>collect(s3,y)ans=y^3+x*y^2+(x^2+1)*y+x*(x^2+1)expand(s)将s中的各项进行展开,用于多项式,三角函数、指数函数、对数函数。例:symsxy;f=(x+y)^3;f1=expand(f)f1=x^3+3*x^2*y+3*x*y^2+y^3例:h=cos(x-y);expand(h)ans=cos(x)*cos(y)+sin(x)*sin(y)符号表达式的化简>>s2=(-7*x^2-8*y^2)*(-x^2+3*y^2);>>expand(s2)ans=7*x^4-13*x^2*y^2-24*y^4factor(S)将系数为有理数的多项式(矩阵)S,表示成低阶多项式相乘的形式,如果不能分解,则返回S本身。例:symsxyfactor(x^3-y^3)ans=(x-y)*(x^2+x*y+y^2)

>>factor(sym(630))ans=(2)*(3)^2*(5)*(7)符号表达式的化简>>symsabxy;>>A=a^3-b^3;>>factor(A)%对A分解因式

ans=(a-b)*(a^2+a*b+b^2)>>s=(-7*x^2-8*y^2)*(-x^2+3*y^2);>>expand(s)%对s展开ans=7*x^4-13*x^2*y^2-24*y^4>>collect(s,x)%对s按变量x合并同类项(无同类项)ans=7*x^4-13*x^2*y^2-24*y^4>>factor(sym(‘420’))%对符号整数分解因式ans=(2)^2*(3)*(5)*(7)simplify()该函数利用Maple化简规则对表达式进行简化。例:S=sym('[(x^2+5*x+6)/(x+2);sqrt(16)]')simplify(S)ans=x+34符号表达式的化简>>symsxya>>s=log(2*x/y);>>simplify(s)ans=log(2)+log(x/y)>>s=(-a^2+1)/(1-a);>>simplify(s)ans=a+1>>s=sym('[2*cos(x)^2-sin(x)^2,sqrt(16)]');>>simplify(s)ans=[3*cos(x)^2-1,4]符号表达式的化简s1=simple(s)从各种方法中自动选择最简格式,并显示化简过程

[s1,how]=simple(s)化简并返回实际采用的化简方法其中,s为原始表达式,s1为化简后表达式,how为采用的化简方法。simple()用几种不同的算术简化规则对符号表达式进行简化,使其用最少的字符来表示。虽然并非表达式中的字符越少,表达式就越简单,但采用这个标准往往能够得到满意的结果,尤其是对于包含三角函数的表达式。例:symxsimple(cos(x)^2+sin(x)^2)从结果看出,simple比较这些不同函数的结果,最终把最少字符作为标准。符号表达式的化简>>symsx>>s=cos(x)+sqrt(-sin(x)^2)s=cos(x)+(-sin(x)^2)^(1/2)>>simple(s)simplify:cos(x)+(-sin(x)^2)^(1/2)radsimp:cos(x)+i*sin(x)combine(trig):cos(x)+1/2*(-2+2*cos(2*x))^(1/2)factor:cos(x)+(-sin(x)^2)^(1/2)expand:cos(x)+(-sin(x)^2)^(1/2)combine:cos(x)+1/2*(-2+2*cos(2*x))^(1/2)convert(exp):1/2*exp(i*x)+1/2/exp(i*x)+1/2*((exp(i*x)-1/exp(i*x))^2)^(1/2)convert(sincos):cos(x)+(-sin(x)^2)^(1/2)convert(tan):(1-tan(1/2*x)^2)/(1+tan(1/2*x)^2)+(-4*tan(1/2*x)^2/(1+tan(1/2*x)^2)^2)^(1/2)collect(x):cos(x)+(-sin(x)^2)^(1/2)mwcos2sin:cos(x)+(-sin(x)^2)^(1/2)ans=cos(x)+i*sin(x)例:化简多项式>>symss;>>P=(s+3)^2*(s^2+3*s+2)*(s^3+12*s^2+48*s+64);P=(s+3)^2*(s^2+3*s+2)*(s^3+12*s^2+48*s+64)>>simple(P)%一系列化简尝试,得出计算机认为的最简形式ans=(s+3)^2*(s+2)*(s+1)*(s+4)^3

>>[a,m]=simple(P)%返回化简方法为因式分解方法,用factor()函数将得同样结果

a=(s+3)^2*(s+2)*(s+1)*(s+4)^3m=factor>>expand(P)ans=s^7+21*s^6+185*s^5+883*s^4+2454*s^3+3944*s^2+3360*s+1152变量替换

其中,f为原表达式,用x*替换x得出新的。例:求其Taylor幂级数展开>>symsabcdt;%假设这些变量均为符号变量>>f=cos(a*t+b)+sin(c*t)*sin(d*t);%定义给定函数f(t)>>f1=subs(f,{a,b,c,d,t},{0.5*pi,pi,0.25*pi,0.125*pi,4})f1=-1.0000符号型数值可采用变精度函数求值vpa(A):显示表达式A在当前精度下的值vap(A,n):显示符号表达式A在精度n下的值>>vpa(pi)ans=3.1415926535897932384626433832795>>vpa(pi,60)ans=3.14159265358979323846264338327950288419716939937510582097494符号型变量数据类型串演算函数eval函数利用字符串建立运算式后,再用eval命令执行它,可以使程序设计更加灵活。功能是模拟字符串运算式,表达式一定是字符串。是把字符串的内容作为对应的MATLAB语句来执行。命令格式为:eval(‘字符串’)串演算函数先定义字符串t为平方根运算,再用eval求出1到10的平方根,以后只要修改t的表达式即可。>>clear>>t='sqrt(i)';>>fori=1:10f(i)={char(['Thesquarerootof',int2str(i),'is',num2str(eval(t))])};end串演算函数>>f(:)ans='Thesquarerootof1is1''Thesquarerootof2is1.4142''Thesquarerootof3is1.7321''Thesquarerootof4is2''Thesquarerootof5is2.2361''Thesquarerootof6is2.4495''Thesquarerootof7is2.6458''Thesquarerootof8is2.8284''Thesquarerootof9is3''Thesquarerootof10is3.1623'串演算函数串演算函数可用于:计算“表达式”串,产生向量值。>>clear,t=pi;cem='[t/2,t*2,sin(t)]';y=eval(cem)y=1.57086.28320.0000计算“语句”串,创建变量。>>clear,t=pi;eval('theta=t/2,y=sin(theta)');whotheta=1.5708y=1Yourvariablesare:tthetay串演算函数feval函数指令feval的格式为:feval(‘字符串’,数组)feval用于模拟功能函数如cos,sin,sqrt等与eval的区别是,feval的‘字符串’不能是表达式,只能是函数名用feval求出1到10的平方根>>clear>>t='sqrt';>>fori=1:10f(i)={char(['Thesquarerootof',int2str(i),'is',num2str(feval(t,i))])};end串演算函数>>f(:)ans='Thesquarerootof1is1''Thesquarerootof2is1.4142''Thesquarerootof3is1.7321''Thesquarerootof4is2''Thesquarerootof5is2.2361''Thesquarerootof6is2.4495''Thesquarerootof7is2.6458''Thesquarerootof8is2.8284'

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论