2012年MATLAB第三章-2

合集下载

matlab基础第3章

matlab基础第3章

上一章几条重要的命令sys=tf(num,den)[num,den]=tf(sys,'v')sys=zpk([z1,z2,…,zm],[p1,p2,…,pn],k)[z p k]=zpkdata(sys,'v')sys=ss(A,B,C,D)[A,B,C,D]=ssdata(sys)sys = tf(dnum,dden,Ts)[dnum,dden,Ts]=tfdata(sys,'v')dsys=ss(Ad,Bd,Cd,Dd,T s)[Ad,Bd,Cd,Dd,T s]=ssdata(sys)要求掌握 1 系统环节的连接2 模型的转换3 系统的稳定性分析4 单输入单输出控制系统的时域分析编程5 单输入单输出控制系统的频域分析编程第3章单输入单输出控制系统的分析建立系统数学模型的主要目的是为了对系统性能进行分析与设计。

对控制系统的分析有稳态性能和动态性能分析,如系统的稳定性,稳态误差,动态响应性能参数等。

其分析方法主要有时域法和频域法两种。

时域分析法是直接在时间域内计算系统的时间响应、分析系统的稳定性、能控和能观性、动态性能等,这种分析方法的结果比较直观。

频域分析法是在系统受到频率为ω的正弦信号激励时,分析系统输出幅值和相位与输入激励之间的关系,进而得到系统的性能特性。

MATLAB 控制系统工具箱(Control System Toolbox )对控制系统,尤其是对线性时不变(Linear Time Invariant,简称LTI )系统的建模、分析和设计提供了一个完整的解决方案,也避免了繁杂的编程工作,是线性控制系统分析和设计的高效率的工具。

3.1单输入单输出(SISO )控制系统的模型及其转换在得到控制系统各个环节的MATLAB 表达之后,通常需要进行串联、并联、反馈连接等处理方式,将比较复杂的系统化成简单的系统,再进行分析和设计。

在控制系统工具箱中提供了一些函数来支持系统的连接。

matlab第三章课后部分答案

matlab第三章课后部分答案

matlab第三章课后部分答案习题三3-2 从键盘输入一个三位整数,将它反向输出。

如输入639,输出为936程序如下:m=input('请输入一个三位整数:');m1=fix(m/100);%求m的百位整数m2=rem(fix(m/10),10);%求m的十位数字m3=rem(m,10);%求m的个位数字m=m3*100+m2*10+m1%反向输出m3-3 输入一个百分制成绩,要求输出成绩等级A,B,C,D,E。

其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。

要求:(1)分别用if语句和switch语句实现。

(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。

程序如下:(1)if语句c=input('请输入成绩:');if c>=90&c<=100disp('A 成绩合理');elseif c>=80&c<=89disp('B 成绩合理');elseif c>=70&c<=79disp('C 成绩合理'); elseif c>=60&c<=69disp('D 成绩合理'); elseif c<60disp('E 成绩合理');elsedisp('成绩错误');end(2)switch语句c=input('请输入成绩:'); switch fix(c)case num2cell(90:100)disp('A 成绩合理'); case num2cell(80:89)disp('B 成绩合理'); case num2cell(70:79)disp('C 成绩合理'); case num2cell(60:69)disp('D 成绩合理'); case num2cell(0:59)disp('E 成绩合理');x=fix(rand(1,20)*89)+10;x1=fix(sum(x)/20);disp(['平均数是:',num2str(x1)])m=(rem(x,2)==0&x<x1);n=find(m);disp(['小于平均数的数是:',num2str(x(n))]); 3-6 输入20个数,求其中最大数和最小数。

MATLAB程序设计教程(第二版)第三章实验报告下载

MATLAB程序设计教程(第二版)第三章实验报告下载

大学社区网收集整理评分日期湖南商学院北津学院实验报告课程名称MATLAB科学计算编程语言实验名称MATLAB程序设计专业班级信科1121班姓名xxx学号xxx实验日期2012年11月5日2012—2013学年度第一学期一、实验目的1.掌握利用if语句、switch语句实现选择结构的方法。

2.掌握利用for语句、while语句实现循环结构的方法。

3.熟悉利用向量运算来代替循环操作的方法并理解MATLAB程序设计的特点4.掌握定义和调用MATLAB函数的方法。

二、实验环境系统windows7旗舰版处理器Intel(R)Core(TM)i7-3610M CPU @ 2.30GHz 安装内存 4.00GB (3.07GB 可用)系统类型64位操作系统运行环境MATLAB 5.3三、实验基本原理利用上课所学知识解决以下问题:1.从键盘输入一个3位数的整数,将它反向输出。

如输入639,输出936。

2.输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。

其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。

要求:(1)分别用if 语句和switch 语句实现。

(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。

3.输入20个数,求其中最大数和最小数。

要求分别用循环结构和调用MATLAB 的max 函数、min 函数来实现。

4.23.0ln)3.0sin(23.03.0a a e e y a a +++−=−,当a 取-3.0、-2.9、-2.8、…、2.8、2.9、3.0时,求各点的函数值。

要求分别用顺序结构和循环结构实现。

5.当n 分别取100、1000、10000时,求下列各式的值:(1))6...(n1...31211122222π=+++++(2))2...()12)(12()2)(2(...756653443122π=⎟⎟⎠⎞⎜⎜⎝⎛+−⎟⎟⎠⎞⎜⎜⎝⎛××⎟⎟⎠⎞⎜⎜⎝⎛××⎟⎟⎠⎞⎜⎜⎝⎛××n n n n 要求分别用循环结构和向量运算(使用sum 函数)来实现。

Matlab基础2012-2

Matlab基础2012-2

MATLAB基础——连续时间信号与系统课程安排MATLAB简介连续时间信号与系统离散时间信号与系统MATLAB实验内容连续时间系统的时域分析傅里叶变换拉普拉斯变换、s 域分析内容连续时间系统的时域分析1微分方程式的建立与求解零输入响应与零状态响应冲激响应与阶跃响应微分方程式的建立与求解•连续时间系统的研究方法包括输输法端描法输入-输出法(端口描述法)系统状态变量分析法•输入-输出法LTI系统可以用一元高阶微分方程描述LTI 系统可以用元高阶微分方程描述[17012]b1a = [1,7,0,12];b = 1; %定义微分方程的行矢量sys = tf(b,a)%生成系统描述sys(tf=transfer function)微分方程式的建立与求解•状态变量描述法一个一元高阶微分方程,必然可以化成两个多元一阶微分方程组,即状态方程和输出方程(观测方程)sys = ss(A,B,C,D) %ss=state space,ABCD为状态方程和输出方程的矩阵微分方程式的建立与求解•微分方程的解包括齐次解和特解两部分•齐次解即系统特征方程的根,用roots函数计算p = [1 7 16 12];%定义多项式pa = roots(p);%求解多项式p=0的根aa%打印显示a = -3.0000-2.0000 + 0.0000i-2.0000 -0.0000i微分方程式的建立与求解•特解即系统(采用微分方程表示)在给定信号激励下的输出•用lsim函数进行仿真a = [1,2,3];%定义多项式pb = [1,1];%求解多项式p=0的根asys=tf(b a);sys = tf(b,a);%建立系统描述syst = [0:0.1:10]’;%定义仿真时间为0s到10s,抽样间隔为0.1se1 = t.^2’;%定义激励信号e1r1=lsim(sys e1t);输出为r1 = lsim(sys,e1,t);%用e1激励sys,输出为r1e2 = exp(t);…微分方程式的建立与求解微分方程式的建立与求解•Help polyfunroots -Find polynomial roots.poly -Convert roots to polynomial.polyval-Evaluate polynomial.l l E l t l i lpolyvalm-Evaluate polynomial with matrix argument.residue-Partial-fraction expansion(residues).residue Partial fraction expansion (residues).polyfit-Fit polynomial to data.polyder-Differentiate polynomial.polyint-Integrate polynomial analytically.conv-Multiply polynomials.deconv-Divide polynomials.Divide polynomials零输入响应和零状态响应•lsim函数还可以对带有非零起始状态的LTI 系统进行仿真 y = lsim(sys, u, t, x0)•注意:若用lsim函数仿真非零起始状态响应,则该系统必LTI 系统,lsim函须用状态方程描述(对传递函数描述的LTI系统数无法仿真非零起始状态响应)零输入响应和零状态响应零输入响应和零状态响应•解:采用两种方法•第一种:首先仿真2V电压en作用足够长时间(10秒)后系统进入稳态,从而得到稳态的状态变量值x0,再以其作为起始值仿真4V电压e作用下的输出rf,即是系统的完全响应真作出系应•这种方法还可以得到零状态响应rzs和零输入响应rzi•第二种:构造一个激励信号,先保持2V足够长时间再跳变为4V,然后即可以零初始状态一次仿真得到系统的完全响应r1零输入响应和零状态响应• C = 1; L = 1/4; R1 = 1; R2 = 3/2;%定义器件参数• a = [-1/R1/C,-1/C;1/L,-R2/L];%定义A,B,C,D四个矩阵• b = [1/R1/C;0];• c = [-1/R1,0];• d = [1/R1];•sys = ss(a,b,c,d);建立LTI系统sys()%•tn= [-10:0.01:-0.01]‘;%生成-10s到-0.01s的抽样时间,间隔为0.01s •en = 2*(tn<0);%生成激励信号的抽样值,e(t)=2•xn]=lsim(sys en tn);[rn tn xn]= lsim(sys,en,tn);%仿真t<0时的输出信号•x0 = xn(length(tn),:);%x0记录了起始状态,即0状态的值-•t = [0:0.01:10]‘;%生成从0s到10s的抽样时间,间隔为0.01s • e = 4*(t>=0);%生成激励信号的抽样值,e(t)=4•ezi= 0*(t>=0);%生成零输入信号的抽样值,e(t)=0•rzs= lsim(sys,e,t);%仿真零状态响应•rzi= lsim(sys,ezi,t,x0);%仿真零输入响应•rf= lsim(sys,e,t,x0);%仿真完全响应f l i(t0)•r1 = lsim(sys,[en;e],[tn;t]);%用另一种方法仿真完全响应零输入响应和零状态响应冲激响应和阶跃响应•如果分别用冲激信号和阶跃信号作激励,lsim函数可仿真出冲激响应和阶跃响应•MATLAB 专门提供了impulse(sys) 和step(sys)两个函数直接产生冲激响应和阶跃响应冲激响应和阶跃响应• a = [1, 7, 10];• b = [1, 6, 4];•sys = tf(b,a);%LTI系统模型y(,);定义系统模•t = [0:0.01:3]‘;%生成0到3s,间隔0.01s的抽样时间•h1 = step(sys);%用step函数仿真sys的阶跃响应•x_step= zeros(size(t));%另一种方法:根据定义构造阶跃信号x_step•x_step(t>0) = 1;•x_step(t==0) = 1/2;%lsim函数不支持输入NaN,所以x_step(0)=1/2•lsim(sys,x_step,t);%仿真x_step激励sys的响应lsim(sys x step t);x step•[h2, t2] = impulse(sys, t);%用impulse函数仿真sys的冲激响应并保存在h2中•x delta= zeros(size(t));%另一种方法:根据定义构造冲激响应x delta_(());_•x_delta(t==0) = 100;%lsim函数不支持输入Inf,所以令x_delta(0)=100,因为抽样间隔是%0.01,选择100可保证数值积分为1•[y1,t] = lsim(sys,x_delta,t);%仿真x_delta激励sys的响应并保存在y1中•y2 = y1-x_delta;%从响应中减去一个冲激信号得到y221d lt从响应中减去个冲激信号得到2冲激响应和阶跃响应冲激响应和阶跃响应求系统的响应:卷积求系统的响应卷积•卷积运算的数值近似•MATLAB 提供了w = conv(u,v) 函数实现卷积和求系统的响应:卷积求系统的响应卷积•t = [-1:0.01:4]‘;%生成从-1s到4s,间隔0.01s的抽样时间t • e = (t>-1/2&t<1);%定义激励信号e•h = (t>0&t<2).*t/2;%定义冲激响应h•[r1,t1] = conv1(e,t,h,t);%用卷积计算系统输出r1,相应的抽样时间为t1 [r1t1]=conv1(e t h t);相应的抽样时间为•tr = t1(t1>=-1&t1<=4);%从t1中选择和t相同起止时刻的抽样时间tr•r = r1(t1>=-1&t1<=4);%用类似方法选择tr对应的输出r•function [w,tw] = conv1(u,tu,v,tv)•% 输入参数:u和v表示两个序列,tu和tv分别表示它们的抽样时间•% 返回值:w和wt分别表示卷积结果及其抽样时s间•T = tu(2)-tu(1);T tu(2)tu(1);•w = T*conv(u,v);•tw= tu(1)+tv(1)+T*[0:length(u)+length(v)-2]';求系统的响应:卷积求系统的响应卷积求系统的响应:连续时间信号的数值计算求系统的响应连续时间信号的数值计算•自然界中绝大部分物理量是连续的,数字计算机处理连续信号必须做近似,计算精度取决于算法和数字表示的位数信号必须做近似计算精度取决于算法和数字表示的位数•例如积分运算的简单数值计算方法是分段求和•复杂数值计算方法包括插值、拟合等等•help interp, resample, polyfit, …内容连续时间系统的时域分析傅里叶变换拉普拉斯变换、s 域分析内容傅里叶变换2傅里叶变换周期信号的傅里叶级数分析卷积特性(卷积定理)傅里叶变换•符号方法MATLAB 提供符号函数fourier和ifourier实现傅里叶变换和逆变换符数实傅变换变换syms t%定义符号t(())()F1 = fourier(t*heavisde(t))%计算tu(t)的傅里叶变换F1输出:F1 = i* (pi * dirac(1,w) * w^2 + i) / w^2%dirac(1,w)表示δ’(ω) F2 = fourier(sin(t))输出p(()())()表示()输出:F2 = i* pi * (dirac(w + 1)-dirac(w -1))%dirac(w + 1)δω+1)工程应用中经常需要对抽样数据做傅里叶分析,这种情况下往往无法得到信号的解析表达式,因而数值计算方法是应用傅里叶变换的法得到信号的解析表达式因而数值计算方法是应用傅里叶变换的主要途径傅里叶变换•将傅里叶变换写成离散表示形式Ω=ω2-ω1∆ω=Ω/K•同理写出逆变换傅里叶变换•三种方法二重循环循环+矢量相乘矩阵相乘傅里叶变换•二重循环T = 2;%定义时域抽样区间长度T2N = 200;%定义时域抽样点数t = linspace(-T/2,T/2-T/N,N)‘;%定义时域抽样点f = (t>-1/2&t<1/2);%初始化时域信号OMG16*iOMG = 16*pi;%定义频域抽样区间长度K = 100;%定义频域抽样点数omg= linspace(-OMG/2,OMG/2-OMG/K,K)‘;%定义频域抽样点F = zeros(size(omg));%初始化频谱for k = 1:K%循环计算每个频谱抽样点的频谱算每个频谱样频谱 for n = 1:N%用循环实现公式F(k) = F(k) + T/N*f(n)*exp(-j*omg(k)*t(n));endendfs= zeros(size(t));%初始化合成信号for n = 1:N%循环计算每个时域抽样点的合成信号 for k = 1:K%用循环实现公式fs(n) = fs(n) + OMG/2/pi/K*F(k)*exp(j*omg(k)*t(n));endend傅里叶变换傅里叶变换•矢量计算法傅里叶变换•矩阵相乘法傅里叶变换:程序优化技巧傅里叶变换程序优化技巧•程序优化技巧阵算代替用矩阵运算代替循环变量预定义•举例:计算sin(n), n=1,2,…,10^6举例i()1210^6for n = 1:1e6x(n) sin(n);x(n)=sin(n);endx = zeros(1e6, 1);x = sin([1:1e6]);•时间函数help timefun周期信号的傅里叶级数分析•和傅里叶变换的数值计算方法相似周期信号的傅里叶级数分析卷积特性(卷积定理)•验证卷积定理:时域卷积对应于频域相乘•可用两种方法计算三角脉冲的频谱一是直接对三角脉冲做傅里叶变换二是利用卷积定理,矩形脉冲的卷积是三角脉冲,所以可以先计算矩形脉冲的频谱,再取其平方将两种计算结果绘制在一起,验证卷积定理的正确性卷积特性(卷积定理)卷积特性提高函数的稳定性卷积特性:提高函数的稳定性•考察MATLAB库函数open conv open polyfit function c = conv(a, b)na= length(a);nb= length(b);if na ~= numel(a) || nb ~= numel(b)error('MATLAB:conv:AorBNotVector', 'A and B must be vectors.');endif na> nb[c,zf] = filter(b, 1, a);if nb> 1c(na+1:na+nb-1) = zf;endelse[c,zf] = filter(a, 1, b);if na>1if na> 1c(nb+1:na+nb-1) = zf;endend内容连续时间系统的时域分析傅里叶变换拉普拉斯变换、s 域分析内容拉普拉斯变换拉普拉斯变换、s域分析2拉普拉斯变换和逆变换系统函数H(s)由系统函数分析时频特性拉普拉斯变换和逆变换•用符号函数laplace和ilaplace实现(单边)拉氏变换和逆变换syms t w%定义符号syms s;F1 = laplace(t3)%计算拉氏变换F1 f = ilaplace(10(s+2)(s+5)/s F1=laplace(t^3)f=ilaplace(10*(s+2)*(s+5)/s 输出:F1 = 6/s^4/(s+1)/(s+3)) F2 = laplace(sin(w*t)) %计算拉氏变换F2输出:f = -10/3*exp(-3*t)输出:F2 = w/(s^2+w^2)-20*exp(-t)+100/3拉普拉斯变换和逆变换•用部分分式展开的函数residue 求逆变换r =%两个部分分式系数-12b = [1,5,9,7];a1 = [1,1];2[12]p =%两个极点(特征根)-2-1k =%自由项12a2 = [1,2];a = conv(a1,a2);[r,p,k] = residue(b,a)•解:先用MATLAB 求留数,写出展开式1 2•最后写出时域表达式拉普拉斯变换和逆变换•参考Symbolic Math Toolbox合并同类项collect因式分解factor化简simplify变量替换subs求极限limit微分和求导diff积分int解方程组solve解微分方程组dsolve系统函数H(s)H()•回顾前面介绍的tf函数,可知MATLAB用系统函数H(s)描述LTI系统由电路可知传递函数为H(s)=1/(s+1)sys = tf(1,[0.1 0.1]);%定义系统函数H(s)t = [0:0.01:10]‘;%定义抽样时间te = sin(3*t);%生成激励信号e(t)i= lsim(sys, e, t);%仿真电流信号i(t)系统函数H(s)H()由系统函数分析时频特性•MATLAB用zero(sys) 和pole(sys) 函数直接计算零极点•[p,z] = pzmap(sys) 函数也可以计算零极点不带返回值则绘制出系统的零极点图•[b,a]= zp2tf(z,p,k) 和[z,p,k] = tf2zp(b,a) 两个函数用于在零两个数用于在零极点和传递函数这两种描述方法之间进行转换由系统函数分析时域特性•t = [0:.1:40]‘;%定义抽样时间•figure, id = 1;%生成新图框,定义子图标号id=1•for omega = .5:-.25:0%循环omega=[0.5, -0.25, 0]•for sigma = -.06:.03:.06%循环sigma=[-.06:.03:.06]•p = sigma + j*omega;%定义极点p = sigma + j*omega•if omega ~= 0%如果极点不在实轴上if0•p = [p;p‘];%则再添加一个共轭极点•end•[b a]=zp2tf([]p1);%[b a] zp2tf([],p,1);由零、极点转换为传递函数的多项式系数•subplot(3,5,id);%生成标号为id的子图框•impulse(b,a,t);%绘制抽样时间为t的冲激响应•set(gca,‘YLim’,[-20,20]);%设置Y轴范围以求最好视觉效果•id = id + 1;%子图标号加1•end%内层sigma循环结束•end%外层omega循环结束由系统函数分析时域特性由系统函数分析频域特性•freqs(b,a) 函数用于绘制系统的频率响应(包括幅度响应和相位响应)其中b和a分别是传递函数的分子和分母多项式系数由系统函数分析频域特性•用zp2tf从零、极点求得系统的传递函数b,a•用freqs(b,a)求得频率响应•绘图查看频响特性(低通、高通、带通、带阻)。

MATLAB教程2012a第3章习题解答张志涌(可编辑修改word版)

MATLAB教程2012a第3章习题解答张志涌(可编辑修改word版)
F2=b^A
F2a=b.^A F2 =
0.99095 -0.66337 F2a =
0.5 0.125
%标量底矩阵指数的求幂 %标量底数组指数的求幂
-0.44225 0.32759
0.25 0.0625
(3)
F3a=A.^C
F3a =
1
4
3
2
%数组底数组指数的求幂
F3=A^C
%矩阵底矩阵指数的求幂运算不存在
〖解答〗
A=magic(3), B=[1,2,1;3,4,3;5,6,7]%创建阵列
A=
8
1
6
3
5
7
4
9
2
B=
1
2
1
3
4
3
5
6
7
(1)
C1amb=A*B
C1bma=B*A C1amb =
41 56 53 53 68 67 41 56 45 C1bma = 18 20 22 48 50 52 86 98 86
后根据计算结果回答以下问题:
(提示:根据对计算结果的目测回答问题)
〖目的〗 数组运算和矩阵运算的不同。 如何判断两个双精度数组是否相等。 norm 指令的应用。
〖解答〗
A=[1, 2; 3, 4],b=0.5,C=[4, 2; 1, 0.5]
A=
1
2
3
4
b=
0.5
C=
4
2
1
0.5
%创建数据
(1)
第 3 章 数值阵列及其运算
习题 3 及解答
1 在 MATLAB 中,先运行指令 A=magic(3), B=[1,2,1;3,4,3;5,6,7]

《MATLAB程序设计教程》第3章MATLAB程序设计

《MATLAB程序设计教程》第3章MATLAB程序设计

《MATLAB程序设计教程》第3章MATLAB程序设计《MATLAB程序设计教程(第二版)》的第3章主要介绍了MATLAB程序设计的基本概念和基本语法。

本章内容包括MATLAB程序的基本结构、变量的定义和使用、矩阵和向量的操作、条件语句和循环语句的使用、MATLAB函数及其调用、输入和输出等。

首先,本章介绍了MATLAB程序的基本结构。

一个MATLAB程序包含多个部分,包括脚本文件、函数文件、注释等。

脚本文件是由一系列MATLAB语句组成的,按照顺序执行。

函数文件是由函数定义和函数体组成的,可以在其他脚本文件或函数文件中调用。

接着,本章介绍了MATLAB中变量的定义和使用。

MATLAB中的变量是用来存储数据的,可以是数字、字符、字符串等。

变量可以使用等号进行赋值,并且可以进行各种运算操作。

MATLAB中的变量有严格的命名规则和作用域,需要注意命名的规范。

然后,本章介绍了MATLAB中矩阵和向量的操作。

MATLAB可以通过矩阵和向量进行复杂的数值计算。

可以通过矩阵的加减乘除、转置、求逆等操作来实现各种数值运算。

MATLAB还提供了许多便捷的函数来操作矩阵和向量,例如最大最小值、平均值、排序等。

接下来,本章介绍了条件语句和循环语句的使用。

条件语句用来根据条件执行不同的操作,包括if语句和switch语句。

循环语句用来重复执行一段代码,包括for循环、while循环和do-while循环。

这些语句可以有效地控制程序的逻辑流程,并实现各种复杂的计算。

然后,本章介绍了MATLAB函数及其调用。

函数是由一系列语句组成的,可以重复使用。

可以在MATLAB程序中定义自己的函数,并在程序中调用。

函数可以接受输入参数,经过运算后返回输出结果,可以大大提高程序的重复利用性和代码的模块化程度。

最后,本章介绍了MATLAB的输入和输出。

MATLAB可以通过命令窗口进行输入输出,也可以通过文件进行输入输出。

可以使用各种函数来读取和写入数据,包括文本文件、二进制文件等。

03MATLAB程序设计2012

03MATLAB程序设计2012

比较熟练地利用M语言实现自己的想法。
理解MATLAB程序,编写出高效率可靠
的应用程序。
本章结束
MATLAB应用
本章要点


M文件的概念与基本操作
MATLAB程序控制结构 MATLAB函数文件

MATLAB程序调试
M文件
用MATLAB语言编写的程序,扩展名
为.m 需要在MATLAB Editor里进行编辑 创建一个M文件


命令方式 >> edit myScript.m 点击
函数文件(function file)
函数文件必须有函数声明
•函数值自动返回,不需要使用return; •函数文件中的变量是局部变量,程序执行完 毕即清除; •参数个数可以不固定(参见varargin)
例3.2
回顾例3.1

用函数方式实现
例3.3

在0~2 π的区间内绘制一条频率为f1的正弦 曲线(即sin(f1x)),其函数的声明如下: function plotsin(f1) 为了让所绘制图形光滑,要求一个周期采 用16个点
程序举例
1、某商场对顾客所购买的商品实行打折销售, 标准如下(商品价格用price来表示)
price≤200 没有折扣 200≤price<500 3%折扣 500≤price<1000 5%折扣 1000≤price<2500 8%折扣 2500≤price<5000 10%折扣 5000≤price 14%折扣 输入所售商品价格,求其实际销售价格。 见例:price.m
switch子句后面的表达式应为一个标量或
一个字符串;
case子句后面的表达式不仅可为一个标

matlab第3章

matlab第3章
3.复数向量图 见例3-13
用compass和feather函数,compass函数绘制围绕原点的罗盘图,feather函数 绘制围绕x轴的羽毛图,其调用格式为
● compass(z)或compass(u,v) ● featuher(z)或faether(u,v) 其中,z为复数向量,u、v分别为复数向量的实部和虚部。
(xr,yr,zr)为半径可以画椭圆 例:[X Y Z]=ellipsoid(0,0,0,2,3,4);见例3-17
3.2.3 其他三维图形
绘制二维图形时的条形图、饼图、杆图、填充图等特殊图形可以 扩展为三维形式出现,使用的函数分别是bar3、bar3h、pie3、 stem3和fill3。
1.三维统计分析图
title(‘text’,‘property1’,propertyvalue1,‘property2’,propertyvalue2 ,...); 其中 ‘text’是要添加的文本的内容,‘property’是该文本的属性, 譬如“FontWeight”(字体粗细),“FontName”(字体名), “FontSize”(字体大小),后面的若省略就用缺省值。
元素值为纵坐标画出一条连续曲线; 若y是复数向量,则分别以向量元素实部和虚部为横、纵坐标绘 制一条曲线。见例3-1 若y是实矩阵,则按列绘制每列元素值相对其下标的曲线,曲线 条数等于输入参数矩阵的列数;若y是复数矩阵,则按列分别以 元素实部和虚部为横、纵坐标绘制多条曲线。
(3)多条曲线的绘制 见例3-2
grid on/off命令控制是画还是不画网格线,box on/off命令控制 是加还是不加边框线。 【例3.5】见P57
3.1.5 多图形显示 1.图形窗口的分割:subplot函数 见例3-5 调用格式: subplot(m,n,p) 该函数将当前图形窗口分成m × n个绘图区,即每行n个,共m行,
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
li ( x j )
ij
l0(x1)=0 l1(x1)=1 l2(x1)=0
l0(x2)=0 l1(x2)=0 l2(x2)=1
0, i j 1, i j
下面求 l0 (x) , l1 (x) , l2 (x)
先看l0(x) 因为l0(x)是以 x1, x2为零点的二次多项式 则l0 (x)一定可写成 其中 A为待定参数 l0(x)=A(x-x1)(x-x2)
l0 ( x ) x x1 x 0 x1 12 - x , l1 ( x )
x x0 x1 x 0
x 11
因此:ln11.75
p1(11.75)=2.4632
二、三点式的抛物线插值(二次插值)
二次插值又称为抛物线插值,也是常用的代数 多项式插值之一。
当n=2时,设已知函数f(x)的三个互异插值 基点x0,x1,x2的函数值分别为y0,y1,y2,见下表所示:
g(x) f(x)
x0
x1
x2
x
x3
x4
根据实际需要,可以用各种不同的函数来近 似原来的函数。
最常用的插值函数是 多项式: …?
代数多项式最简单,计算其值只需用到加、减乘运 算,且积分和微分都很方便; 所以常用它来近似表示表格函数(或复杂函数),这样 的插值方法叫做代数插值法,简称插值法。
插值:具体讲就是这样一个问题:已知f(x)在[a,b]
(3-5)
它们具有性质: l0(x0) =1 l1(x0) =0 l0(x1) =0 l1(x1)=1
l0 ( x )
x x1 x 0 x1
, l1 ( x )
x x0 x1 x 0
也即在对应的插值点上取1,而在另外插值点取0(图) 可统一表示成:
li ( x j )
上有n+1个互异点x0 , x1 , … , xn处的函数值y0 ,
y1 , … , yn,即给出f(x)的一个表: x y x0 x1 x 2 y0 y1 y2


xn yn
要求f(x)在[a,b]上的近似表达式φ(x)。
如果要求φ(x)严格地通过给定的n+1个点
(xi,yi),i=0,1,…,n,即φ(xi)= yi( i=0,1,…,n ),就称 这样的问题为函数插值问题,这样的方法就称为 插值法, φ(x)就称为插值函数。xi为插值节点。
若证明线性方程组的解唯一,则系数ai存在唯一。
根据克莱姆法则,只要证明系数矩阵的行列式不等于零,则 方程的根唯一。而上述方程组中关于ai的系数行列式为一 个n+1阶的范德蒙行列式:
1 1 1 x0 x1 xn x0 x1 xn
2 2

x0 x1
n
2
n


0 j i n
( xi x j ) 0
它由n+1个系数 a0,a1,… , an所确定,而条件(3-1)
恰好提供了n+1个条件。 用这些插值条件可以确 定系数 ai,那么代数插值问题的解是否存在, 如果存在是否唯一?下面的定理回答这个问题。
定理1 :满足 Pn( xi ) = f ( xi ) = y i (i=0,1,...n)(插值条
Rn (x) = f (x) - Pn(x) 为插值余项( Pn(x)近似代替f (x)的截断误差)
Pn( xi ) = f ( xi ) = y i
(i=0,1,...n) ,
(3-1)
即:一个n次多项式Pn (x)可以表示为:
Pn (x) = a0 + a1 x + a2 x2 ..... + a n x n
第三章 插值法
§0
引言
描述事物之间的数量关系:函数。 (2) 在 x 为特殊值 有两种情况: 时, 是好计算的, 则 (2)可转化为(1) 一是表格形式——一组离散的数据来表示函数关系;另 (1) 一种是函数虽然有明显的表达式,但很复杂,不便于研究和 (2) 使用。 从实际需要出发:对于计算结果允许有一定的误差,可 以把函数关系用一个简单的便于计算和处理的近似表达式来 代替,从而使问题得到简化。

xn
n
因为xi互不相同,行列式值不为0,所以ai唯一,也即pn(x) 是存在唯一的。
几何意义:
p(x) f(x)
y f (x)
y = p(x)
x0 x1 x2 x x3 x4
多项式插值的几何意义是:通过给定的n+1个点,作一条 n次代数曲线y = p(x),用以近似代替曲线y = f(x),如上 图所示。 必须指出,定理1虽然提供了一种求插值多项式的方法, 但当n较大时,计算复杂,并不是一种实际可行的方法。 下面几节介绍一些其他比较简单的构造插值多项式的 方法。
与插值问题一样,也有φ可分为线性拟合、
多项式拟合和非线性拟合等。
第一节 代数插值
多项式具有很多良好的性质,如它具有各阶导数, 计算简单,容易积分和求导等,因此,在进行函 数逼近时,自然会想到用多项式来逼近未知函数。 插值问题中,如果选择插值函数φ(x) 为一代数多项 式,就称这样的插值问题代数插值问题。具体描 述如下:
从几何意义上看,求φ(x)的问题就是求一条通过已
知n+1个点(xi,yi),i=0,1,…,n的曲线来近似的代替未
知曲线y = f(x) 。
显然如果不加任何限制,这样的φ(x)有无穷多个。 一般地,我们把φ(x)限制在某个函数类中,常用 的函数类有多项式、有理函数类、三角函数类、 样条函数类等,相应的插值问题分别称为代数插
l0 ( x ) l1 ( x ) l2 ( x )
1 2
( x 0 x 1 )( x 0 x 2 ) ( x x 0 )( x x 2 ) ( x 1 x 0 )( x 1 x 2 ) ( x x 0 )( x x 1 ) ( x 2 x 0 )( x 2 x 1 )
ln11.75 P2(11.75)=2.4638
(其精确值为:2.46385) p1(11.75)=2.4632 由此可以看出二次插值比线性插值准确程度高。
上面我们讨论了给定2个结点,3个结点,怎样 构造一次二次插值多项式p1(x)及p2(x),现在我 们将它推广。 ---------推导pn(x) 给定n+1个结点的函数表
第二节 Lagrange插值多项式
一、两点式的线性插值
1、公式:当n=1时,给定了函数f(x)在两个互异点x0 , x1的值为 y0 = f ( x0 ) , y1 = f ( x1 ) ,要构造一个线性函数p1(x) = ax + b 满足: p1 ( x0 ) = y0 , p1 ( x0 )= y1 称这样的线性函数为 f(x) 的线性插值函数。
2
二次插值的几何意义是用经过三点 A(x0,y0),B(x1,y1),C(x2,y2)的抛物线来近似地代替f(x)
下面我们仍仿照线形插值,利用插值基函数构造二次插值 p2(x) = y0 l0(x) + y1 l1(x)+ y2 l2(x)
这里的 li(x) 应是二次多项式且满足条件
l0(x0)=1 l1(x0)=0 l2(x0)=1 也即
表3-1
x y
曲线y = f ( x )。
x0 y0
x1 y1
线性插值的几何意义:用通过点(x0, y0) , (x1, y1)的直线近似的代替
2、线形插值的几何意义
p1 ( x )的表达式: 点斜式:
x x1 x 0 x1 x x0 x1 x 0
x x0 x1 x 0
(3-3)
件3-1)的n 次插值多项式 Pn(x) 是存在且是唯一的。
证明: 分析: 设Pn (x) = a0 + a1 x + a2 x2 ..... + an xn 只要证系数ai唯一,多项式唯一, 因为它通过n+1个已知点(xi , yi) (i=0,1……n),等价于线性 方程组的解。Pn(x)满足:
ij
0, i j 1, i j
公式(3-5)说明线性插值函数p1 ( x )可以通过一次插值奇函数 线性表示 -----称为Lagrange型线性插值多项式 因用P1(x)近似代替 f (x) , 所以插值余项为: R1(x) = f(x) – P1(x)
P1 ( x ) l 0 ( x ) y 0 l1 ( x ) y 1
两点式:
P1 ( x )
y0
y1
(3-4)
若记两个一次多项式为:
l0 ( x ) x x1 x 0 x1 , l1 ( x )
则p1 ( x )可写为: P1 ( x ) l 0 ( x ) y 0 l1 ( x ) y 1 l0(x), l1(x)叫做对应点xi的一次插值基函数。
定义1 :已知函数 y = f(x)在区间 [a, b]上有定义,且已知n+1个 点 (xi ,y i) ( i=0,1….n ) a≤x0<x1<x2<…<xn≤b 若存在一个次数不超过n次的代数多项式:
Pn (x)=a0 + a1 x + a2 x2.....+ a n x n
满足条件 Pn( xi ) = f ( xi ) = y i f (x) 为被插值函数 [ a , b ]为插值区间 (i=0,1,...n) , (3-1) 则称: Pn (x)为 f (x)的插值函数(插值多项式) xi (i=0,1,....n) 为插值节点 (3-1)称为插值条件
值(多项式插值)、有理插值、三角插值和样条
插值。
拟合:观测数据(xi,yi)总有一定的误差,严格地要求 φ(x) 通过它们,有时效果并不好,尤其当观测数 据有很多时,更是如此。
相关文档
最新文档