matlab课设循环码的性能分析范文

matlab课设循环码的性能分析范文
matlab课设循环码的性能分析范文

课程设计任务书

题目: 循环码的性能分析

初始条件: MATLAB 软件,电脑,通信原理知识

要求完成的主要任务:

输入信号:速率为100Bd的矩形信号;信道:AWGN;

要求:1、画出编码器输入、输出信号,信道的输出信号,译码器的输出信号的波形、频谱

2、画出误码率与译码器输入信噪比的关系曲线;

时间安排:

1、第十三周:查阅资料

2、第十四周:仿真及撰写报告。

3、第十五周:答辩

指导教师签名: 2011 年 12 月 15 日

系主任(或责任教师)签名: 2011 年 12 月 15 日

目录

摘要....................................................... - 3 - Abstract ...................................................... - 4 -

1 引言........................................................ - 5 -

2 设计原理.................................................... - 6 -

2.1 循环码介绍............................................. - 6 -

2.1.1 循环码的多项式表示 ............................... - 6 -

2.1.2 (n,k)循环码的生成多项式 ......................... - 7 -

2.1.3 循环码的生成矩阵和一致校验矩阵 .................. - 7 -

2.2 循环码编码原理........................................ - 8 -

2.3 循环码的纠错原理....................................... - 9 -

3 程序与SIMULINK仿真....................................... - 12 -

3.1程序.................................................. - 12 -

3.1.1程序函数介绍..................................... - 12 -

3.1.2 各部分程序说明.................................. - 13 -

3.1.3运行结果......................................... - 14 -

3.2 SIMULINK仿真......................................... - 16 -

3.2.1 SIMULINK电路图.................................. - 17 -

3.2.2模块参数设置..................................... - 18 -

3.2.3 仿真波形........................................ - 19 -

3.2.4 仿真结果分析.................................... - 24 -

4 小结....................................................... - 2

5 - 参考文献..................................................... - 2

6 -

摘要

循环码是线性分组码中最重要的一种子类,是目前研究得比较成熟的一类码。循环码具有许多特殊的代数性质,这些性质有助于按照要求的纠错能力系统地构造这类码,并且简化译码算法,并且目前发现的大部分线性码与循环码有密切关系。循环码还有易于实现的特点,很容易用带反馈的移位寄存器实现其硬件。

本文只要是利用MATLAB中的SIMULINK通信系统仿真模型库进行循环码建模仿真,并调用通信系统功能函数进行编程,绘制时域波形,频谱及误码率与信噪比关系曲线图。在此基础上,对循环码的性能进行分析,得出结论。

关键词:MATLAB 循环码 SIMULINK 性能

Abstract

Cycle code is linear space-time block codes in the most important of a seed, is the present research more mature kind of code. Cyclic code has many special algebraic properties, these properties to help in accordance with the requirements of the error correction ability to construct the system of this kind of code, and simplified decoding algorithm, and the most of the linear code and found that there is a close relationship between cyclic code. Cyclic code and is easy to realize the characteristic, is easy to use with the feedback the shift register realize its hardware.

This paper as long as it is in the use of MATLAB simulation model base communication system SIMULINK cycle code modeling simulation, and call communication system function for programming, rendering time domain waveform and spectrum and the bit error rate and signal-to-noise ratio relations diagram. On this basis, the circulation yards of performance analysis, draw the conclusion.

Keywords: MATLAB cycle code SIMULINK performance

1 引言

MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks 公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和SIMULINK两大部分。

MATLABT通信系统功能函数库由七十多个函数组成,每个函数有多种选择参数,函数功能覆盖了现代通信系统的各个方面。这些函数包括:信号源产生函数、信源编码/解码函数、接错控制编码/解码函数、调制/解调函数(基带和通带)、滤波器函数、传输信道模型函数(基带和通带)、TDMA、FDMA、CDMA函数、同步函数、工具函数等。以纠错控制编解码函数为例:函数库提供了线性分组码、汉明码、循环码、BCH码、里德一索洛蒙码(REED---SOLOMON)、卷积码等6种纠错控制编码,每种编码又有编码、解码、矢量输入输出、序列输入输出等四种形式的函数表达。

在SIMULINK通信系统仿真模型库中,整个通信系统的流程图被概括为:信号的产生与输入、编码与解码、调制与解调。在SIMULIKE中通信系统仿真的一般模型如图1.1所示。

Source 信源Source Coding

信源编码

Error Control Coding

纠错控制编码

Modulation

调制

Multiple Access

多址复用

Transmitter/Filter

发射机/滤波器

Receiver/Filter 接收机/滤波器Channel 信道

Multiple Access 多址复用Demodulation

解调

Error Control Coding

纠错控制编码

Source Decoding

信源解码

Sink

输出

图1 通信系统仿真模型

2 设计原理

2.1 循环码介绍

循环码是线性分组码的一种,所以它具有线性分组码的一般特性,此外还具有循环性。循环码的编码和解码设备都不太复杂,且检(纠)错能力强。它不但可以检测随机的错误,还可以检错突发的错误。(n,k )循环码可以检测长为n-k 或更短的任何突发错误,包括首尾相接突发错误。

循环码是一种无权码,循环码编排的特点是相邻两个数码之间符合卡诺图中的邻接条件,即相邻两个数码之间只有一位码元不同,码元就是组成数码的单元。符合这个特点的有多种方案,但循环码只能是表中的那种。循环码的优点是没有瞬时错误,因为在数码变换过程中,在速度上会有快有慢,中间经过其它一些数码形式,称它们为瞬时错误。这在某些数字系统中是不允许的,为此希望相邻两个数码之间仅有一位码元不同,即满足邻接条件,这样就不会产生瞬时错误。循环码就是这样一种编码,它可以在卡诺图中依次循环得到。循环码又称格雷码( Grey Code )。

循环码最大的特点就是码字的循环特性,所谓循环特性是指:循环码中任一许用码组经过循环移位后,所得到的码组仍然是许用码组。若( 0121 a a a a n n -- )为一循环码组,则(1032 ---n n n a a a a )、(21 43 ----n n n n a a a a )……还是许用码组。也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循环码组。

2.1.1 循环码的多项式表示

设码长为n 的循环码表示为(0121 a a a a a i n n --), 其中i a 为二进制数,通常把码组中各码元当做二进制的系数,即把上式中长为n 的各个分量看做多项式:

()a x a x

a x

a x

a i

n i n n n n x T 012

21

1++++++=----- (2—1)

的各项系数,则码字与码多项式一一对应,这种多项式中,x 仅表示码元位置的标记,因此我们并不关心x 的取值,这种多项式称为码多项式。

2.1.2 (n,k)循环码的生成多项式

(n,k)循环码的生成多项式写为g(x),它是(n,k)循环码码集中唯一的,幂次为n-k 的码多项式,则)(x g x k 是一个幂次为n 的码多项式。按模(1+n x )运算,此时:

(2—2)

即 )()(x R x g x k ≡ (2—3) 且因k

x g(x)也是n 阶幂,故Q(x)=1。由于它是循环码,故)(x g x k 按模(1+n x )运算后的“余式”也是循环码的一个码字,它必能被g(x)整除,即: (2—4) 由以上两式可以得到:

)()()1()()1)(()(x g x f x x R x x Q x g x n n k ++=++= (2—5)

和 []

)()()()(1x g x h x g x f x x k

n

=+++ (2—6)

从上式中可以看出,生成多项式g(x)应该是1+n x 的一个因式,即循环码多项式应该是1+n x 的一个n-k 次因式。

2.1.3 循环码的生成矩阵和一致校验矩阵

对所有的i=0,1,2,……k -1,用生成多项式g(x)除n k i

x

-+,有:

)()()(x b x g x a x

i i i

k n +=+- (2—7)

式中)(x b i 是余式,表示为:

0,1,11,)(i i k n k n i i b x b x b x b ++=---- (2—8) 因此,)(x b x i k n ++-是g(x)的倍式,即)(1

x b x i k n ++-是码多项式,由此得到系统形式的生成矩阵为:

n

x R x Q n x g x k )()()( +

=)()

()

(x F x g x R =????????????=------------0,01,01,00,1,21,20,11,11

,10000010001b b b b b b b b b G k n x k k k n k k k k n k

(2—9)

它是一个k ?n 阶的矩阵。

同样,由G ?T H =0可以得到系统形式的一致校验矩阵为:

(2—10)

如已知(7,4)循环码的生成多项式和校验多项式分别为:1)(3++=x x x g ,

1)(24+++=x x x x h 。写得其生成矩阵和校验矩阵分别为:

(2—11)

(2—12)

2.2 循环码编码原理

有信息码构成信息多项式011)(m x m x m k k ++=-- ,其中最高幂次为k-1; 用k n x -乘以信息多项式m(x),得到的)(x m x k n -,最高幂次为n-1,该过程相当于把信息码(1-k m ,2-k m ,……,1m ,0m )移位到了码字德前k 个信息位,其后是r 个全为零的监督位;

用g(x)除)(x m x k n -得到余式r(x),其次数必小于g(x)的次数,即小于(n-k ),将此r(x)加于信息位后做监督位,即将r(x)于)(x m x k n -相加,得到的多项式必为一码多项式。

?

?

???

?

??????=

------------1000100010

,00

,20

,11,01,21,11,01,21,1

b b b b b b b b b H k k k k k n k n k k n k ????

?

?

???

???=1101000011010000110100001101G ????

??????=101110001011100010111H

根据上面的讨论,可得到在(7,4)循环码编码的程序框图如图1 所示:

2.3 循环码的纠错原理

纠错码的译码是该编码能否得到实际应用的关键所在。译码器往往比编码较难实现,对于纠错能力强的纠错码更复杂。根据不同的纠错或检错目的,循环码译码器可分为用于纠错目的和用于检错目的的循环码译码器。 通常,将接收到的循环码组进行除法运算,如果除尽,则说明正确传输;如果未除尽,则在寄存器中的内容就是错误图样,根据错误图样可以确定一种逻辑,来确定差错的位置,从而达到纠错的目的。用于纠错目的的循环码的译码算法比较复杂,感兴趣的话可以参考一些参考书。而用于

初始化

确定余式r(x): )

()()(x g x

x m x r k

n -= (2—13)

确定c(x): )()()(x r x x m x c k n +=- (2—14)错

图2.2.1 编码程序框图

存储c(x)

检错目的循环码,一般使用ARQ 通信方式。检测过程也是将接受到的码组进行除法运算,如果除尽,则说明传输无误;如果未除尽,则表明传输出现差错,要求发送端重发。用于这种目的的循环码经常被成为循环冗余校验码,即CRC 校验码。CRC 校验码由于编码电路、检错电路简单且易于实现,因此得到广泛的应用。在通过MODEM 传输文件的协议如ZMODEM 、XMODEM 协议中均用到了CRC 校验技术。在磁盘、光盘介质存储技术中也使用该方法。 当码字c 通过噪声信道传送时,会受到干扰而产生错误。如果信道产生的错误图样是e ,译码器收到的n 重接受矢量是y,则表示为:

e c y += (2—15) 上式也可以写成多项式形式:

)()()(x e x c x y += (2—16) 译码器的任务就是从y(x)中得到)(^

x e ,然后求的估值码字 )()(^

^)(x e x c x y += (2—17)

并从中得到信息组()m x ∧

。 循环码译码可按以下三个步骤进行: (1)有接收到的y(x)计算伴随式s(x);

(2)根据伴随式s(x)找出对应的估值错误图样()e x ∧

(3)计算)()(^

^

)(x e x c x y +=,得到估计码字()c x ∧。若)()(^

x c x c =,则译码正确,否则,若)()(^

x c x c ≠,则译码错误。

由于g(x) 的次数为n - k 次,g(x) 除E(x) 后得余式(即伴随式)的最高次数为n-k-1次,故S(x) 共有2n-k 个可能的表达式,每一个表达式对应一个错误格式。可以知道(7,4)循环码的S(x) 共有2(7-4) = 8个可能的表达式,可根据错误图样表来纠正(7,4)循环码中的一位错误,其伴随式如表1所示。 BCH (7,4)循环码错误图样表:

错误图样 错误图样码字 伴随式S(x)

伴随式 E 6(x)=x 6 1000000 x 2

100 E 5(x)=x 5

0100000

x 2+x

110

E 4(x)=x 4 0010000 x 2

+x+1 111 E 3(x)=x 3 0001000 x+1 011 E 2(x)=x 2 0000100 x 2

+1 101 E 1(x)=x 1 0000010 x 010 E 0(x)=x 0 0000001 1 001 E(x)=0

0000000

000

上式指出了系统循环码的译码方法:将收到的码字R (x ) 用g (x ) 去除,如果除尽则无错;否则有错。如果有错,可由余式S (x ) 一一找出对应图样,然后将错误图样E (x ) 与R (x ) 模2 和,即为所求码字C (x ) ,从而实现纠错目的。 根据前面的讨论,可得(7,4)循环码译码的程序框图如图2.3.1 所示:

表1 BCH (7,4)循环码错误图样表

初始化

由R(x)确定S(x):错误!未找

到引用源。

S(x)=0,无误码误

由S(x)确定错误图样E(x) 纠错)()()(X R X E x c +=

存储c(x)

图2.3.1 译码程序框图

3 程序与SIMULINK仿真

3.1程序

3.1.1程序函数介绍

MATLAB中提供了循环码的编码和译码函数,本程序直接调用进行编程。

(1)encode函数

功能:编码函数

语法:code=encode(msg,N,K,method,opt)

说明:用method指定的方法完成纠错编码。其中msg代表信息码元,是一个K列矩阵,N是编码后的码字长度;K是信息位的长度;opt是有些编码方式需要的参数。

(2)decode函数

功能:译码函数

语法:msg=decode(code,N,K,method,opt1,opt2,opt3,opt4);

说明:这个函数对接收到的码字进行译码,恢复出原始的信息,译码参数和方式必须和编码时采用的严格相同。它对接收到的码字,按method指定的方式进行译码;opt1,…,opt4是可选项的参数。

(3)cyclpoly函数

功能:生成循环码的生成多项式。

语法:p=cyclpoly(N,K);

p=cyclpoly(N,K,fd_flag);

说明:从p=cyclpoly(N,K)中可找到一个给定码长N和信息位长度K生成多项式p,注意不是任意给定一个多项式都可以作为生成多项式。

(4)randint函数

功能:引起一致地分布的任意整数矩阵

语法:out = randint(m)

out = randint(m,n)

out = randint(m,n,rg)

out = randint(m,n,rg,state)

(5)awgn函数

功能:在某一信号中加入高斯白噪声

语法:y = awgn(x,SNR);

说明:信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是复数,就加入复噪声。

(6)quantiz函数

功能:产生一个量化序号和输出量化值。

语法:index=quantiz(sig,partition);

[index ,quantiz]=quantiz(sig,partition,codebook);

[index,quant,distor]=quantiz(sig,partition,codebook);

说明:这个函数根据给定的区间参数量化信号,间隔矢量必须按递增顺序排列。

3.1.2 各部分程序说明

(1)编码程序

m = 3; n = 2^m-1; k = n-m;

msg = randint(k*4,1,2); %随机提取信号

subplot(2,2.1)

stem(msg)

title('编码器输入信号')

p=cyclpoly(n,k)% 循环码生成多项式

code = encode(msg,n,k,'cyclic',p); %对信号进行差错编码subplot(2,2,2)

stem(code)

title('编码器输出信号')

(2)差错译码程序

recode=decode(code,n,k,'cyclic',p) %对信号进行译码

subplot(2,3,4)

stem(recode)

title('译码器输出信号')

(3)频谱分析程序

t=-1:0.01:1;

x=recode;

N=length(x);

fx=fft(x);

df=100/N;

n=0:N/2;

f=n*df;

subplot(2,3,6);

plot(f,abs(fx(n+1))*2/N); grid;

title('频谱图')

3.1.3运行结果

总程序运行结果如下:

p =

1 0 0 1 1

Error rate in the received code: 0.033333 Error rate after decoding: 0

3.1.3.1

编码器的输入信号波形

图3.1.3.2 编码器的输出信号波形

图3.1.3.3 译码器输出信号波形

图3.1.3.4 信道输出信号

图3.1.3.5 频谱图

由上面所有的图可以发现,编码器输入信号并不完全相同,因为对信号的提取是随机的,所以码元也是随机的,信号经过编码器后,因为要加入监督码,所以波形变得更加密集了。信号经过译码后,波形和编码器输入信号大致相同,说明循环码的检错和纠错能力可以。

3.2 SIMULINK仿真

本系统有信号产生模块、信号循环编码模块、AWGN信道、信号循环译码模块、误码率计算模块组成,在图像观察模块(包括频谱仪和示波器)观察图形。

3.2.1 SIMULINK电路图

在设计中,本系统信号产生模块选用了伯努利二进制序列产生器(Bernoulli Binary Generator)来输出速率为100Bd的随机数字信号,然后进入二进制循环码编码器(Binary Cyclic Encoder)来进行编码,再送进入AWGN信道(加入高斯白噪声)传输,接受信号送入二进制循环码译码器(Binary Cyclic Decoder)进行差错纠正,其后加一误码率计算模块(Error Rate Calculation)计算误码率。再用示波器Scope观察波形,用spectrum scope观察频谱。电路图如图3.2.1所示。

图3.2.1 simulink仿真总图

3.2.2模块参数设置

图3.2.2.1 Bernoulli Binary Generator 图3.2.2.2 AWGNA Channel

图3.3.2.3 Error Rate Calculation 图3.3.2.4 To Workplace

3.2.3 仿真波形

图3.2.3.1 编码器输入信号波形Array

图3.2.3.2 编码器输入频谱

图3.2.3.3 编码器输出信号波形

图3.2.3.4 编码器输出信号频谱

00实验三 基于MATLAB的根轨迹绘制与性能分析

实验四基于MATLAB的根轨迹绘制与性能分析 [实验目的] 1.掌握MATLAB下的根轨迹绘制方法; 2.学会利用根轨迹进行系统分析。 [实验指导] 1.根轨迹作图函数(命令):rlocus( ) 调用格式: ①rlocus(sys) 或rlocus(num,den) ②rlocus(sys,k) ①②画根轨迹图,①变化参量(一般是根轨迹增益)范围系统自动给出; ②变化参量(一般是根轨迹增益)范围在程序中给出; ③r=rlocus(sys) ④ [r,k]=rlocus(sys) ③④不画根轨迹图,③返回闭环根向量;④返回闭环根向量(r)和变化参量(k)。 2.根与根轨迹增益的求取 ⑴在根轨迹上点击,可得到该点的根值和对应的根轨迹增益值。 ⑵使用计算给定根的根轨迹增益的函数(命令):rlocfind( ) 调用格式: ①[k,poles]=rlocfind(sys) ②[k,poles]= rlocfind(sys,p) 使用方法:

①首先,当前根轨迹已绘出。运行该命令时,在根轨迹图中显示出十字光标,当用户选择其中一点时,其相应的增益由k 记录,与增益相关的所有极点记录poles 中;同时,在命令行窗口显示出来。 ②事先事先给出极点p ,运行该命令时,除了显示出该根对应的增益以外,还显示出该增益对应的其它根。 3.开环零点极点位置绘图函数(命令): pzmap( ) 调用格式: ① pzmap(sys) ② [p,z]=pzmap(sys) 函数功能: 给定系统数学模型,作出开环零点极点位置图。 ① 零点极点绘图命令。零点标记为“+”,极点标记为“o”。 ② 返回零点极点值,不作图。 4.根轨迹渐进线的绘制 当根轨迹渐进线与实轴的交点σa 已求出后,可得到方程11()n m a K s σ-=--, 这是根轨迹渐进线的轨迹方程。 将1()() n m a K G s s σ-= -作为一个开环传递函数,录入到MATLAB 中,再使用根 轨迹作图函数(命令)rlocus( ),生成的轨迹就是原根轨迹的渐进线。 5.举例 例1:开环传递函数1 ()(1)(2) K G s s s s =++绘制其闭环根轨迹。 程序: >> z=[];p=[0,-1,-2];k=1;sys=zpk(z,p,k);rlocus(sys) 运行结果:

MATLAB实验报告50059

实验一MATLAB操作基础 实验目的和要求: 1、熟悉MATLAB的操作环境及基本操作方法。 2、掌握MATLAB的搜索路径及设置方法。 3、熟悉MATLAB帮助信息的查阅方法 实验内容: 1、建立自己的工作目录,再设置自己的工作目录设置到MA TLAB搜索路径下,再试 验用help命令能否查询到自己的工作目录。 2、在MA TLAB的操作环境下验证课本;例1-1至例1-4,总结MATLAB的特点。 例1-1

例1-2 例1-3 例1-4

3、利用帮助功能查询inv、plot、max、round等函数的功能。 4、完成下列操作: (1)在matlab命令窗口输入以下命令: x=0:pi/10:2*pi; y=sin(x); (2)在工作空间窗口选择变量y,再在工作空间窗口选择回绘图菜单命令或在工具栏中单击绘图命令按钮,绘制变量y的图形,并分析图形的含义。

5、访问mathworks公司的主页,查询有关MATLAB的产品信息。 主要教学环节的组织: 教师讲授实验目的、开发环境界面、演示实验过程,然后同学上机练习。 思考题: 1、如何启动与退出MA TLAB集成环境? 启动: (1)在windows桌面,单击任务栏上的开始按钮,选择‘所有程序’菜单项,然后选择MA TLAB程序组中的MA TLABR2008b程序选项,即可启动 MATLAB系统。 (2)在MA TLAB的安装路径中找到MA TLAB系统启动程序matlab.exe,然后运行它。 (3)在桌面上建立快捷方式后。双击快捷方式图标,启动MA TLAB。 退出: (1)在MA TLAB主窗口file菜单中选择exitMATLAB命令。 (2)在MA TLAB命令窗口中输入exit或quit命令。 (3)单击MATLAB主窗口的关闭按钮。 2、简述MATLAB的主要功能。 MATLAB是一种应用于科学计算领域的数学软件,它主要包括数值计算和符 号计算功能、绘图功能、编程语言功能以及应用工具箱的扩展功能。 3、如果一个MATLAB命令包含的字符很多,需要分成多行输入,该如何处理?

matlab实验报告

数学实验报告 班级: 学号: 姓名: 实验序号:1 日期:年 月 日 实验名称:特殊函数与图形 ◆ 问题背景描述:绘图是数学中的一种重要手段,借助图形,可以使抽象的对象得到 明白直观的体现,如函数的性质等。同时,借助直观的图形,使初学者更容易接受新知识,激发学习兴趣。 ◆ 实验目的:本实验通过绘制一些特殊函数的图形,一方面展示这些函数的特点属性, 另一方面,就 Matlab 强大的作图功能作一个简单介绍。 实验原理与数学模型: 1、 球2222x y z R ++= ,x=Rsin φcos θ, y= Rsin φsin θ, z= cos φ, 0≤θ≤2π , 0≤φ≤π 环面 222222222()4(),(cos )cos ,x y z a r a x y x a r φθ+++-=+=- (cos )sin ,sin ,02,02y a r z r φθφφπθπ=-=≤≤≤≤ 2、 平面摆线:2 22 31150,(sin ),(1cos ),0233 x y x a t t y a t t π+-==-=-≤≤ 3、 空间螺线:(圆柱螺线)x=acost , y=asint , z=bt ;(圆锥螺线)22 cos ,sin ,x t t y t t z t === 4、 椭球面sin cos ,sin sin ,cos ,02,0x a y b z c φθφθφθπφπ===≤<≤≤ 双叶双曲面3 tan cos ,tan sin ,sec ,02,22 x a y b z c π φθφθφθπφπ===≤<- << 双曲抛物面2 sec ,tan 2 u x au y bu z θθ=== 实验所用软件及版本:mathematica(3.0) 主要内容(要点): 1、 作出下列三维图形(球、环面) 2、 作出下列的墨西哥帽子 3、 作出球面、椭球面、双叶双曲面,单叶双曲面的图形 4、 试画出田螺上的一根螺线 5、 作出如图的马鞍面

数值分析MATLAB上机实验

数值分析实习报告 姓名:gestepoA 学号:201******* 班级:***班

序言 随着计算机技术的迅速发展,数值分析在工程技术领域中的应用越来越广泛,并且成为数学与计算机之间的桥梁。要解决工程问题,往往需要处理很多数学模型,不仅要研究各种数学问题的数值解法,同时也要分析所用的数值解法在理论上的合理性,如解法所产生的误差能否满足精度要求:解法是否稳定、是否收敛及熟练的速度等。而且还能减少大量的人工计算。 由于工程实际中所遇到的数学模型求解过程迭代次数很多,计算量很大,所以需要借助如MATLAB,C++,VB,JAVA的辅助软件来解决,得到一个满足误差限的解。本文所计算题目,均采用MATLAB进行编程,MATLAB被称为第四代计算机语言,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来MATLAB最突出的特点就是简洁,它用更直观的、符合人们思维习惯的代码。它具有以下优点: 1友好的工作平台和编程环境。MATLAB界面精致,人机交互性强,操作简单。 2简单易用的程序语言。MATLAB是一个高级的矩阵/阵列语言,包含控制语言、函数、数据结构,具有输入、输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编好一个较大的复杂的应用程序(M 文件)后再一起运行。 3强大的科学计算机数据处理能力。包含大量计算算法的集合,拥有600多个工程中要用到的数学运算函数。 4出色的图像处理功能,可以方便地输出二维图像,便于我们绘制函数图像。

目录 1 第一题 (4) 1.1 实验目的 (4) 1.2 实验原理和方法 (4) 1.3 实验结果 (5) 1.3.1 最佳平方逼近法 (5) 1.3.2 拉格朗日插值法 (7) 1.3.3 对比 (8) 2 第二题 (9) 2.1实验目的 (9) 2.2 实验原理和方法 (10) 2.3 实验结果 (10) 2.3.1 第一问 (10) 2.3.2 第二问 (11) 2.3.3 第三问 (11) 3 第三题 (12) 3.1实验目的 (12) 3.2 实验原理和方法 (12) 3.3 实验结果 (12) 4 MATLAB程序 (14)

matlab性能分析

Matlab 程序性能分析 一、简单计算程序运行时间:tic,toc—— Measure performance using stopwatch timer 基本用法:tStart=tic; any_statements; tElapsed=toc(tStart); 计时单位是“秒”;tic用于设置计时器开始,toc设置计时器结束;手册说tStart是一个64位的整数,仅用于toc参数时有意义,经测试tic是微妙级的计时器。示例: some_time = rand * 2 %% example 1: time measured by tic-toc tStart = tic; pause(some_time); tElapsed_toc = toc(tStart) %% example 2: time measured by tic-tic tStart = tic; pause(some_time); tElapsed_tic = double(tic-tStart) / 1000000 %% example 3: time measured by tic-tocs tStart = tic; pause(some_time); tElapsed_toc1 = toc(tStart) some_time = rand * 2 pause(some_time); tElapsed_toc2 = toc(tStart) tElapsed_toc_toc = tElapsed_toc2 - tElapsed_toc1 示例1展示了tic-toc的基本用法,示例2展示了只用tic实现的计时功能,示例3展示了利用一个tic和多个toc实现程序的分段计时。 二、不推荐使用的程序计时工具:cputime 和 clock & etime cputime的用法:t = cputime; any_statements; e = cputime-t clock & etime的用法:t = clock; any_statements; e = etime(clock, t) Matlab推荐用tic-toc计时,而不是这两种计时工具,具体请参考帮助文档。 三、全面分析程序运行时间:Profiler profile 只能分析Matlab代码编写的函数的运行时间(如ls,magic等),若函数非Matlab代码(如svd,dir等),无法分析其运行时间。 1、启动Profiler的三种方法 (1)从菜单栏启动:Desktop --> Profiler; (2)从Matlab的Editor中启动:Tools --> Open Profiler; (3)从命令行启动:profile -history -historysize integer-timer clock on

Matlab数学实验报告一

数学软件课程设计 题目非线性方程求解 班级数学081 姓名曹曼伦

实验目的:用二分法与Newton迭代法求解非线性方程的根; 用Matlab函数solve、fzero、fsolve求解非线性方程(组)的解。 编程实现二分法及Newton迭代法; 学会使用Matlab函数solve、fzero、fsolve求解非线性方程(组)的解。 通过实例分别用二分法及迭代法解非线性方程组并观察收敛速度。 实验内容: 比较求exp(x)+10*x-2的根的计算量。(要求误差不超过十的五次方) (1)在区间(0,1)内用二分法; (2)用迭代法x=(2-exp(x))/10,取初值x=0 。 试验程序 (1)二分法: format long syms x s=exp(x)+10*x-2 a=0; b=1; A=subs(s,a) B=subs(s,b) f=A*B %若f<0,则为由根区间 n=0; stop=1.0e-5; while f<0&abs(a-b)>=stop&n<=100; Xk=(a+b)/2; %二分 M= subs(s, Xk); if M* A<0 symbol=1 %若M= subs(s, Xk)为正,则与a二分 b= Xk else symbol=0 % 若M= subs(s, Xk)为负,则与b二分 a= Xk end n=n+1 end Xk n (2)牛顿迭代法; format long

syms x s= (2-exp(x))/10; %迭代公式 f=diff(s); x=0; %迭代初值 a=subs(f,x); %判断收敛性(a是否小于1) s=(2-exp(x))/10; stop=1.0e-5; %迭代的精度 n=0; while a<1&abs(s-x)>=stop&n<=100; x=s %迭代 s=(2-exp(x))/10; n=n+1 end 实验结果: (1)二分法: symbol =1 b =0.50000000000000 n =1 symbol =1 b =0.25000000000000 n =2 symbol =1 b =0.12500000000000 n =3 symbol =0 a =0.06250000000000 n =4 symbol =1 b =0.09375000000000 n =5 symbol =0 a =0.07812500000000 n =6 symbol =1 b =0.09054565429688 n =15 symbol =1 b =0.09053039550781 n =16 symbol =0 a =0.09052276611328 n =17 Xk =0.09052276611328 n =17 (2)迭代法 由x =0.10000000000000 n =1 x =0.08948290819244 n =2 x =0.09063913585958 n =3 x =0.09051261667437 n =4 x =0.09052646805264 n =5 试验结果可见用二分法需要算17次,而用迭代法求得同样精度的解仅用5次,但由于迭代法一般只具有局部收敛性,因此通常不用二分法来求得非线性方程的精确解,而只用它求得根的一个近似解,再用收敛速度较快的迭代法求得其精确解。

《MATLAB与数值分析》第一次上机实验报告

电子科技大学电子工程学院标准实验报告(实验)课程名称MATLAB与数值分析 学生姓名:李培睿 学号:2013020904026 指导教师:程建

一、实验名称 《MATLAB与数值分析》第一次上机实验 二、实验目的 1. 熟练掌握矩阵的生成、加、减、乘、除、转置、行列式、逆、范数等运算 操作。(用.m文件和Matlab函数编写一个对给定矩阵进行运算操作的程序) 2. 熟练掌握算术符号操作和基本运算操作,包括矩阵合并、向量合并、符号 转换、展开符号表达式、符号因式分解、符号表达式的化简、代数方程的符号解析解、特征多项式、函数的反函数、函数计算器、微积分、常微分方程的符号解、符号函数的画图等。(用.m文件编写进行符号因式分解和函数求反的程序) 3. 掌握Matlab函数的编写规范。 4、掌握Matlab常用的绘图处理操作,包括:基本平面图、图形注释命令、 三维曲线和面的填充、三维等高线等。(用.m文件编写在一个图形窗口上绘制正弦和余弦函数的图形,并给出充分的图形注释) 5. 熟练操作MATLAB软件平台,能利用M文件完成MATLAB的程序设计。 三、实验内容 1. 编程实现以下数列的图像,用户能输入不同的初始值以及系数。并以x, y为坐标显示图像 x(n+1) = a*x(n)-b*(y(n)-x(n)^2); y(n+1) = b*x(n)+a*(y(n)-x(n)^2) 2. 编程实现奥运5环图,允许用户输入环的直径。 3. 实现对输入任意长度向量元素的冒泡排序的升序排列。不允许使用sort 函数。 四、实验数据及结果分析 题目一: ①在Editor窗口编写函数代码如下:

利用matlab分析系统动态性能

利用matlab分析系统动态性能

控制系统的时域分析 一.系统阶跃响应的性能指标 表 1 系统性能指标 利用 matlab 程序求出各系统阶跃响应的性能指标及图像,如求原系统 1 的方程: num=1.05; den=conv([0.125,1],conv([0.5,1],[1,1,1])); G=tf(num,den); C=dcgain(G); [y,t]=step(G); plot(t,y) grid [Y,K]=max(y); tp=t(K) mp=100*(Y-C)/C n=1; while y(n)0.98*C)&&(y(i)<1.02*C) i=i-1; end ts=t(i)

图 1 系统 1 阶跃响应曲线图二.根据系统性能指标及图像分析系统 1.利用 Matlab 得各系统节约系统曲线,如图 2:num1=1.05; den1=conv([0.125,1],conv([0.5,1],[1,1,1])); G1=tf(num1,den1); [y1,t1]=step(G1); num2=1.05*[0.4762,1]; den2=conv([0.125,1],conv([0.5,1],[1,1,1])); G2=tf(num2,den2); [y2,t2]=step(G2); num3=1.05*[1,1]; den3=conv([0.125,1],conv([0.5,1],[1,1,1])); G3=tf(num3,den3); [y3,t3]=step(G3); num4=1.05*[0.4762,1]; den4=conv([0.25,1],conv([0.5,1],[1,1,1])); G4=tf(num4,den4); [y4,t4]=step(G4); num5=1.05*[0.4762,1]; den5=conv([0.5,1],[1,1,1]); G5=tf(num5,den5); [y5,t5]=step(G5); num6=1.05; den6=[1,1,1]; G6=tf(num6,den6);

数学实验“几种常见的求积分近似解的方法”实验报告(内含matlab程序)

西京学院数学软件实验任务书

实验二十一实验报告 一、实验名称:Romberg 积分法,Gauss 型积分法,高斯-勒让德积分法,高斯-切比雪夫积分法,高斯-拉盖尔积分法,高斯-埃尔米特积分法。 二、实验目的:进一步熟悉Romberg 积分法,Gauss 型积分法,高斯-勒让德积分法,高斯-切比雪夫积分法,高斯-拉盖尔积分法,高斯-埃尔米特积分法。 三、实验要求:运用Matlab/C/C++/Java/Maple/Mathematica 等其中一种语言完成程序设计。 四、实验原理: 1.Romberg 积分法: 龙贝格积分法是用里查森外推算法来加快复合梯形求积公式的收敛速度,它的算法如下,其中()i m T 是通过一系列逼近原定积分的龙贝格分值. 计算(0)1[()()]2 b a T f a f b -= + 对1,2,3,k n = ,计算下列各步: 21()(1)1 111 1(21)()[()]222k k k k k j b a j b a T T f a ---=---=++∑

对1,2,,m k = 和,1,2,,1i k k k =-- ,计算111 441 m i i i m m m m T T T --+-=- 随着计算的步骤的增加,()i m T 越来越逼近积分()b a f x dx ?。 2.Gauss 型积分法: 高斯积分公式的思想是用n 个不等距的节点123,,,n x x x x 对被积函数进行插值,然后对插值后的函数进行积分,其积分公式为: 1 1 1 ()()n k k k f x dx A f x -=≈∑? 如果积分区间不是[1,1]-,则需转换到此区间: 11()()222 b a b a b a b a f x dx f t dt ---+= +? ? 其中系数k A 、节点k x 与n 的关系如下表所示: 3.高斯-切比雪夫积分法: 第一类切比雪夫积分形式为: 1 1 ()()n k k k f x dx A f x -=≈∑? 其中k A n π= ,21cos 2k k x n π-= 4.高斯-拉盖尔积分法: 高斯-拉盖尔公式有两种形式: 1 ()()n x k k k e f x dx A f x +∞ -=≈∑?

QAM调制与解调的MATLAB实现及调制性能分析

通信原理课程设计报告书 课题名称 16QAM 调制与解调 的MATLAB 实现及调制性能分析 姓 名 学 号 学 院 通信与电子工程学院 专 业 通信工程 指导教师 李梦醒 2012年 01 月 01日 ※※※※※※※※※ ※※ ※ ※ ※ ※ 2009级通信工程专业 通信原理课程设计

16QAM调制与解调的MATLAB实现及调制性能分 析 1 设计目的 (1)掌握16QAM调制与解调的原理。 (2)掌握星座图的原理并能熟悉星座图的应用。 (3)熟悉并掌握MATLAB的使用方法。 (4)通过对16QAM调制性能的分析了解16QAM调制相对于其它调制方式的优缺点。 2 设计原理 正交振幅调制(Quadrature Amplitude Modulation,QAM)是一种振幅和相位联合键控。虽然MPSK和MDPSK等相移键控的带宽和功率方面都具有优势,即带宽占用小和比特噪声比要求低。但是由图1可见,在MPSK体制中,随着 8/ 5π 8/ 3π 8/ π 8/ 7π 8/ 9π 8/ 11π 8/ 13π

8/15π 图 1 8PSK 信号相位 M 的增大,相邻相位的距离逐渐减小,使噪声容限随之减小,误码率难于保证。为了改善在M 大时的噪声容限,发展出了QAM 体制。在QAM 体制中,信号的振幅和相位作为两个独立的参量同时受到调制。这种信号的一个码元可以表示为 0()cos() (1)k k k s t A t kT t k T ωθ=+<≤+ (2—1) 式中:k=整数;k A 和k θ分别可以取多个离散值。 式(2—1)可以展开为 00()cos cos sin sin k k k k k s t A t A t θωθω=- (2—2) 令 X k = A k cos k , Y k = -A k sin k 则式(2—1)变为 00()cos sin k k k s t X t Y t ωω=+ (2—3) k X 和k Y 也是可以取多个离散的变量。从式(2—3)看出,()k s t 可以看作是两个 正交的振幅键控信号之和。 在式(2—1)中,若k 值仅可以取 /4和-/4,A k 值仅可以取+A 和-A , 则此QAM 信号就成为QPSK 信号,如图2所示: 图2 4QAM 信号矢量图

matlab数学实验报告5

数学实验报告 制作成员班级学号 2011年6月12日

培养容器温度变化率模型 一、实验目的 利用matlab软件估测培养容器温度变化率 二、实验问题 现在大棚技术越来越好,能够将温度控制在一定温度范围内。为利用这种优势,实验室现在需要培植某种适于在8.16℃到10.74℃下能够快速长大的甜菜品种。为达到实验所需温度,又尽可能地节约成本,研究所决定使用如下方式控制培养容器的温度:1,每天加热一次或两次,每次约两小时; 2,当温度降至8.16℃时,加热装置开始工作;当温度达到10.74℃时,加热装置停止工作。 已知实验的时间是冬天,实验室为了其它实验的需要已经将实验室的温度大致稳定在0℃。下表记录的是该培养容器某一天的温度 时间(h)温度(℃)时间(h)温度(℃)09.68 1.849.31 0.929.45 2.959.13 3.878.981 4.989.65 4.988.811 5.909.41 5.908.691 6.839.18 7.008.5217.938.92 7.938.3919.048.66 8.978.2219.968.43 9.89加热装置工作20.848.22 10.93加热装置工作22.02加热装置工作10.9510.8222.96加热装置工作12.0310.5023.8810.59 12.9510.2124.9910.35 13.889.9425.9110.18 三、建立数学模型 1,分析:由物理学中的傅利叶传热定律知温度变化率只取决于温度

差,与温度本身无关。因为培养容器最低温度和最高温度分别是:8.16℃和10.74℃;即最低温度差和最高温度差分别是:8.16℃和10.74℃。而且,16.8/74.10≈1.1467,约为1,故可以忽略温度对温度变化率的影响2, 将温度变化率看成是时间的连续函数,为计算简单,不妨将温度变化率定义成单位时间温度变化的多少,即温度对时间连续变化的绝对值(温度是下降的),得到结果后再乘以一系数即可。 四、问题求解和程序设计流程1)温度变化率的估计方法 根据上表的数据,利用matlab 做出温度-时间散点图如下: 下面计算温度变化率与时间的关系。由图选择将数据分三段,然后对每一段数据做如下处理:设某段数据为{(0x ,0y ),(1x ,1y ),(2x , 2y ),…,(n x ,n y )},相邻数据中点的平均温度变化率采取公式: 温度变化率=(左端点的温度-右端点的温度)/区间长度算得即:v( 2 1i i x x ++)=(1+-i i y y )/(i i x x - +1). 每段首尾点的温度变化率采用下面的公式计算:v(0x )=(30y -41y +2y )/(2x -0x )v(n x )=(3n y -41+n y +2+n y )/(n x -2-n x )

matlab实验报告

实验一小球做自由落体运动内容:一小球竖直方向做自由落体,并无损做往返运动。程序: theta=0:0.01:2*pi x=cos(theta) y=sin(theta) l=1 v=1 while l<10 for t=1:10 y=y+(-1)^l*v*t plot(x,y,[-1,1],[-56,2],'.') axis equal pause(0.1) end l=l+1 end 结果:

-50 -40 -30 -20 -10 收获:通过运用小球自由落体规律,及(-1)^n 来实现无损往 返运动! 实验二 旋转五角星 内容:一个五角星在圆内匀速旋转 程序:x=[2 2 2 2 2 2] y=[0 4/5*pi 8/5*pi 2/5*pi 6/5*pi 0] y1=2*sin(y) x1=2*cos(y) theta=0:4/5*pi:4*pi

x2=2*cos(theta) y2=2*sin(theta) plot(x,y,x1,y1,x2,y2) axis equal theta1=theta+pi/10 x2=2*cos(theta1) y2=2*sin(theta1) plot(x2,y2) axis equal theta=0:4/5*pi:4*pi for rot=pi/10:pi/10:2*pi x=2*cos(theta+rot) y=2*sin(theta+rot) plot(x,y) pause(0.1) end 结果:

-2 -1.5-1-0.500.51 1.52 -2-1.5-1-0.500.511.5 2 收获:通过theta1=theta+pi/10,我们可以实现五角星在圆内匀速 旋转! 实验三 转动的自行车 内容:一辆自行车在圆内匀速转动 程序:x=-4:0.08:4; y=sqrt(16-x.^2); theta1=-pi/2:0.01*pi:3*pi/2; x3=0.5*cos(theta1); y3=0.5*sin(theta1); theta=-pi/2+0.02*pi for k=1:100

Matlab作业3(数值分析)答案

Matlab作业3(数值分析) 机电工程学院(院、系)专业班组 学号姓名实验日期教师评定 1.计算多项式乘法(x2+2x+2)(x2+5x+4)。 答: 2. (1)将(x-6)(x-3)(x-8)展开为系数多项式的形式。(2)求解在x=8时多项 式(x-1)(x-2) (x-3)(x-4)的值。 答:(1) (2)

3. y=sin(x),x从0到2π,?x=0.02π,求y的最大值、最小值、均值和标准差。 4.设x=[0.00.30.8 1.1 1.6 2.3]',y=[0.500.82 1.14 1.25 1.35 1.40]',试求二次多项式拟合系数,并据此计算x1=[0.9 1.2]时对应的y1。解:x=[0.0 0.3 0.8 1.1 1.6 2.3]'; %输入变量数据x y=[0.50 0.82 1.14 1.25 1.35 1.40]'; %输入变量数据y p=polyfit(x,y,2) %对x,y用二次多项式拟合,得到系数p x1=[0.9 1.2]; %输入点x1 y1=polyval(p,x1) %估计x1处对应的y1 p = -0.2387 0.9191 0.5318 y1 = a) 1.2909

5.实验数据处理:已知某压力传感器的测试数据如下表 p为压力值,u为电压值,试用多项式 d cp bp ap p u+ + + =2 3 ) ( 来拟 合其特性函数,求出a,b,c,d,并把拟合曲线和各个测试数据点画在同一幅图上。解: >> p=[0.0,1.1,2.1,2.8,4.2,5.0,6.1,6.9,8.1,9.0,9.9]; u=[10,11,13,14,17,18,22,24,29,34,39]; x=polyfit(p,u,3) %得多项式系数 t=linspace(0,10,100); y=polyval(x,t); %求多项式得值 plot(p,u,'*',t,y,'r') %画拟和曲线 x = 0.0195 -0.0412 1.4469 9.8267

(完整版)功率谱估计性能分析及Matlab仿真

功率谱估计性能分析及Matlab 仿真 1 引言 随机信号在时域上是无限长的,在测量样本上也是无穷多的,因此随机信号的能量是无限的,应该用功率信号来描述。然而,功率信号不满足傅里叶变换的狄里克雷绝对可积的条件,因此严格意义上随机信号的傅里叶变换是不存在的。因此,要实现随机信号的频域分析,不能简单从频谱的概念出发进行研究,而是功率谱[1]。 信号的功率谱密度描述随机信号的功率在频域随频率的分布。利用给定的 N 个样本数据估计一个平稳随机信号的功率谱密度叫做谱估计。谱估计方法分为两大类:经典谱估计和现代谱估计。经典功率谱估计如周期图法、自相关法等,其主要缺陷是描述功率谱波动的数字特征方差性能较差,频率分辨率低。方差性能差的原因是无法获得按功率谱密度定义中求均值和求极限的运算[2]。分辨率低的原因是在周期图法中,假定延迟窗以外的自相关函数全为0。这是不符合实际情况的,因而产生了较差的频率分辨率。而现代谱估计的目标都是旨在改善谱估计的分辨率,如自相关法和Burg 法等。 2 经典功率谱估计 经典功率谱估计是截取较长的数据链中的一段作为工作区,而工作区之外的数据假设为0,这样就相当将数据加一窗函数,根据截取的N 个样本数据估计出其功率谱[1]。 周期图法( Periodogram ) Schuster 首先提出周期图法。周期图法是根据各态历经的随机过程功率谱的定义进行的谱估计。 取平稳随机信号()x n 的有限个观察值(0),(1),...,(1)x x x n -,求出其傅里叶变换 1 ()()N j j n N n X e x n e ω ω---==∑ 然后进行谱估计

MATLAB实验报告

数字信号处理及MATLAB 实验报告 班级: 学号: 姓名:

4.7.2 例4,2 设x(n)是由两个正弦信号及白噪声的叠加,试用FFT文件对其作频谱分析。程序清单 %产生两个正弦加白噪声 N=256; f1=.1;f2=.2;fs=1; a1=5;a2=3; w=2*pi/fs; x=a1*sin(w*f1*(0:N-1))+a2*sin(w*f2*(0:N-1))+randn(1,N); %应用FFT求频谱 subplot(2,2,1); plot(x(1:N/4)); title('原始信号'); f=-0.5:1/N:0.5-1/N; x=fft(x); y=ifft(x); subplot(2,2,2); plot(f,fftshift(abs(x))); title('频域信号'); subplot(2,2,3); plot(real(x(1:N/4))); title('时域信号');

例4.3 设x(n)为长度N=6的矩形序列,用MATLAB程序分析FFT取不同长度时x(n)频谱的变化。N=8,32,64,时x(n)的FFT MATLAB实现程序如下。 x=[1,1,1,1,1,1]; N=8; y1=fft(x,N); n=0:N-1; subplot(3,1,1);stem(n,abs(y1),'.k');axis([0,9,0,6]); N=32; y2=fft(x,N); n=0:N-1; subplot(3,1,2);stem(n,abs(y2),'.k');axis([0,40,0,6]); N=64; y3=fft(x,N); subplot(3,1,3);stem(n,abs(y3),'.k');axis([0,80,0,6]);

参考答案Matlab实验报告

实验一 Matlab基础知识 一、实验目的: 1.熟悉启动和退出Matlab的方法。 2.熟悉Matlab命令窗口的组成。 3.掌握建立矩阵的方法。 4.掌握Matlab各种表达式的书写规则以及常用函数的使 用。 二、实验内容: 1.求[100,999]之间能被21整除的数的个数。(rem) 2.建立一个字符串向量,删除其中的大写字母。(find) 3.输入矩阵,并找出其中大于或等于5的元素。(find) 4.不采用循环的形式求出和式 63 1 2i i= ∑ 的数值解。(sum) 三、实验步骤: ●求[100,199]之间能被21整除的数的个数。(rem) 1.开始→程序→Matlab 2.输入命令: ?m=100:999; ?p=rem(m,21); ?q=sum(p==0) ans=43 ●建立一个字符串向量,删除其中的大写字母。(find) 1.输入命令:

?k=input('’,’s’); Eie48458DHUEI4778 ?f=find(k>=’A’&k<=’Z’); f=9 10 11 12 13 ?k(f)=[ ] K=eie484584778 ●输入矩阵,并找出其中大于或等于5的元素。(find) 1.输入命令: ?h=[4 8 10;3 6 9; 5 7 3]; ?[i,j]=find(h>=5) i=3 j=1 1 2 2 2 3 2 1 3 2 3 ●不采用循环的形式求出和式的数值解。(sum) 1.输入命令: ?w=1:63; ?q=sum(2.^w) q=1.8447e+019

实验二 Matlab 基本程序 一、 实验目的: 1. 熟悉Matlab 的环境与工作空间。 2. 熟悉M 文件与M 函数的编写与应用。 3. 熟悉Matlab 的控制语句。 4. 掌握if,switch,for 等语句的使用。 二、 实验内容: 1. 根据y=1+1/3+1/5+……+1/(2n-1),编程求:y<5时最大n 值以及对应的y 值。 2. 编程完成,对输入的函数的百分制成绩进行等绩转换,90~100为优,80~89为良,70~79为中,60~69为及格。 3. 编写M 函数文件表示函数 ,并分别求x=12和56时的函数值。 4. 编程求分段函数 2226;03 56;0532 1;x x x x y x x x x x x x +-<≠=-+≤<≠≠-+且且及其它,并求输入x=[-5.0,-3.0,1.0,2.0,2.5,3.0,3.5]时的输出y 。 三、 实验步骤: 根据y=1+1/3+1/5+……+1/(2n-1),编程求:y<5时最大n 值以及对应的y 值。 1. 打开Matlab ,新建M 文件 2. 输入命令: 51022-+x

数值分析实验报告1

实验一 误差分析 实验(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对()中19x 的系数作一个小的扰动。我们希望比较()和()根的差别,从而分析方程()的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b =

的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve = ))20:1((ve poly roots + 上述简单的Matlab 程序便得到()的全部根,程序中的“ess ”即是()中的ε。 实验要求: (1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。 如果扰动项的系数ε很小,我们自然感觉()和()的解应当相差很小。计算中你有什么出乎意料的发现表明有些解关于如此的扰动敏感性如何 (2)将方程()中的扰动项改成18x ε或其它形式,实验中又有怎样的现象 出现 (3)(选作部分)请从理论上分析产生这一问题的根源。注意我们可以将 方程()写成展开的形式, ) 3.1(0 ),(1920=+-= x x x p αα 同时将方程的解x 看成是系数α的函数,考察方程的某个解关于α的扰动是否敏感,与研究它关于α的导数的大小有何关系为什么你发现了什么现象,哪些根关于α的变化更敏感 思考题一:(上述实验的改进) 在上述实验中我们会发现用roots 函数求解多项式方程的精度不高,为此你可以考虑用符号函数solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。

浅析Matlab数学实验报告

数学实验报告 姓名: 班级: 学号: 第一次实验任务 过程: a=1+3i; b=2-i; 结果: a+b =3.0000 + 2.0000i a-b =-1.0000 + 4.0000i a*b = 5.0000 + 5.0000i a/b = -0.2000 + 1.4000i 过程: x=-4.5*pi/180; y=7.6*pi/180; 结果: sin(abs(x)+y)/sqrt(cos(abs(x+y))) =0.2098 心得:对于matlab 中的角度计算应转为弧度。 (1)过程: x=0:0.01:2*pi; y1=sin(x); y2=cos(x); y3=exp(x); y4=log(x); plot(x,y1,x,y2,x,y3,x,y4) plot(x,y1,x,y2,x,y3,x,y4) 结果: (2)过程:>> subplot(2,2,1) >> plot(x,y1) >> subplot(2,2,2) >> plot(x,y2) ./,,,,2,311b a b a b a b a i b i a ?-+-=+=计算、设有两个复数 6,7,5.4)

cos()sin(2=-=++y x y x y x ,其中、计算的图形。 下分别绘制)同一页面四个坐标系)同一坐标系下(、在( x y e y x y x y x ln ,,cos ,sin 213==== >> subplot(2,2,3) >> plot(x,y3) >> subplot(2.2.4) >> subplot(2,2,4) >> plot(x,y4) 结果: 心得:在matlab中,用subplot能够实现在同一页面输出多个坐标系的图像,应注意将它与hold on进行区别,后者为在同一坐标系中划出多条曲线。 5、随机生成一个3x3矩阵A及3x2矩阵B,计算(1)AB,(2)对B中每个元素平方后得到的矩阵C,(3)sinB,(4)A的行列式,(5)判断A是否可逆,若可逆,计算A的逆矩阵,(6)解矩阵方程AX=B,(7)矩阵A中第二行元素加1,其余元素不变,得到矩阵D,计算D。 过程:A=fix(rand(3,3).*10) ; B=fix(rand(3,3).*10);

实验6答案 Matlab数值计算

实验6 Matlab数值计算 实验目的: 1、掌握数据统计与分析的方法; 2、掌握数据插值和曲线拟合的方法及其应用; 3、掌握多项式的常用运算。 实验内容: 1.利用randn函数生成符合正态分布的10×5随机矩阵A,进行如下操作: (1)求A的最大元素和最小元素; (2)求A的每行元素的和以及全部元素的和; (3)分别对A的每列元素按升序、每行元素按降序排列。 a = randn(10,5)+10; ma = max(max(a)) mi = min(min(a)) s = sum(a,2) sa = sum(sum(a)) p = sort(a) p1 = -sort(-a,2) 2.用3次多项式方法插值计算1-100之间整数的平方根。 f = sqrt(n); interp1(n,f,(1:100),'cubic') 3.某气象观测站测得某日6:00-18:00之间每隔2h的室内外温度(°C)如下表所示。

使用三次样条插值分别求出该日室内外6:30-17:30之间每隔2h 各点的近似温度,并绘制插值后的温度曲线。 n= 6:2:18; f1 = [18 20 22 25 30 28 24]; f2 = [15 19 24 28 34 32 30]; r = 6.5:2:17.5; w = interp1(n,f1,r,'spline'); w1 = interp1(n,f2,r,'spline'); subplot(211),plot(r,w) subplot(212),plot(r,w1) 4. 已知lgx 在[1,101]区间10个整数采样点的函数值如下表所示, 试求lgx 的5次拟合多项式p(x),并绘制lgx 和p(x)在[1,101]区间的函数曲线。 x = linspace(1,101,10); y = log(x) /log(10); p = polyfit(x,y,5) y1 = polyval(p,x) plot(x,y,':o',x,y1,'-*') legend('sin(x)','fit') 5. 有3个多项式(),(),()P x x x x P x x P x x x =+++=+=++4 3 2 2 123245223,试进 行下列操作: (1) 求()()()()P x P x P x P x =+123。 (2) 求()P x 的根。 (3) 当x 取矩阵A 的每一元素时,求()P x 的值。其中: .....A --?? ? ?=?????? 11214075 2350 5 25 p1 = [1 2 4 0 5]; p2 = [0 0 0 1 2];

相关文档
最新文档