实验五 方程求解

合集下载

实验五 种群数量的状态转移——微分方程

实验五  种群数量的状态转移——微分方程
开课学院、实验室:通信工程学院 DS1407实验时间:
课程
名称
数学建模
实验项目
名称
实验五种群数量的状态转移——微分方程
实验项目类型
验证
演示
综合
设计
其他
指导
教师
成 绩
实验目的
[1] 归纳和学习求解常微分方程(组)的基本原理和方法;
[2] 掌握解析、数值解法,并学会用图形观察解的形态和进行解的定性分析;
问题分析:y’-Dy
程序:y=dsolve('Dy=y+2*x','x')
y1=dsolve('Dy=y+2*x','y(0)=1','x')
x=0::1;
y=-2*x-2+3*exp(x);
plot(x,y,'r')
xlabel('x')
ylabel('y')
图表:
实验结果:
y =-2*x-2+exp(x)*C1
[3] 熟悉MATLAB软件关于微分方程求解的各种命令;
[4] 通过范例学习建立微分方程方面的数学模型以及求解全过程;
基础实验
一、实验内容
1.微分方程及方程组的解析求解法;
2.微分方程及方程组的数值求解法——欧拉、欧拉改进算法;
3.直接使用MATLAB命令对微分方程(组)进行求解(包括解析解、数值解);
y=sqrt(2*x+1)
plot(x,y,x1,y1,'kБайду номын сангаас',x1,y2,'r--')
图表:

信号与系统实验五 连续线性时不变系统分析

信号与系统实验五 连续线性时不变系统分析

信号与系统实验报告课程名称:信号与系统实验实验项目名称:连续线性时不变系统分析专业班级:姓名:学号:完成时间:年月日一、实验目的1.掌握连续LTI 系统的单位冲激响应、单位阶跃响应和任意激励对应响应的求解方法。

2.掌握连续LTI 系统的频域分析方法。

3.掌握连续LTI 系统的复频域分析方法。

4.掌握连续LTI 系统的时域、频域和复频域分析方法的相互转换。

二、实验原理1.连续LTI 系统的时域分析(1) 连续线性时不变系统的描述设连续线性时不变系统的激励为)(t e ,响应为)(t r ,则描述系统的微分方程可表示为()()00()()n mi j ij i j a r t b e t ===∑∑ 为了在Matlab 编程中调用有关函数,我们可以用向量a 和b 来表示该系统,即],,,,011a a a a n n -=[a ],,,,011b b b b m m -=[b这里要注意,向量a 和b 的元素排列是按微分方程的微分阶次降幂排列,缺项要用0补齐。

(2) 单位冲激响应单位冲激响应)(t h 是指连续LTI 系统在单位冲激信号)(t δ激励下的零状态响应,因此)(t h 满足线性常系数微分方程(5.1)及零初始状态,即()()00()()n m i j ij i j a h t b t δ===∑∑, ()(0)0, [011]k h k ,,,n --==按照定义,它也可表示为)()()(t t h t h δ*=对于连续LTI 系统,若其输入信号为)(t e ,冲激响应为)(t h ,则其零状态响应()zs y t 为()()()zs y t e t h t =*可见,)(t h 能够刻画和表征系统的固有特性,与何种激励无关。

一旦知道了系统的冲激响应)(t h ,就可求得系统对任何输入信号)(t e 所产生的零状态响应()zs y t 。

Matlab 提供了专门用于求连续系统冲激响应的函数impulse(),该函数还能绘制其时域波形。

实验五(线性方程组的数值解法和非线性方程求解)

实验五(线性方程组的数值解法和非线性方程求解)

1大学数学实验 实验报告 | 2014/4/5一、 实验目的1、学习用Matlab 软件数值求解线性代数方程组,对迭代法的收敛性和解的稳定性作初步分析;2、通过实例学习用线性代数方程组解决简化问题。

二、 实验内容项目一:种群的繁殖与稳定收获:种群的数量因繁殖而增加,因自然死亡而减少,对于人工饲养的种群(比如家畜)而言,为了保证稳定的收获,各个年龄的种群数量应维持不变。

种群因雌性个体的繁殖而改变,为方便起见以下种群数量均指其中的雌性。

种群年龄记作k=1,2,…,n ,当年年龄k 的种群数量记作x k ,繁殖率记作b k (每个雌性个体1年的繁殖的数量),自然存活率记作s k (s k =1−d k ,d k 为1年的死亡率),收获量记作ℎk ,则来年年龄k 的种群数量x ̌k 应该为x ̌k =∑b k n k=1x k , x ̌k+1=s k x k −ℎk , (k=1,2,…,n -1)。

要求各个年龄的种群数量每年维持不变就是要求使得x ̌k =x k , (k=1,2,…,n -1).(1) 如果b k , s k 已知,给定收获量ℎk ,建立求各个年龄的稳定种群数量x k 的模型(用矩阵、向量表示).(2) 设n =5,b 1=b 2=b 5=0,b 3=5,b 4=3,s 1=s 4=0.4,s 2=s 3=0.6,如要求ℎ1~ℎ5为500,400,200,100,100,求x 1~x 5.(3) 要使ℎ1~ℎ5均为500,如何达到?问题分析:该问题属于简单的种群数量增长模型,在一定的条件(存活率,繁殖率等)下为使各年龄阶段的种群数量保持不变,各个年龄段的种群数量将会满足一定的要求,只要找到种群数量与各个参量之间的关系,建立起种群数量恒定的方程就可以求解出各年龄阶段的种群数量。

模型建立:根据题目中的信息,令x ̌k =x k ,得到方程组如下:{x ̌1=∑b k nk=1x k =x 1x ̌k+1=s k x k −ℎk =x k+1整理得到:{−x 1∑b k nk=1x k =0−x k+1+s k x k =ℎk2 大学数学实验 实验报告 | 2014/4/52写成系数矩阵的形式如下:A =[b 1−1b 2b 3s 1−100s 2−1…b n−1b n0000⋮⋱⋮000000000⋯00−10s n−1−1]令h =[0, ℎ1,ℎ2,ℎ3,…,ℎn−2,ℎn−1]Tx =[x n , x n−1,…,x 1]T则方程组化为矩阵形式:Ax =h ,即为所求模型。

大学数学实验5参考答案

大学数学实验5参考答案

实验5 线性方程组的解法I.实验内容及要点一.注意以下函数的用法1.break:可以导致包含该命令的while、for循环终止。

也可以在if-end、switch-case、try-catch中导致中断2.continue:跳过位于其后的循环中的其他命令,执行循环的下一次迭代。

3.return:结束该命令所在函数的执行,把控制交给主调函数或命令窗口。

4.error(’message’):显示出错信息message,终止程序。

5.warning(‘message’):显示警告信息message,程序继续运行。

二.注意直接法中误差的判断(条件数的应用)和迭代法中收敛性的判断(见函数isshoulian)三.LU消元法的程序function x=xiaoyuan(a,b)[m n]=size(a); %可以讨论m n 的大小关系[l u]=lu(a);s=inv(l)*[a,b];x=ones(m,1);for i=m:-1:1h=s(i,m+1);for j=m:-1:1 %if j~=i% h=s(i,m+1)-h=h-x(j)*s(i,j);% (s(i,1:m) *xend % -s(i,i))endx(i)=h/s(i,i);end四.function y=isshoulian(a)s=size(a);if s(1)~=s(2),error('请输入方阵'),endn=s(1);for i=1:nm=0;for j=1:nif j~=im=m+abs(a(i,j));endendif abs(a(i,i))<my=0; %迭代不收敛returnendendy=1;%迭代收敛五.雅克比迭代function x=ydiedai(a,b,n)if isshoulian(a)==0warning('迭代不收敛')returnendl=length(b);t=b;b=zeros(l,1); %确保参与运算的是列向量for i=1:lb(i)=t(i);end[m m]=size(a);d=diag(diag(a));l=-tril(a,-1); %或l=-tril(a)+d;u=-triu(a,1); %或u=-triu(a)+d;b1=inv(d)*(l+u);f1=inv(d)*b;x=zeros(m,1);for i=1:n %常用while循环来设计带误差的终止条件x=b1*x+f1;end六.高斯——赛德尔迭代function x=gdiedai(A,b,x0,tol)l1=length(x0);h=zeros(l1,1); % x0=x0(:);for i=1:l1h(i)=x0(i);endl2=length(b);t=b;b=zeros(l2,1); %b=b(:);for i=1:l2b(i)=t(i);end[m n]=size(A); %.....d=diag(diag(A));l=-tril(A,-1); %或l=-tril(A)+d;u=-triu(A,1); %或u=-triu(A)+d;b2=inv(d-l)*u;f2=inv(d-l)*b;x1=h; %即x0x=b2*x1+f2;i=1;while abs(x-x1)>tol %常用范数来做判断x1=x;i=i+1;x=b2*x1+f2;endx;iII.课后作业一.略二.解:1.a=[3.0212.714 6.913;1.031 -4.273 1.121;5.084 -5.832 9.155];b=[12.648;-2.121;8.407];h=det(a) %判断a是否几近奇异,进而判断是否可能病态x=xiaoyuan(a,b)a(2,2)=-4.275;h1=det(a) %判断a是否几近奇异,进而判断是否可能病态x=xiaoyuan(a,b)2.解:3.a=hilb(10);x=ones(10,1);b=a*x;b=b.*(1+0.01);x1=xiaoyuan(a,b);x2=gdiedai(a,b,x,0.001);x3=ydiedai(a,b,3);[b x1 x2 x3]c=cond(a)p=max(abs(eig(a)))三.解:n=1000;b=[1:n]';a1=sparse(1:n,1:n,4,n,n);a2=sparse(2:n,1:n-1,1,n,n);a=a1+a2+a2';% 输出用稀疏矩阵求解的时间t1tic; x=a\b; t1=toc% 与满阵做比较aa=full(a);% 输出用满阵求解的时间tic; xx=aa\b; t2=toc% 为检验x与xx是否相同分别输出其分量之和y=sum(x)yy=sum(xx)四.解:1.% 本题可以转化为求解方程组% 例如a题,可转化为t1*sin(20*pi/180)=5;w+t2*sin(10*pi/180)=5;t1*cos(20*pi/180)-t1*cos(10*pi/180)=0 % 以下求解aa=[sin(20*pi/180) 0 0;0 sin(10*pi/180) 1;cos(20*pi/180) -cos(10*pi/180) 0];b=[5;5;0]x1=xiaoyuan(a,b)x2=gdiedai(a,b,[0 0 0],0.001)%看结果如何,若不行,就看范数x3=ydiedai(a,b,3) %是否小于1,即迭代是否收敛2.% 本题可以转化为求解方程组% 例如b题,可转化为l1*sin(20*pi/180)+l2*sin(10*pi/180)=d;l1*cos(20*pi/180)+l2*cos(10*pi/180)=h % 以下求解b题a=[sin(20*pi/180),sin(10*pi/180);cos(20*pi/180),cos(10*pi/180)];d=2;h=8;b=[d;h];L=xiaoyuan(a,b)3.% 本题可以转化为求解方程组% 例如c题,可转化为% t1*sin(40*pi/180)=5;% t2*sin(30*pi/180)+w1=5;% t1*cos(40*pi/180)-t2*cos(30*pi/180)=0;% t2*sin(30*pi/180)-t3*sin(20*pi/180)-w2=0;% t2*cos(30*pi/180)-t3*cos(20*pi/180)=0;% 以下求解c题a=[sin(40*pi/180) 0 0 0 0;0 sin(30*pi/180) 0 1 0;cos(40*pi/180) -cos(30*pi/180) 0 0 0; 0sin(30*pi/180) -sin(20*pi/180) 0 -1;0 cos(30*pi/180) -cos(20*pi/180) 0 0];b=[5;5;0;0;0];xiaoyuan(a,b)五.略六.略七.略八.略九.略十.略。

实验五 椭圆型方程差分解法

实验五  椭圆型方程差分解法

实验五 椭圆型方程差分解法一、 实验题目:矩形区域Ω上Laplace 方程的Dirichlet 问题⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧===-==∂∂+∂∂====0|4sin |0|)3(|030402222y y x x u xu u y y u y u xu π 4040303030,40≤≤≤≤≤≤≤≤<<<<x x y y y x二、 实验要求:1、建立内点的五点差分格式。

(取h=1)2、建立包括边界点在内的五点差分格式方程组。

3、用逆矩阵法或雅克比迭代迭代法求解方程组。

4、计算结果(保留至小数点后4位)。

5、由计算结果,写出结论。

三、实验步骤1、建立Laplace 方程与边界条件的差分格式(内节点6个,边界点10个)2、建立6个未知量的差分方程组。

41,,1,11,-+-++++=j i j i j i j i ij u u u u u3、建立6个未知量的矩阵方程。

令],,,,,[232221131211u u u u u u u h =,则6个未知量的矩阵方程为g Hu h h =21其中⎪⎪⎪⎪⎪⎭⎫ ⎝⎛---=B I I B I I B H ⎪⎪⎪⎪⎪⎭⎫ ⎝⎛----=4114114B 4、利用边界条件编制程序计算内节点处的数值解lm u (3,2,1=l 2,1=m ) 四、实验源代码 #include<stdio.h> #include<math.h> #define e 0.000001 void main(){ int i,j,k,flag=1,sum=0;doublea[5][4]={{0,2,2,0},{0.707,0,0,0},{1,0,0,0},{0.707,0,0,0},{0,0,0,0}}; double b[6],c[6]; while(flag) { sum++; flag=0;k=0;for(i=1;i<=3;i++) for(j=1;j<=2;j++) {b[k]=a[i][j];a[i][j]=(a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1])/4;c[k]=a[i][j];k++;}for(k=0;k<=5;k++)if(fabs(b[k]-c[k])>e)flag=1;}for(k=0;k<=5;k++)printf("%f\n",b[k]);printf("%d",sum);}五、实验结果:.1,63850525.1,u.1[.1,4123]5369.2,.0,53629685h。

实验五 用Newton法计算方程的根

实验五 用Newton法计算方程的根

五. 讨论分析当初始值选取离零点较远时将导致算法无法使用,例如第三题,将初始值改为2就无法计算出结果了,显示如下例如求020sin 35=-+-x x e x 的根,其中控制精度1010-=eps ,最大迭代次数40=M ,在steffensen 加速迭代方法的程序中,我们只需改动:it_max=40; ep=1e-10, 其余不变 。

利用以上程序,我们只需输入:phi=inline('exp(5*x)-sin(x)+(x)^3-20');[x_star,index,it]=steffensen(phi,0.5)可得:x_star = 0.637246094753909index = 0it = 41观察上述结果,index = 0,it = 41表明迭代失败,所以使用以上方法估计的时候,应该尽量估计出解的范围,偏离不应过大,距离增加迭代次数增加,也有可能迭代失败六. 改进实验建议根据上述分析,我认为,应该先对函数作一个简图,方便知道解的大概位置,然后我们才将这个大概值代入Newton 法或者Steffensen 中进行求解。

当然,我们可以用其他数学软件实现Newton 迭代法,我们可以用z-z 超级画板,其操作流程为:牛顿迭代法的公式是:x n+1=x n-f(x n)/f'(x n)。

下面我们就用牛顿迭代法设计程序求方程f(x)=ln(x)+2*x-6的近似解。

(一)观察方程f(x)=0的零点位置(1)显示坐标系的坐标刻度。

(2)作出函数y=ln(x)+2*x-6的图像,如下图所示:可以观察到方程的根在区间[2,3]上,我们可以设定近似解的初始值为2。

(二)设计求方程近似解的程序(1)在程序工作区中输入:f(x){ln(x)+2*x-6;}执行后,返回结果为:>> f(x) #这表示在计算机已经完成了函数f(x)的定义。

(2)定义f(x)的导函数g(x),在程序工作区中输入:Diff(f(x),x);执行后,返回结果为:>> 2+1/x #得到了f(x)的导函数。

清华数学实验实验五蒙特卡罗方法

清华数学实验实验五蒙特卡罗方法

03 蒙特卡罗方法在清华数学 实验实验五中的应用
模拟随机过程
随机过程模拟
蒙特卡罗方法可以模拟各种随机 过程,如股票价格波动、气象变 化等,通过模拟这些过程,可以 更好地理解和预测实际现象。
概率分布模拟
蒙特卡罗方法可以生成符合特定 概率分布的随机数,用于模拟和 研究各种概率分布的性质和行为 。
求解数学问题
蒙特卡罗方法的优缺点
误差和不确定性
蒙特卡罗方法的精度取决于抽样次数,抽样次数越多,精 度越高,但计算成本也越高。同时,由于是随机模拟,结 果存在一定的不确定性。
对离散问题处理不佳
对于一些离散或非连续的问题,蒙特卡罗方法的精度可能 会受到影响。
对参数敏感
蒙特卡罗方法的参数选择对结果影响较大,需要谨慎选择。
02 清华数学实验实验五内容
实验目的
掌握蒙特卡罗方法的原理和应用。 学会使用蒙特卡罗方法解决实际问题。 培养数学建模和计算能力。
实验原理
蒙特卡罗方法是一种基于概率统 计的数值计算方法,通过随机抽
样和统计模拟来求解问题。
该方法适用于具有随机性和不确 定性的问题,通过大量模拟实验
来获得近似解。
蒙特卡罗方法的精度取决于模拟 实验的次数和随机抽样的质量。
金融工程
蒙特卡罗方法在金融工程中广泛应用于 风险评估、资产定价和衍生品定价等问
题。
工程设计
蒙特卡罗方法在工程设计中用于优化 设计参数、模拟系统性能和可靠性分
析等。
物理科学
在物理科学中,蒙特卡罗方法被用于 模拟分子运动、材料性质和量子力学 等领域。
社会科学
在社会科学中,蒙特卡罗方法被用于 模拟社会现象、预测人口变化和评估 政策效果等。
蒙特卡罗方法的优缺点

实验5常微分方程的数值解

实验5常微分方程的数值解

实验5 常微分方程的数值解概要:将装满放射性废物的圆桶扔到水深300ft 的海底,圆桶体积55gal ,装满废料的桶重为527.436lbf ,在海中浮力为470.327lbf 。

此外,下沉时受到的阻力与速度成正比,比例系数为0.08lbf/s 。

实验发现当圆桶速度超过40ft/s 时,就会因与海底冲撞而破裂。

要求:(1)建立解决上述问题的微分方程模型(2)用数值和解析两种方法求解微分方程,并回答谁赢得了官司。

模型建立由牛顿第二定律可列出圆桶下沉速度的微分方程:dv G F f G F bv dt m m ----==其中G 为圆桶重量,F 为浮力,b 为下沉阻力与速度关系的比例系数。

换算到国际单位制,dept=300*0.3048=91.4400 海深(m )ve=40*0.3048=12.1920 速度极限(超过就会使圆筒碰撞破裂)(m/s) G=527.436*0.4536*9.8=2344.6 圆筒重量(N ) F=470.327*0.4536*9.8=2090.7 浮力(N)m=527.436*0.4536=239.24 圆筒质量(kg ) b=0.08*0.4536*9.8/0.3048=1.1667 比例系数(Ns/m) 模型求解 一.求数值解Matlab 程序如下: sd.m:function dx=sd(t,x,G,F,m,b) dx=[(G-F-b*x)/m];%微分方程sddraw.m: clear;G=527.436*0.4536*9.8;%圆筒重量(N ) F=470.327*0.4536*9.8;%浮力(N)m=527.436*0.4536;%圆筒质量(kg )b=0.08*0.4536*9.8/0.3048%比例系数(Ns/m) h=0.1;%所取时间点间隔ts=[0:h:2000];%粗略估计到时间2000 x0=0;%初始条件opt=odeset('reltol',1e-3,'abstol',1e-6);%相对误差1e-6,绝对误差1e-9 [t,x]=ode45(@sd,ts,x0,opt,G ,F,m,b);%使用5级4阶龙格—库塔公式计算 %[t,x]%输出t,x(t),y(t)plot(t,x,'-'),grid%输出v(t)的图形 xlabel('t'); ylabel('v(t)');%用辛普森公式对速度积分求出下沉深度 T=20;%估计20s 以内降到海底for i=0:2:10*T%作图时间间隔为0.2 y=x(1:(i+1)); k=length(y);a1=[y(2:2:k-1)];s1=sum(a1); a2=[y(3:2:k-1)];s2=sum(a2);z4((i+2)/2)=(y(1)+y(k)+4*s1+2*s2)*h/3;%辛普森公式求深度 endi=[0:2:10*T]; figure;de=300.*0.3048.*ones(5*T+1,1);%海深ve=40.*0.3048*[1 1];%速度极限值(超过就会使圆筒碰撞破裂)plot(x(i+1),z4',x(i+1),de,ve,[0 z4(5*T+1)]);%作出速度-深度图线,同时画出海深和速度要求grid;gtext('dept'),gtext('Vmax');xlabel('v');ylabel('dept(v)');figure;plot(i/10,z4');%作出时间-下降深度曲线grid;xlabel('t');ylabel('dept(t)');求解结果如下图:速度—时间曲线:可以看到经过足够长的时间后,如若桶没有落到海底,它的速度会趋于常值。

实验报告-实验五 动态模型的建模分析

实验报告-实验五 动态模型的建模分析

实验课程名称:_ 数据分析与建模__实验项目名称实验五动态模型的建模分析实验成绩实验者专业班级组别无同组者无实验日期2018年10月18日第一部分:实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)一、实验目的、意义本实验旨在通过资料查阅和上机实验,使学生熟悉和掌握动态模型的分析方法和理论,掌握数据分析工具Mathematica,能够绘制特殊图形,培养和提高数据分析的能力。

二、实验基本原理与方法动态模型的分析方法,数据分析工具Mathematica的使用方法,以及帮助指南文档等。

利用Mathematica绘图。

三、实验内容及要求1、动态模型的建模分析,写出求解过程及分析结论。

(1)求解微分方程y'-xy=3x(2)求微分方程x2y''-2xy'+2y=3x满足条件y(1)=0,y'(1)=1的特解。

(3)求微分方程组的通解。

(4)求函数f(x)=x3-4x+3在区间[-2,2]的极值。

(5)已知一组数据(-1,2),(0,2.5),(1,3),(2,4),(3,4.5),(4,5.5),求已知数据的拟合函数。

(6)应用Mathematica求解传染病模型,模型Ⅰ(指数模型)的通解与特解,并绘图。

(7)应用Mathematica求解传染病模型,模型Ⅱ(阻滞模型,SI模型),的通解与特解,并绘图(三种形状:S形状,正态形状,钟形)。

(8)应用Mathematica求解传染病模型,模型Ⅲ(SIS模型),的通解与特解。

(9)课程第7讲中的问题。

在一片没有管理的林区,硬材树与软材树竞争可用的土地和水分。

越可用的硬材树生长得越慢。

软材树靠生长快、有效消耗水分和土壤养分与硬材树竞争。

硬材树靠生长的高度与软材树竞争,它们遮挡了小树的阳光,也更抗疾病。

这两种树能否同时在一片林区中无限期地共存,或者一种树是否会迫使另一种树灭绝?应用Mathematica求解以下方程。

计算方法实验五牛顿法,牛顿下山法,切线法,二分法

计算方法实验五牛顿法,牛顿下山法,切线法,二分法

计算机实现数值积分 实验目的:非线性方程求解 实验内容:1.二分法的 Matlab 实现; 2.牛顿法的 Matlab 实现; 3.牛顿下山法、割线法、艾特金加速法、重根 迭代法、非线性方程组牛顿法中任选其一。 实验要求:1.每种算法要求达到给定的精度,输出近似 解结果及所需迭代次数; 2. P.239、171,或自选题目; 3.每个算法至少实验一个题目。
Therefore,the root is x=1.3571,iteration number is k=2.
6.在 MATLAB 工作窗口输入程序 [k,xk,yk,piancha,xdpiancha]=newtonqx(1,1e-8, 1e-8,100) 7.运行结果 y =16 y =26 y =0.3350 ans =1.0000 1.3846 0.3350 0.6154 0.4444 y =0.3350 y =18.5207 y =-0.0481
-0.0481
0.0181
0.0132
0.0072
0.0026
0.0019
-0.0011
0.0004
0.0003
0.0002
0.0001
0.0000
-0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
-0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
-0.0000
Therefore,the root is x=1.3688,iteration number is k=7.
pare the number of computations for finding the root of

试验五二阶网络函数的模拟

试验五二阶网络函数的模拟

实验五二阶网络函数的模拟一实验目的1 掌握求解系统响应的一种方法——模拟解法。

2 研究系统参数变化对响应的影响。

二原理说明1 为了求解系统的响应,需建立系统的微分方程,一些实际系统的微分方程可能是一个高阶微分方程或者是一个微分方程组,它们的求解是很费时间甚至是困难的。

由于描述各种不同系统(如电系统,机械系统)的微分方程有惊人的相似之处,因而可以用电系统来模拟各种非电系统,并进一步用基本运算单元获得该实际系统响应的模拟解。

这种装置又称为“电子模拟计算机”。

应用它能较快地求解系统的微分方程,并能用示波器将求解结果显示出来。

在初学这种方法时不妨以简单的二阶系统为例(本实验就是如此),其系统的微分方程为:y”+a1y’+a0y=x方框图如图5-1所示:图5-1 二阶网络函数方框图实际装置如图5-2所示。

图5-2实验线路图由模拟电路可得模拟方程为:⎢⎢⎢⎢⎢⎢⎣⎡-=--=--=--=-===dt dVo C R Vn Vb dt dVb C R Vq Va Rw Vb Vm R Vm Vi Rw Va Vh R Vh Vo Vn Vq Vm Vh 24,1322,110,0, 只要适当的选定模拟装置的元件参数,可得模拟方程和实际系统的微分方程完全相同。

本模拟实验的电路中:R1= R2= R3= R4=10k ΩRw1= Rw2=10k ΩC1=C2=0.1uF由上式可得: Vb Va Vo Vi -+=根据电路整理可得:"'214324Vo C C R R Vo C R Vo Vi ⋅⋅⋅⋅+⋅⋅+=将电阻和电容参数代入则有: "6'31010Vo Vo Vo Vi --++=3 、实际系统响应的变化范围可能很大,持续时间可能很长,但是运算放大器输出电压是有一定限制的,大致在±10伏之间。

积分时间受RC 元件数值限制也不能太长,因此要合理的选择变量的比例尺度My 和时间的比例尺Mt ,使得Vy=MyY ,t M =M t t ,式中Y 和t 为实验系统方程中的变量和时间,V y 和t M 为模拟方程中的变量和时间。

自动控制原理 实验五 典型非线性环节及

自动控制原理 实验五 典型非线性环节及

TDS 1001B型示波器:
• 1、将U盘插入示波器下端的USB插口; • 2、按下“save/recall”菜单按钮; • 3、按“操作”显示屏按钮,选择“储存
图像”; • 4、按“储存”显示屏按钮,示波器自动
创建一个新文件并将其存储到文件夹中。
END
谢 谢!
• 如果取x和x’作为平面的坐标,则系统的每一个状态均相应于该 平面上的一点。当t变化时,这一点在x-x’平面上描绘出的曲线, 表征了系统状态的演变过程。这种曲线就叫做相轨迹曲线。
实验五 典型非线性环节及具有典型继电 特性的非线性系统研究
几种典型非线性环节的模拟方法
(1)继电特性
实验五 典型非线性环节及具有典型继 电特性的非线性系统研究
1、打开“Wavestar”软件,点击“New Datasheet”,选择“NotesSheet”,然后按 “OK”。
2、双击“Local”下的“Data”,在“Display”下 有“ Screen Copy(Mono)”,用鼠标将它拖动 到“NotesSheet”中,再在“Edit”菜单中选 用“copy”复制,将图黏贴到WORD文档或 其它地方。
(3)死区特性
(4)间隙特性
实验五 典型非线性环节及具有典型继电特性的 非线性系统研究
二、典型继电特性的模拟
图5-5 典型继电特性非线性部件模拟电路图
m=-1~1, k=0~1
图5-6 非线性部件的输入输出 关系曲线
几种特殊情况下的输入输出特性:
m=1
m=0
m=-1
实验步骤:
• 1、示波器的调节:在“DISPLAY”键下,将格式设为“XY”,持续 时间设为“5秒”或“无限”,CH1、CH2通道的量程用1V或2V; 在CH1、CH2通道还未接测量信号前,先将坐标点调到原点。

MATLAB数值分析实验五(欧拉法,荣格-库塔法解常微分方程)

MATLAB数值分析实验五(欧拉法,荣格-库塔法解常微分方程)

佛山科学技术学院实 验 报 告课程名称 数值分析 实验项目 常微分方程问题初值问题数值解法 专业班级 姓 名 学 号 指导教师 陈剑 成 绩 日 期一. 实验目的1、理解如何在计算机上实现用Euler 法、改进Euler 法、Runge -Kutta 算法求一阶常微分方程初值问题⎩⎨⎧=∈='1)(],[),,()(y a y b a x y x f x y 的数值解。

2、利用图形直观分析近似解和准确解之间的误差。

二、实验要求(1) 按照题目要求完成实验内容; (2) 写出相应的Matlab 程序;(3) 给出实验结果(可以用表格展示实验结果); (4) 分析和讨论实验结果并提出可能的优化实验。

(5) 写出实验报告。

三、实验步骤1、用Matlab 编写解常微分方程初值问题的Euler 法、改进Euler 法和经典的四阶Runge-Kutta 法。

2、给定初值问题⎪⎩⎪⎨⎧=≤≤-=;1)1(,21,1')1(2y x xy x y⎪⎩⎪⎨⎧=≤≤++-=31)0(10,25050')2(2y x x x y y 要求:(a )用Euler 法和改进的Euler 法(步长均取h=0.05)及经典的四阶Runge-Kutta 法(h=0.1)求(1)的数值解,并打印)10,....2,1,0(1.01=+=i i x 的值。

(b) 用经典的四阶Runge-Kutta 方法解(2),步长分别取h=0.1, 0.05,0.025,计算并打印)10,....2,1,0(1.0==i i x 个点的值,与准确解25031)(x e x y x +=-比较,并列表写出在x=0.2,0.5,0.8处,对于不同步长h 下的误差,讨论同一节点处,误差随步长的变化规律。

(c )用Matlab 绘图函数绘制(2)的精确解和近似解的图形。

四、实验结果 %Euler.mfunction y = Euler(x0,xn,y0,h) %Euler 法解方程f_xy ; %x0,y0为初始条件; %x0,xn 为求值区间; %h 为步长; %求区间个数: n = (xn-x0)/h;%矩阵x 存储n+1个节点: x = [x0:h:xn]';%矩阵y 存储节点处的值: y = [y0;zeros(n,1)];%矩阵y_存储节点处导数值: y_(1)= f_xy(x0,y0); y_ = [y_(1);zeros(n,1)];%进行迭代(欧拉法迭代;求导数): for i = 2:n+1y (i) = y(i-1)+h*y_(i-1); y_(i) = f_xy(x(i),y(i)); end%Imp_Euler.mfunction y = Imp_Euler(x0,xn,y0,h)%改进的Euler法解方程f_xy;%x0,y0为初始条件;%x0,xn为求值区间;%h为步长;%求区间个数:n = (xn-x0)/h;%矩阵x存储n+1个节点:x = [x0:h:xn]';%矩阵y存储节点处的值:y = [y0;zeros(n,1)];%矩阵y_存储节点处导数值:y_(1)= f_xy(x0,y0);y_ = [y_(1);zeros(n,1)];%使用改进Euler法求值(欧拉法求近似;近似点导数;梯形校正;求导):for i = 2:n+1y_l = y(i-1) + h*y_(i-1);y_l = f_xy(x(i),y_l);y(i) = y(i-1) + (h/2)*(y_(i-1)+y_l);y_(i)= f_xy(x(i),y(i));end%R_Kutta4.mfunction y = R_Kutta4(x0,xn,y0,h)%Runger_Kutta法解方程f_xy;%x0,y0为初始条件;%x0,xn为求值区间;%h为步长;%求区间个数:n = (xn-x0)/h;%矩阵x存储n+1个节点:x = [x0:h:xn]';%矩阵y存储节点处的值:y = [y0;zeros(n,1)];%矩阵k1,k2,k3,k4存储各节点(中点)数值:k1(1)= f_xy(x0,y0);k1 = [k1(1);zeros(n,1)];k2(1)= f_xy(x0+h/2,y0+h*k1(1)/2);k2 = [k2(1);zeros(n,1)];k3(1)= f_xy(x0+h/2,y0+h*k2(1)/2);k3 = [k3(1);zeros(n,1)];k4(1)= f_xy(x0+h,y0+h*k3(1));k4 = [k4(1);zeros(n,1)];for i= 2:n+1y(i) = y(i-1)+(h/6)*(k1(i-1)+2*k2(i-1)+2*k3(i-1)+k4(i-1));k1(i)= f_xy(x(i),y(i));k2(i)= f_xy(x(i)+h/2,y(i)+h*k1(i)/2);k3(i)= f_xy(x(i)+h/2,y(i)+h*k2(i)/2);k4(i)= f_xy(x(i)+h,y(i)+h*k3(i));end(a):%f_xy.mfunction y_=f_xy(x,y)%求解第五次作业第一题的点(x,y)处的导数;y_ = 1/(x^2) - y/x;%run521.mclc,clear;x0 = 1;xn = 2;h = 0.05;y0 = 1;%便于显示出x,与y对应:x = [x0:h:xn]';y = Euler(x0,xn,y0,h);YE =[x,y];y = Imp_Euler(x0,xn,y0,h); YIE= [x,y];h = 0.1;x = [x0:h:xn]';y = R_Kutta4(x0,xn,y0,h); YRK= [x,y];(b): %f_xy.mfunction y_=f_xy(x,y) %求第二个方程的导数: y_ = -50*y+50*(x^2)+2*x;%run522.mclc,clear; x0 = 0; xn = 1; y0 = 1/3; %步长0.1: h = 0.1; x = [x0:h:xn]';y = R_Kutta4(x0,xn,y0,h); y_r= f_Real(x); Y1 = [x,y,y_r];%步长0.05: h = 0.05; x = [x0:h:xn]';y = R_Kutta4(x0,xn,y0,h); y_r= f_Real(x); Y2 = [x,y,y_r]; %步长0.025: h = 0.025; x = [x0:h:xn]';y = R_Kutta4(x0,xn,y0,h); y_r= f_Real(x); Y3 = [x,y,y_r];五、讨论分析(a)从结果可以看出使用RK 方法,步长较大但是结果也更加精确; (b)分析求值结果的误差,可以发现当步长取0.1时,误差是超级大的(10^8数量级),但是当步长缩小一半取0.05时,误差就很小了,再缩小一半,误差就更小了。

大学数学实验五_线性代数方程组的数值解法

大学数学实验五_线性代数方程组的数值解法

【实验目的】 1、学会用 MATLAB 软件数值求解线性代数方程组,对迭代法的收敛性和解
的稳定性作初步分析。 2、通过实例学习用线性代数方程组解决简化的实际问题。
【实验内容】
3 已知方程组 Ax=b,其中
,定义为
试通过迭代法求解此方程组,认识迭代法收敛的含义以及迭代初值和方程组系数矩阵性质对 收敛速度的影响。实验要求: (1) 选取不同的初始向量 x(0)和不同的方程组的右端项向量 b,给定迭代误差要求,用雅
k=k+1; xj=Bj*xj+fj; 多输出了矩阵 P,矩阵 P 可视为一个行向量,其每个元素均为迭代 k 次后得到的 xk。这样以 k 为横轴,解向量为纵轴,可输出图形观察 xk 是否收敛。函数 GaussSeidel 也需作同样修改,修改后的函数在此不再赘述。
模型: 已知某年该植物的数量为 x0,记第 k 年的植物数量为 xk,那么有 xk + pxk-1 + qxk-2 = 0 (k = 2, 3, …… , n)
其中 p = -a1bc,q = -a2b(1-a1)bc。若要求 n 年后数量达到 xn,则 Ax = b
其中


7
① 用稀疏系数矩阵求解。
这个函数中,n 表示矩阵 A 的阶数,在本题中恒取 20,a 表示主对角线元素的值,b 在 本题中恒取-1/4,c 在本题中恒取-1/2。
编写用雅可比迭代法求方程解的函数 Jacobi。
function [xj,k]=Jacobi(A,X0,b,e) D=diag(diag(A)); n=length(A); L=-(tril(A)-D); U=-(triu(A)-D); fj=D\b; Bj=D\(L+U); xj=X0; k=0; while norm(A*xj-b)/norm(b)>e

方程的数学实验报告(3篇)

方程的数学实验报告(3篇)

第1篇一、实验目的本次实验旨在通过对方程进行数学实验,加深对一元一次方程、一元二次方程、二元一次方程组等方程的理解,提高解决实际问题的能力。

二、实验内容1. 一元一次方程(1)实验步骤:①随机生成一组一元一次方程;②利用公式法或代入法求解方程;③验证解的正确性。

(2)实验结果:实验过程中,随机生成了10组一元一次方程,其中5组采用公式法求解,5组采用代入法求解。

经过验证,所有方程的解均正确。

2. 一元二次方程(1)实验步骤:①随机生成一组一元二次方程;②利用配方法、公式法或因式分解法求解方程;③验证解的正确性。

(2)实验结果:实验过程中,随机生成了10组一元二次方程,其中4组采用配方法求解,3组采用公式法求解,3组采用因式分解法求解。

经过验证,所有方程的解均正确。

3. 二元一次方程组(1)实验步骤:①随机生成一组二元一次方程组;②利用代入法、消元法或矩阵法求解方程组;③验证解的正确性。

(2)实验结果:实验过程中,随机生成了10组二元一次方程组,其中5组采用代入法求解,3组采用消元法求解,2组采用矩阵法求解。

经过验证,所有方程组的解均正确。

三、实验总结1. 通过本次实验,我们对一元一次方程、一元二次方程和二元一次方程组有了更深入的理解,掌握了解题方法。

2. 实验结果表明,采用不同的方法求解方程,可以得到相同的解。

在实际应用中,可以根据方程的特点选择合适的求解方法。

3. 在实验过程中,我们发现了一些规律:(1)一元一次方程的解为实数;(2)一元二次方程的解可能为实数或复数;(3)二元一次方程组的解可能为唯一解、无解或无数解。

四、实验拓展1. 对不同类型的方程,尝试使用计算机编程进行求解,提高实验效率。

2. 研究方程在实际问题中的应用,如经济、工程等领域。

3. 探讨方程在数学建模中的应用,提高解决实际问题的能力。

五、实验反思本次实验过程中,我们对方程的求解方法进行了深入研究,取得了一定的成果。

但在实验过程中,也存在一些不足之处:1. 实验数据量较小,可能无法全面反映各种方程的求解规律。

【MATLAB】实验五:数值微积分与方程数值求解

【MATLAB】实验五:数值微积分与方程数值求解

实验五 数值微积分与方程数值求解一、实验目的1. 掌握求数值导数和数值积分的方法。

2. 掌握代数方程数值求解的方法。

3. 掌握常微分方程数值求解的方法。

二、实验内容要求:命令手工 ( )输入1. 求函数在指定点的数值导数。

232()123,1,2,3026x x x f x x x x x==2. 用数值方法求定积分。

(1) 210I π=⎰的近似值。

(2) 2220ln(1)1x I dt xπ+=+⎰3. 分别用三种不同的数值方法解线性方程组。

6525494133422139211x y z u x y z u x y z u x y u +-+=-⎧⎪-+-=⎪⎨++-=⎪⎪-+=⎩4. 求非齐次线性方程组的通解。

1234123412342736352249472x x x x x x x x x x x x +++=⎧⎪+++=⎨⎪+++=⎩解:先建立M 函数文件,然后命令窗口中写命令。

121/119/112/115/111/1110/11100010X k k --⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥=++⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦,其中12,k k 为任意常数。

5. 求代数方程的数值解。

(1) 3x +sin x -e x =0在x 0=1.5附近的根。

(2) 在给定的初值x 0=1,y 0=1,z 0=1下,求方程组的数值解。

23sin ln 70321050y x y z x z x y z ⎧++-=⎪+-+=⎨⎪++-=⎩ans =1289/6826. 求函数在指定区间的极值。

(1) 3cos log ()xx x x x f x e ++=在(0,1)内的最小值。

(2) 33212112122(,)2410f x x x x x x x x =+-+在[0,0]附近的最小值点和最小值。

(以下选作题,是微分方程的数值解)7. 求微分方程的数值解。

x 在[1.0e-9,20]2250(0)0'(0)0xd y dy y dx dx y y ⎧-+=⎪⎪⎪=⎨⎪=⎪⎪⎩解:M 文件:运行结果:8. 求微分方程组的数值解,并绘制解的曲线。

实验五 矩阵的LU分解法

实验五 矩阵的LU分解法

实验五 矩阵的LU 分解法一、目的与要求:熟悉求解线性方程组的有关理论和方法;会编制列主元消去法、LU 分解法、雅可比及高斯—塞德尔迭代法德程序;通过实际计算,进一步了解各种方法的优缺点,选择合适的数值方法。

二、 实验内容:会编制列主元消去法、LU 分解法、雅可比及高斯—塞德尔迭代法德程序,进一步了解各种方法的优缺点。

三、 程序与实例列主元高斯消去法算法:将方程用增广矩阵[A ∣b ]=(ij a )1n (n )+⨯表示1) 消元过程对k=1,2,…,n-1①选主元,找{}n ,,1k ,k i k +∈使得k ,i k a =ik a ni k max ≤≤②如果0a k ,i k =,则矩阵A 奇异,程序结束;否则执行③。

③如果k i k ≠,则交换第k 行与第k i 行对应元素位置,j i kj k a a ↔ j=k,┅,n+1④消元,对i=k+1, ┅,n 计算kk ik ik a a l /=对j=l+1, ┅,n+1计算kj ik ij ij a l a a -=2) 回代过程①若0=nn a ,则矩阵A 奇异,程序结束;否则执行②。

②nn n n n a a x /1,+=;对i=n-1, ┅,2,1,计算ii ni j j ij n i i a x a a x /11,⎪⎪⎭⎫ ⎝⎛-=∑+=+程序与实例例1 解方程组⎪⎩⎪⎨⎧=++-=++-=++035.3643x .5072x .1835x .2137.2623x .43712x 347x .1 1.1833.555x 2.304x 0.101x 321321321输出结果如下:X[0]=-0.398234X[1]= 0.013795X[2]= 0.335144程序如下:#include<stdio.h>#include<math.h>main(){int i,j,p,o,l,q;double a[3][4]={{0.101,2.304,3.555,1.183},{-1.347,3.712,4.623,2.137},{-2.835,1.072,5.643,3.035}};double x[3],z[4];printf("列主元消去法\n");for(j=0;j<2;j++){for(i=j+1;i<3;i++){if(fabs(a[j][j])<fabs(a[i][j])){for(p=0;p<4;p++){z[p]=a[j][p];a[j][p]=a[i][p];a[i][p]=z[p];}/*交换得最大主元*/}}for(l=j+1;l<3;l++){for(q=3;q>=j;q--){a[l][q]=(a[l][q]-(a[l][j]/a[j][j])*a[j][q]);}}printf("进行消去:\n");for(o=0;o<3;o++){for(p=0;p<4;p++){printf("%12.6f",a[o][p]);}printf("\n");}}x[2]=a[2][3]/a[2][2];x[1]=(a[1][3]-x[2]*a[1][2])/a[1][1];x[0]=(a[0][3]-x[2]*a[0][2]-x[1]*a[0][1])/a[0][0];printf("最后的解:\n");for(i=0;i<3;i++){printf("x[%d]=%12.6f\n",i,x[i]);} } 结果如下:例2 解方程组⎪⎪⎪⎩⎪⎪⎪⎨⎧=++++=++++=++++=++++=++++-12.041.0F 1.02E 3.47D 1.04C 3.54B -6.301.0F2.01E 2.51D 4.04C 5.05B -8.531.0F 1.21E 2.92D 1.46C3.53B -20.071.0F 1.10E4.48D 1.21C 4.93B -32.041.0F 1.55E5.66D 2.40C 8.77B计算结果如下B=-1.161954C= 1.458125D=-6.004824E=-2.209018F= 14.719421程序如下:#include<stdio.h>#include<math.h>void main(void){int i,j,p,o,l,q;double a[5][6]={{8.77,2.40,5.66,1.55,1.0,-32.04},{4.93,1.21,4.48,1.10,1.0,-20.07},{3.53,1.46,2.92,1.21,1.0,-8.53},{5.05,4.04,2.51,2.01,1.0,-6.30},{3.54,1.04,3.47,1.02,1.0,-12.04}};double x[5],z[6];printf("列主元消去法求五元一次方程组:\n");for(j=0;j<4;j++){for(i=j+1;i<5;i++){if(fabs(a[j][j])<fabs(a[i][j])){for(p=0;p<6;p++){z[p]=a[j][p];a[j][p]=a[i][p];a[i][p]=z[p];}/*交换得最大主元*/}}for(l=j+1;l<5;l++){for(q=5;q>=j;q--){a[l][q]=(a[l][q]-(a[l][j]/a[j][j])*a[j][q]);}}printf("消去一列:\n");for(o=0;o<5;o++){for(p=0;p<6;p++){printf("%12.6f",a[o][p]);}printf("\n");}}x[4]=a[4][5]/a[4][4];x[3]=(a[3][5]-x[4]*a[3][4])/a[3][3];x[2]=(a[2][5]-x[4]*a[2][4]-x[3]*a[2][3])/a[2][2];x[1]=(a[1][5]-x[4]*a[1][4]-x[3]*a[1][3]-x[2]*a[1][2])/a[1][1];x[0]=(a[0][5]-x[4]*a[0][4]-x[3]*a[0][3]-x[2]*a[0][2]-x[1]*a[0][1])/a[0][0];printf("方程组的解为:\n");for(i=0;i<5;i++){printf("x[%d]=%12.6f\n",i,x[i]);}}矩阵直接三角分解法算法:将方程组A x=b 中的A 分解为A =LU ,其中L 为单位下三角矩阵,U 为上三角矩阵,则方程组A x=b 化为解2个方程组Ly =b ,Ux =y ,具体算法如下:①对j=1,2,3,…,n 计算j j a u 11=对i=2,3,…,n 计算1111/a a l i i =②对k=1,2,3,…,n:a. 对j=k,k+1,…,n 计算∑-=-=11k q qj kq kj kj u l a ub. 对i=k+1,k+2,…,n 计算kk k q qk iq ik ik u u l a l /)(11∑-=-=③11b y =,对k=2,3,…,n 计算∑-=-=11k q q kq k k y l b y④nn n n u y x /=,对k=n-1,n-2,…,2,1计算kk n k q q kq k k u x u y x /)(1∑+=-=注:由于计算u 的公式于计算y 的公式形式上一样,故可直接对增广矩阵[A ∣b ]=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡+++1,211,2222211,111211n n nn n n n n n n a a a a a a a a a a a a施行算法②,③,此时U 的第n+1列元素即为y 。

YuleWalker方程

YuleWalker方程

实验报告课程名称:学院:专业:年级:班级:姓名:学号:指导教师:实验五Yule-Walker 方程一)实验目的学习求解Yule-Walker 方程,建立随机信号的AR 模型。

二)实验原理随机信号可以看作是由当前激励白噪声w (n )以及若干次以往信号x (n -k )的线性组合产生,即所谓自回归模型(AR 模型)x (n )=w (n )—Y a x (n -k )kk =1H (z )=—11+—az —kk k =1模型参数满足Yule-Walker 方程矩阵形式k =1_R (0)R (—1)…R (1)R (0)…R (—p )「 R (2—a 1a 2R (2)R (p —1)R (p —2)…R (0)apR (p )求解Yule-Walker 方程,就可以得到AR 模型系数当模型阶次较大时,直接用矩阵运算求解的计算量大,不利于实时运算。

利用系数矩阵的特性,人们提出了如L-D 算法等快速算法。

(三)实验内容和步骤编写求解Yule-Walker 方程的程序,并对实际生理信号(例如脑电)建立AR 模型。

对同一数据,使用matlab 信号处理工具箱自带函数aryule 计算相同阶数AR 模型系数,检验程序是否正确。

用伪随机序列(白噪声)驱动AR 模型,观察输出是否与真实脑电信号相R(m )=-£xxaR (m —k )m >0kxx似,对比真实信号与仿真信号的功率谱。

流程图:实验流程图如下源程序:clear;clc;loadeegdata;x=eegdata(1:1024);%长度可以任意选择,但信号越长计算量越大loadecgdata;x=ecgdata(1:1024);%长度可以任意选择,但信号越长计算量越大p=12;%尝试改变模型阶数,观察效果Rxx=xcorr(x,'biased');Rtemp=zeros(1,p);Rl=zeros(p,1);fork=1:length(Rtemp)Rtemp(k)=Rxx(length(x)-1+k);Rl(k)=Rxx(length(x)+k);endRs=toeplitz(Rtemp);%生成自相关系数矩阵(Toeplitz型)A=-inv(Rs)*Rl;%AR模型系数估计Sw=[Rtemp(1),Rl']*[1;A];%白噪声方差估计%采用malab自带函数估计模型系数[a,E]=aryule(x,p);%a--系数,E--预测误差,k--反射系数da=a(2:end)-A'%自编程序求解是否正确?Stem(da);title('参数估计偏差')w=randn(size(x));x2=filter(1,a,w);%仿真数据figure;subplot(3,l,l);plot(x);title('真实数据');subplot(3,l,2);plot(x2);title('仿真数据');error二mean((x2-x).“2);Rxx2=xcorr(x2,'biased');Px=abs(fft(Rxx));Px2=abs(fft(Rxx2));figure;subplot(2,l,l);plot(-1023:1023,Px);title('真实信号功率谱');subplot(2,l,2);plot(-1023:1023,Px2);title('仿真信号功率谱');%%绘制Sw、E随p变化散点图,以下是统计得到的结果p=[8910111213141516];Sw=[1.05271.03011.01500.99610.99430.99420.98960.98770.9872];E=[3.87413.43373.32003.73143.36833.48093.58263.62533.4176];subplot(2,l,l);stem(p,Sw);xlabel('p');ylabel('Sw');title('Sw随p变化散点图');subplot(2,l,2);plot(p,E,'-o');xlabel('p');ylabel('E');title('E随p变化散点图');实验结果:1、p=12时,比较心电信号与脑电信号的da值,并作出散点图。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五 方程求解
实验目的
会正确使用Solve 和FindRoot 函数进行方程的求解。

与本实验相关的理论
1.牛顿切线法
设有一个函数y=f(x)。

方程f(x)=0在x=r 处有一个根,如图4﹣1所示。

对于此根,我们可以先估计一个初始值0x 。

然后用以下方法得到下一个更好的初始值1x 。

在点B())(,00x f x 作曲线的切线
y ﹣f())(()00/0x x x f x -=
交x 轴于1x (令y=0),即
)
()(0/001x f x f x x -= 同理,在点())(,11x f x 处作曲线的另一条切线,交x 轴于2x 即 )
(')(1112x f x f x x -= 一般地,设f(x)在[a, b]上满足条件:
(1) f(a).f(b)﹤0, (2) )(),(///x f x f 连续且不变号, (3) f()().//0x f x ﹥0
则由迭代公式
)
()(/1n n n n x f x f x x -=+ )((/n x f ≠0, n=0, 1, 2,…) 得到的序列单调收剑于
2.弦截法
设一个函数y=f(x)方程f(x)=0在区间[a, b]内有唯一根r ,如4﹣2所示。

在曲线y=f(x)上取两点A(a, f(a)) B)b, f(b))作弦,其方程为
y=),()()()(a x a
b a f b f a f ---+ 此弦与x 轴的交点横坐标为
)()
()(1a f a f b f a b a x ---= 将1x 作为方程的根r 的第一个近似值
如果,0)(1=x f 那么r x =1否则,再过两点B(b, ))(b f ())(,11x f x 作弦,该弦与x 轴的交点横坐标为
),()
()(11112x f x f b f x b x x ---= 将2x 作为方程的根r 的第二个近似值。

一般地,设f(x)满足条件:
(1) f(a).f(b)﹤0, (2) )()`(///x f x f 在[a, b]上连续且不变号,
(3) )(.///x f f ﹥0,)().)(///0x f x f a x =﹤0
取a 为固定点,),0b x =
则由迭代公式
)()
()(1n n n n n x f x f b f x b x x ---=+ (n=0, 1, 2, …), 得到的序列{}n x 单调于r
实 验 步 骤
一、代数方程
用函数Solve 可以求代数方程、方程组的精确或数值解,其中包括复值解。

其格式为
Solve[{f1= =0, f2= =0, …}, {x1, x2, …}]
其中表{f1= =0, f2= =0, …}中方程的等号必须是双等号,表{x1, x2, …}是方程组中未知量的集合。

例如:(*含有字母系数的方程*)
Clear[a, b, x]
Solve[a*x+b= =0, x] (*复数解*)
Clear[x]
Solve[∧x 2+x+1= =0, x] (*代数解,数值解*)
Clear[a, x]
a=Solve[=+--∧∧∧12*634x x x =0,x]
N[a] (*方程组*)
Clear[a, b]
a=(1+2*x 3)∧
b=(3+2*x+y 4)∧
Solve[{a= =0, b= =0}, {x, y}]
我们知道四次以上的多项式方程没有求代数解的一般方法,系统也求不出那些不能分解因式的四次以上的多项式方程的精确解,例如对方程:016235=+--x x x 系统求不出方程的精确解,这时可直接用函数NSolve 求出它的数值解。

其格式为
Nsolve[{f1= =0, f2= =0, …}, {x1, x2, …}, n]
其中的n 表示要求方程的解精确到小数点以后位。

例如:
Clear[a, x]
a=Nsolve[=+--∧∧∧12635x x x =0, x, 20]
说明:
为了说明某一程序或某一命令行的功能和作用,可以在程序的任何位置加以说明,其格式如下:
(*说明字符串*)
其中“说明字符串”可以是字母、数字和中文,语句“(*说明字符串*)”只起到对程序的说明作用,在程序执行时该语句将被忽略,因而该语句的加入对程序的执行结果没有任何影响。

二、一般方程的求解
对于更复杂的方程,用函数Solve或NSolve求不出根。

对于这样的方程可利用函数FindRoot求数值根,其格式分别为:
FindRoot[f1= =0, {x, 初值}]
和FindRoot[f1= =0, {x, 初值1,初值2}],
它们分别用牛顿切线法和弦截法来解方程。

由于函数FindRoot是采用牛顿切线法和弦截法求解的,因此必须找到包含方程的根r的区间[a, b],并且找到根的一个近似值作为初始值。

要解决这个问题,可以先作出函数f(x)的图象,从而找出方程f(x)=0的初值。

例如:
Clear[b, y, x]
b=Sin[x]Exp[2x]﹣Cos[x]
Plot[b, {x, ﹣2, 1}]
FindRoot[b= =0, {x, 0.5}]
运行结果为(如图4﹣3)
{x→0.412 804}.
此例用弦解法求解如下
Clear[b, y, x]
b=Sin[x]Exp[2x] ﹣Cos[x]
Plot[b, {x, ﹣2, 1}]
FindRoot[b= =0, {x, 0, 1}]
说明无论是牛顿切线法还是弦截法,当方程有重根或两个根非常接近或根与曲线的拐点非常接近时,可能会出现问题。

此时,可用下述格式:
FindRoot[f1= =0, {x, 初值}, 参数1,参数2]
和FindRoot[f1= =0, {x, 初值1,初值2},参数1,参数2] 通过加大参数的值加以改善。

其中参数1和参数2为
MaxIterations→n和WorkingPrecision→n
它们分别表示指定迭代的次数和求根的精度n。

如果还不行,则需改用其他方法。

限于篇幅,不再详述。

三、微分方程
微分方程可以用函数DSolve求解,其格式为:
DSolve[{微分方程表达式,初始条件},未知函数名称,未知函数的自变量名称]
例如:
Clear[y, t, a]
Dsolve[/y [t] ﹣a*t+1= =0, y[t], t]
执行结果:
{{y[t]→﹣t+22
1at +C[1]}} 又如:计算微分方程的初值解
Dsikve[{/y [t]﹣at+1= =0, y[1]= =2}, y[t], t]
实 验 报 告
实验名称:方程求解
实验日期: 年月日
指导教师:
实验人:
一、简述Solve 函数的使用格式是什么?
二、简述FindRoot 函数的使用格式是什么?使用时应注意什么?
三、简述DSolve 函数的使用格式是什么?
四、求解下列问题
1.解下列方程:
(1) 2x +x+1=0; (2) 3x ﹣1=0; (3) 026234=+--x x x (4)⎩
⎨⎧=-=-;1,022y x y x (5)求方程xlgx=1在区间[1, 3]内的近似解 2.解下列微分方程:
(1) ;1322///+=-+t y y (2),cos 12///t y y =+- ,21/
==x y。

相关文档
最新文档