数值计算和符号计算.ppt
《数值计算和符号计算.ppt》由会员分享,可在线阅读,更多相关《数值计算和符号计算.ppt(25页珍藏版)》请在三一办公上搜索。
1、1,五、数值计算和符号计算,两种计算的特点数值计算符号对象和符号表达式符号计算符号函数的可视化Maple函数的使用,2,5.1 两种计算的特点,数值计算特点:1)以数值数组作为运算对象,给出数值解;2)计算过程中产生误差累积问题,影响计算结果的精确性;3)计算速度快,占用资源少。,符号计算特点:1)以符号对象和符号表达式作为运算对象,给出解析解;2)运算不受计算误差累积问题的影响;3)计算指令简单;4)占用资源多,计算耗时长。,5.2 数值计算,MATLAB具有强大的数值计算功能,可完成矩阵分析、线性代数、多元函数分析、数值微积分、方程求解、边值问题求解、数理统计等常见的数值计算。,数值计算的
2、常用运算单元是数值数组。MATLAB给出了大量的数值计算函数,基本上与理论数学、数值数学的数学描述式表达方式相同,便于编程和掌握。,本节主要以例题的形式给出一些常用的数值计算问题的MATLAB解算过程,以便熟悉MATLAB的计算指令。相对于具体的应用环境,需要根据实际情况查阅MATLAB函数列表,选择合适的函数和参数进行处理。,3,【例51】矩阵常见运算,%exm05_01.mA=1 2 3;4 7 2;7 4 3;%A为33矩阵b=2;4;5;%b为13矩阵%矩阵的分解L U P=lu(A)%矩阵的LU分解,分成下三角和上三角阵,LU=PAQ,R=qr(A)%矩阵的QR分解,分成正交方阵和上
3、三角阵,A=QR,%矩阵的特征参数Adet=det(A)%求矩阵的行列式Arank=rank(A)%求矩阵的秩Anorm=norm(A)%求矩阵的范数,通过带不同的参数可以求不同的范数P=poly(A)%求矩阵特征多项式Aroots=roots(P)%求特征根Aroots2=eig(A)%特征根的又一种求法,%线性方程组求解x=Ab%求方程组AXb的解,x=inv(A)*b,4,【例52】求函数的零点,%exm05_02.my=inline(cos(t)*exp(-0.1*t)-0.1,t)%构造内联函数 ye-0.1t cost-0.1t=-10:0.01:10;%对自变量采样,采样步长不宜
4、太大。yt=feval(vectorize(y),t);%计算得到相应的 y 值ysign=sign(yt);%利用sign函数判断正负变化n=0;%找出ysign中发生正负变化的下标,即yt中穿越y=0水平线前一时刻的下标for i=2:length(t)if ysign(i)=ysign(i-1)n=n+1;yzero(n)=i-1;%与前一函数值符号相反,则表示有一零点 end%yzero(n)存放第n个零点对应的下标end,n,yzeron=6yzero=220 523 852 1146 1488 1764,%对应yzero中每一个下标找出穿越零水平线前后的两个时间%利用fzero寻找
5、该时间范围内的精确零点的横坐标for n=1:length(yzero)index=yzero(n);z(n)=fzero(y,t(index),t(index+1);%在区间t(index),t(index+1)内寻找零点end,内联函数是MATLAB可实现函数功能的一个对象.其输入变量不能是数组,但可用命令vectorize使其适用于数组运算.可直接用feval命令执行内联函数.,5,z%显示零点横坐标plot(t,yt)hold onplot(t,zeros(1,length(t),k)%画一黑横线(y=0)xx=ginput(6)%用鼠标从图形上获取n个点的坐标(t,y),z=-7.8
6、082-4.7745-1.4845 1.4549 4.8760 7.6377,用鼠标取得的坐标:xx=-7.8111 0.0044-4.7696 0.0044-1.4977 0.0044 1.4977 0.0044 4.9078 0.0044 7.6728 0.0044,6,clear%被积函数y=inline(exp(-0.8*t.*abs(sin(t),t);n=1;%将 x 取值离散化,分别求出 x 等于不同的值时的积分结果x=0:0.1:10;for xi=x yint(n)=quad(y,0,xi);n=n+1;end,【例53】数值积分:,%以折线拟和离散的积分结果,得到 y(x)
7、的近似曲线plot(x,yint),quad(exp(-0.8*x.*abs(sin(x),0,10)ans=2.6597,7,%exm05_04.mclear%得到掺杂了均值为0,方差为0.2的高斯白噪声的信号y%原始 y 信号有三个频率分量:10,100,180 Hzrandn(state,0);Ts=0.002;t=0:Ts:0.4;y=sin(2*pi*10*t)+cos(2*pi*100*t)+2*sin(2*pi*180*t)+0.2*randn(size(t);%利用FFT求 y 的离散 Fourier 系数 YY=fft(y);ws=2*pi/Ts;%采样角频率wn=ws/2;
8、%Nyquest频率%得到10阶ButterWorth带通滤波器,截止频率是90110HzB,A=butter(10,90/wn,110/wn);y100=filter(B,A,y);%滤波,得到100Hz的信号subplot(2,1,1)plot(t,y,b-,t,y100,r-)%作图显示噪声信号和滤波后信号axis(0.2,0.3,-4,4)subplot(2,1,2)w=linspace(0,wn,length(t)/2);%半采样频率中相应的刻度Ya=Ts*abs(Y(1:length(t)/2);plot(w,Ya)%做出半边频谱,【例54】Fourier分析,8,5.3 符号对象
9、和符号表达式,【例55】符号对象入门,syms a11 a12 a21 a22;%声明基本符号对象A=a11,a12;a21,a22A=a11,a12 a21,a22,参加数值计算的数值数组必须先进行赋值才能参加计算,参加符号运算的基本符号也必须先经过定义,才能构成符号表达式,进而进行相应的符号计算。,class(A)ans=sym,isa(A,sym)ans=1,DA=det(A)%行列式的值DA=a11*a22-a12*a21,IA=inv(A)%求A的逆IA=a22/(a11*a22-a12*a21),-a12/(a11*a22-a12*a21)-a21/(a11*a22-a12*a21
10、),a11/(a11*a22-a12*a21),9,5.3.1 符号对象的生成和使用,定义基本符号对象的命令是:sym和syms。,1.创建符号常量,符号常量是不含变量的符号表达式,用sym命令来创建符号常量。,sym(常量)创建符号常量 sym(常量,参数)把常量按“参数”指定的格式转换为符号常量,2.创建符号变量和表达式,sym(变量,参数)把变量定义为符号对象,参数用来设置限定符号变量 的数学特性,可以选择为positive、real和unreal。sym(表达式)创建符号表达式,syms(arg1,arg2,参数)把字符变量定义为符号变量syms arg1 arg2,参数 把字符变量定
11、义为符号变量的简洁形式 syms用来创建多个符号变量,这两种方式创建的符号对象是相同的。参数设置和前面的sym命令相同,省略时符号表达式直接由各符号变量组成。,f1=sym(a*x2+b*x+c)f1=a*x2+b*x+c,syms a b c x f2=a*x2+b*x+c f2=a*x2+b*x+c,syms(a,b,c,x)f3=a*x2+b*x+cf3=a*x2+b*x+c,符号计算步骤:定义符号对象;构造符号表达式;进行符号计算。,10,5.3.2 符号表达式及符号函数的操作和转换,1.符号表达式中自由变量的确定,自由变量的确定原则:小写字母i和j不能作为自由变量。符号表达式中如果有
12、多个字符变量,则按照以下顺序选择自由变量:首先选择x作为自由变量;如果没有x,则选择在字母顺序中最接近x的字符变量;如果与x相同距离,则在x后面的优先。大写字母比所有的小写字母都靠后。,如果不确定符号表达式中的自由符号变量,可以用findsym函数来自动确定。findsym(EXPR,n)确定自由符号变量 EXPR可以是符号表达式或符号矩阵;n为按顺序得出符号变量的个数,当n省略时,则不按顺序得出EXPR中所有的符号变量。,K=3;f=sym(a*x2+b*x+c+2*K);findsym(f)%得出所有的符号变量 ans=K,a,b,c,x,g=sym(sin(z)+cos(v)g=sin(
13、z)+cos(v),findsym(g,1)%得出第一个符号变量 ans=z,符号变量z和v距离x相同,以在x后面的z为自由符号变量。,syms a b c x;k=3;f=a*x2+b*x+c+2*k;findsym(f)ans=a,b,c,x,11,2.符号表达式的因式分解、简化和展开,同一个数学函数的符号表达式可以表示成三种形式,如 多项式形式的表达方式:f(x)=x3-6x2+11x-6 因式形式的表达方式:f(x)=(x-1)(x-2)(x-3)嵌套形式的表达方式:f(x)=x(x(x-6)+11)-6,collect(EXPR,v)合并v的幂类项,如省略v则默认xfactor(EX
14、PR)因式分解simple(EXPR)化简表达式EXPR,f1=sym(x3+2*x2*y+4*x*y+6)f1=x3+2*x2*y+4*x*y+6collect(f1,y)%按y来合并同类项 ans=(2*x2+4*x)*y+x3+6,f=sym(x3-6*x2+11*x-6);factor(f)ans=(x-1)*(x-2)*(x-3),f2=sym(x2-a2)/(x-a);simple(f2)ans=x+a,simple 函数给出多种简化形式,给出除了pretty、collect、expand、factor、simplify简化形式之外的radsimp、combine、combine(
15、trig)、convert形式,并寻求包含最少数目字符的表达式简化形式。,12,3.求反函数和复合函数,finverse(f,v)对指定自变量v的函数f(v)求反函数 当v省略,则对默认的自由符号变量求反函数。,fg=compose(f,g)把g作为f的自变量得到复合函数fg,f=sym(t*ex);%原函数 tex g=finverse(f)%对默认自由变量求反函数 g=log(x/t)/log(e),g=finverse(f,t)%对t求反函数,若先定义t为符号变量,则单引号可去掉 g=t/(ex),f=sym(t*ex);%创建符号表达式g=sym(a*y2+b*y+c);%创建符号表达
16、式h1=compose(f,g)%计算f(g(x)h1=t*e(a*y2+b*y+c),h2=compose(g,f)%计算g(f(x)h2=a*t2*(ex)2+b*t*ex+c,h3=compose(f,g,z)%计算f(g(z)h3=t*e(a*z2+b*z+c),13,4.符号表达式的替换,RS,ssub=subexpr(S,ssub)用符号变量ssub来置换S中的子表达式,得到RS subexpr函数对子表达式是自动寻找的,只有比较长的子表达式才被置换,比较短的子表达式,即使重复出现多次,也不被置换。,syms a b c d D IA=inv(a b;c d)IA=d/(a*d-b
17、*c),-b/(a*d-b*c)-c/(a*d-b*c),a/(a*d-b*c),syms a11 a12 a13 a21 a22 a23 a31 a32 a33 D;A=a11,a12,a13;a21,a22,a23;a31,a32,a33;IA=inv(A);IAS,D=subexpr(IA,D)IAS=(a22*a33-a23*a32)/D,-(a12*a33-a13*a32)/D,(a12*a23-a13*a22)/D-(a21*a33-a23*a31)/D,(a11*a33-a13*a31)/D,-(a11*a23-a13*a21)/D(a21*a32-a22*a31)/D,-(a1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 计算 符号

链接地址:https://www.31ppt.com/p-6576758.html