《实验二 matlab数值计算:二阶电路的时域分析》由会员分享,可在线阅读,更多相关《实验二 matlab数值计算:二阶电路的时域分析(7页珍藏版)》请在金锄头文库上搜索。
1、实验二 MATLAB 数值计算:二阶电路的时域分析一、实验目的在物理学和工程技术上,很多问题都可以用一个或一组常微分方程来描述,因此要解决相应的实际问题往往需要首先求解对应的微分方程(组)。在大多数情况下这些微分方程(组)通常是非线性的或者是超越方程(比如范德堡方程,波导本征值方程等),很难解析地求解(精确解) ,因此往往需要使用计算机数值求解(近似解) 。MATLAB 作为一种强大的科学计算语言,其在数值计算和数据的可视化方面具有无以伦比的优势。在解决常微分方程(组)问题上,MATLAB 就提供了多种可适用于不同场合(如刚性和非刚性问题)下的求解器(Solver),例如 ode45,ode1
2、5s,ode23,ode23s 等等。本次实验将以二阶线性电路-RLC电路和二阶非线性电路-范德堡电路的时域计算为例,了解和学习使用 MATLAB 作为计算工具来解算复杂的微分方程,以期达到如下几个目的:1. 熟练使用 dsolve 函数解析求解常微分方程;2. 熟练运用 ode45 求解器数值求解常微分方程; 3. 了解状态方程的概念,能使用 MATLAB 对二阶电路进行计算和分析;二、实验预备知识1微分方程的概念未知的函数以及它的某些阶的导数连同自变量都由一已知方程联系在一起的方程称为微分方程。如果未知函数是一元函数,称为常微分方程(Ordinary differential equati
3、ons,简称 odes) 。n 阶常微分方程的一般形式(隐式)为: 0),(nyytFL(1)其中 t 为自变量。若方程中未知函数及其各阶导数都是一次的,称为线性常微分方程,否则就是非线性微分方程,例如方程 就是非线性的。2() 2常微分方程的解及 MATLAB 指令一阶常微分方程与高阶微分方程可以互化,已知一个 n 阶常微分方程(显式):),(1()( nytfyL(2)若令 ,可将上式化为 n 个一阶常微分方程组:1)123,.ny1122 12(,.) (,.)nn nftyyyftL(3)(3)式称为状态方程,y 1, y2, ,yn(即 y, y, y, , y(n-1) )称为状态
4、变量,其中 y1(即 y)就是常微分方程(2)式的解。(3)式中右边的函数 f1、f 2、 、f n 代表各个状态变量的一阶导数的函数表达式,对于具体的方程它们有具体的形式,例如下列二阶非线性微分方程: 2()0 若令 ,可将其改写成 2 个一阶微分方程组(状态方程) 的形式:12,yy221 ()y因此 。1; fyf 解析解只有少部分的线性常微分方程可以解析地求解(即可以算出精确的解表达式) ,例如一阶常系数常微分方程 可以通过直接积分解出,而多数微分方程尤其是非线性1dyt方程则很难得到解析解。有解析解的方程虽然可以手算解出,但是 MATLAB 也提供了 dslove 指令来求方程的解析
5、解,其使用格式:S = dsolve (方程 1, 方程 2,初始条件 1, 初始条件 2 ,自变量) 方程用字符串表示,自变量缺省值为 t。1 阶导数用 D 表示,2 阶导数用 D2 表示,以此类推。S 用于返回方程解析解的表达式。如果是求解方程组,则 S 为一个结构体数组,它的每个域存放方程组每一个解的表达式。例 1:求下列微分方程的解析解 1)0(,)(,)2sin( yyxy s=dsolve(D2y=sin(2*x)-y,y(0)=0,Dy(0)=1,x); simplify(s) %以最简形式显示 sans =-1/3*sin(x)*(-5+2*cos(x) % 方程的解(符号表达
6、式) 数值解对于没有解析解的方程主要依靠计算机进行数值求解(得到的是近似解) ,例如方程就须通过计算机数值求解(结果是一系列解的数值而非表达式) 。2(1)0 yy考虑 n 阶微分方程(2)式的数值求解,它等价于一阶常微分方程组(3)式。现将(3)式写成矩阵形式: (),() 4)YtFt其中 为 n 个分量的列向量(Column vector),也称状态向量12(1)()=5)nnytYttMn 个分量的列向量,其每个元素分别为(3)式右边的函数表达式 12(6)nfFf我们知道,微分方程要有唯一的确定解,必须给定初值条件。因此方程(4)式要有确定的解必须给定初值条件(t 0 为初始时刻 )
7、:(7)01020(1)00()()nnytytYtttMMatlab 提供了 ode45 指令(ode 是常微分方程的英文缩写)来求解方程(4) 的数值解(近似解) 。基本使用格式:tout, Yout =ode45 (odefun, tspan, Y0,options) 其参数说明如下: odefun 一般是用 M 文件编写的函数,odefun 代表函数名,由用户自己定义。函数返回值为(4)式右边的 F(t,Y)=( f1, f2 , fn) T。故 odefun 函数的返回值应是列向量,其最简单的编写格式为:function F = odefun (t, Y) 作用是计算并返回 4 式中
8、的 F(t, Y) 】其中 t 时间变量,为标量,代表计算进程中的某时刻点Y 代表状态变量的列向量(即 5 式)F 返回值 F(t, Y),为列向量(见 6 式)ode45 求解指令在计算时将会不断地在各个时间点调用 odefun 函数,并自动给输入参数 t和 Y 赋值。 tspan 指定方程的求解区间 t0, tf,t 0 是初始时刻。 Y0 用户给定的初值条件,为 n 个分量的列向量,见(7) 式。 options 可选项。一般情况下可缺省即可,若用户有特殊要求则须使用 odeset 指令设置 options 选项,具体用法可使用 help odeset 命令查询,此处不做要求。 tout
9、 列向量,输出求解过程中区间 t0, tf上各个计算点的时刻,即, t0, tf上计算点的数目是由 Matlab 自动生成。012 tou( )Lft Yout 输出矩阵,其排列格式如下: (1)()(1)00010200111112 ()()()= (8)()()()LLMMnnnffnfff fyttytytttYouttttyttytYout 的第 1 列代表的是状态变量 y1 在 (依次为 tout 的每个元素)各个时刻02, , Lft的值,由于 y1=y,所以 Yout 的第一列就是待求方程的数值解,它显然是一系列离散的 y(t)值:;将 Yout 第一列提取出来并用 plot(t
10、out,Yout(:,1)指令即可绘(),02,.itf制解 y(t)的函数图像。Yout 的第 2 列是 y 的一阶导数 的数值解,第 3 列是 y 的二2()y阶导数 的数值解。3y三、实验内容1. 二阶线性电路RLC 回路的零输入响应当电路中含有二个动态元件(如电感、电容) 时,建立的电路方程为二阶微分方程,这样的电路称为二阶电路,如果微分方程是线性的,则为线性电路,若为非线性方程,则是非线性电路,如范德堡电路。所谓零输入响应指的是电路中无外加的激励源,仅由动态元件初始储能所产生的响应。考虑如图所示的 RLC 电路,假设电容原已充电,根据电路理论,此二阶电路的零输入响应可用如下二阶线性微
11、分方程描述: 210(9) cccduRutLtC其中 uc 代表电容电压。给定初值条件: 00(1)() tcttdi元件参数 L=0.5H, R=12.5, C=0.02F。要得到 t0 时的零输入响应,就必须求解(9)式。A. 解析解方程(9)可以直接求解,因此有解析解。下面改用 MATLAB 中的 dsolve 指令来求方程(9)的解析解,程序如下:S=dsolve(D2u=-R/L*Du-1/L/C*u,u(0)=1,Du(0)=0,t);% S 为字符型数组(字串) ,其值为方程 9 的解表达式L=0.5;C=0.02;R=12.5; % 元件参数t=0:0.01:1; % 定义区
12、间0,1上的时间序列y=eval(S); % eval 串演算函数,计算字串 S(即 9 式的解)在 t 时刻的值plot(t,y) % 绘制电压波形,即 uc(t)的零输入响应B. 数值解方程(9)虽然可以解析求解,但也可以使用 ode45 指令来近似计算。令 y1= uc, y2= duc/dt,则方程 9 改写成如下状态方程:1212 () yRyLC上式也可以写成(4)式的形式,因此状态向量 Y=(y 1,y 2) T, F =(f 1, f2) T =(y 2,1/L/ C*y1R/L *y2) T (12)第一步:通过 M 文件创建 ode 函数,函数名 circuit_2orde
13、r_odefun。function F=circuit_2order_odefun(t,Y)global L C R % 定义全局变量 L、C、R ,以实现参数在MATLAB 的基本工作空% 间和函数的专用空间之间数据的传递F=Y(2);-1/L/C*Y(1)-R/L*Y(2); % 函数返回值 F, 列向量,见(12)式注意,函数创建完后,必须存盘,存储文件名和函数名应一致!第二步:创建 M 脚本文件 circuit_2order.mL=0.5; C=0.02; R=12.5; % 元件参数Y0=1;0; % 列向量,初值条件tspan=0,1; % 定义求解区间0,1tout,Yout=o
14、de45(circuit_2order_odefun,tspan,Y0);plot(tout,Yout(:,1); % 绘电压波形,即 uc(t)的零输入响应2. 二阶非线性电路范德堡(Van de Pol)电路范德堡电路由一个线性电感、一个线性电容和一个非线性电阻构成,如图(a)所示。非线性电阻的伏安特性如图(b)所示,可很明显看出电阻是非线性的。范德堡电路的特性可由一个二阶非线性微分方程描述(参见邱关源的电路第 5 版P463-P465): 22(1)0(13) LLdiditt其中 。上式就是著名的范德堡方程。该方程很难解析求解,必须借助计算机数C值求解。令 ,将范德堡方程改写成一阶微分
15、方程组(状态方程) 的形式:12,Lyidit1212 (14)()yy上式也可以写成(4)式的形式。因此状态向量 Y 和 F 分别为, (15)12Y211()fFy假定参数 =0.1,求解区间0, 100,以及初值条件102() (6)y请仿照实验内容 1,利用 ode45 指令求解范德堡方程,并绘制电流 iL 的波形(即电流的零输入响应图) 。四、实验任务1. 输入实验内容 1 中提供的程序上机练习,熟悉 dslove 指令以及 ode45 指令的使用方法,并尝试解答思考题 1。2. 在任务 1 的基础上,独立编制实验内容 2 的计算程序,并尝试解答思考题 3。五、思考题1. 在实验内容 1 中,若使用 ode45 指令解方程 9 式,如何得到电流的零输入响应波形?2. 在实验内容 1 中,试研究 R=1,2,3,10 时电压 Uc(t)的响应波形,并把它们绘制在一张图上。3. 从任务 2 的电流波形图 (如下图 ) 中,你能得到什么结论?如何绘制范德堡电路的 u