驻波的matlab实验

时间:2024.4.30

Matlab在物理实验中的应用》实验报告

学生姓名:胡辉        学号:200907302119       专业班级: 通信工程

一、   实验项目名称         

驻波的形成

二、   实验目的及意义

1、        学会用matlab做物理实验。

2、        熟悉二维绘图函数命令。

3、        观察和研究驻波的形成及特点。

三、   实验原理

1、驻波的数学表达式

两列相干波,如果振幅相等,传播方向相反,它们的合成波将不是横波而是驻波。设有两列相干横波y1,y2分别向x轴正负方向传播,其表达式如下:

y1 = A1sink(x-vt)

y2 = A2sink(x+vt)

           其中|A1|=|A1|,k为常数,根据叠加原理,可得驻波的表达式为:

y= y1+y2= A1sink(x-vt)+ A2sink(x+vt)

          =(A1+A2)sinxcos(vt)+(A2-A1)cosxsin(vt)

当A1=A2时

y=(A1+A2)sinxcos(vt)

          可以看出驻波是两列横波相乘的结果。

2、驻波的特点

①波腹与波节。

与横波不同的是,在驻波的波线上有些点始终不发生振动,即振幅为零,这些点称为波节;而有些点的振幅始终具有极大值,称之为波腹。横波波线上的质点的振幅是随着波的传播不断变化的。

由上面驻波表达式可知此驻波的振幅为:(A1+A2)|sinx|,

它只与质点的位置x有关,与时间t无关。

②驻波中各质点作同步振动,行波中各质点作波浪式的振动。

驻波中的各质点同时达到各自的最大位移,同时经过各自的平衡位置,因此,我们称驻波各质点作同步振动。

四、   实验内容

1、        在同一窗口绘制y1与y2 的动态波形图,要求y1向x轴正向传播,y2向x轴负向传播,且颜色不同.x考察区间为【0,4】,时间t从t=0到t=10结束,A1=-1,A2=1.k=π,v=1.

2、        导出驻波形成动画,观察研究驻波的振动特点。

3、        在同一窗口中绘制y1,y2,y1与y2,y=y1+y2的动画,各参数要求同1。

五、   实验参考程序

1、两横波Y1与y2程序

% y1与y2

k=pi;v=1;A1=-1;A2=1;

x=0:0.01:4;

t=0:0.01:10;

for i=1:length(t)-1

y1=A1*sin(k*(x-v*t(i)));

y2=A2*sin(k*(x+v*t(i)));

plot(x,y1,'r',x,y2,'b'),axis([-1,5,-1.5,1.5]);

grid on;

xlabel('两列波某一时刻的波形');

pause(0.01);

end

2、驻波

% 驻波

k=pi;v=1;A1=-1;A2=1;

x=0:0.01:4;

t=0:0.01:10;

for i=1:length(t)-1

    y1=A1*sin(k*(x-v*t(i)));

    y2=A2*sin(k*(x+v*t(i)));

    y=y1+y2;

      plot(x,y,'r'),axis([-1,5,-2.2,2.2]);

      grid on;

    xlabel('驻波');

    pause(0.01);

end

3、驻波的形成

% 驻波的形成

k=pi;v=1;A1=-1;A2=1;

x=0:0.01:4;

t=0:0.01:10;

for i=1:length(t)-1

    y1=A1*sin(k*(x-v*t(i)));

    y2=A2*sin(k*(x+v*t(i)));

    y=y1+y2;

    subplot(2,2,1);

    plot(x,y1,'r'),axis([-1,5,-2.2,2.2]);

    xlabel('从左到右');

    subplot(2,2,2);

    plot(x,y2,'b'),axis([-1,5,-2.2,2.2]);

    xlabel('从右到左');

    subplot(2,2,3);

    plot(x,y1,'r',x,y2,'b'),axis([-1,5,-2.2,2.2]);

    xlabel(‘两列波某一时刻的波形');

    subplot(2,2,4);

   plot(x,y,'r'),axis([-1,5,-2.2,2.2]);

    xlabel('驻波');

    pause(0.01);

end

六、   实验结果

两横波:y1与y2

驻波

驻波的形成


第二篇:Matlab实验三


20##20##级《MATLAB程序设计》实验报告

实验三  班级:软件122    姓名:张丽静    学号:122489

一、实验目的

1、掌握建立和执行M文件的方法。

2、掌握选择结构、多分支选择结构程序的编程方法。  

3、掌握多种循环结构程序的编程方法。

4、掌握定义函数文件和调用函数文件的方法。

二、实验内容

1、MATLAB M文件的创建与使用。

(1)   建立自己工作目录,如D:\MATLAB。在File菜单中,单击Set Path菜单项,在弹出对话框中建立目标文件夹,:单击Add Folder按钮,将自己的工作目录D:\MATLAB添加到搜索目录之中,按Save按钮保存,如图1。

图1 工作目录设置

(2)   在M文件编辑器中编制命令行文件。在File菜单中,单击New—>M-File,弹出M文件编辑器,如图2:

图2 编辑器

在编辑器中输入如下命令程序:

%求小于20##且为2的整数次幂的正整数。

        f(1)=2;

        k=1;

        while f(k)<1000

        f(k+1)=f(k)*2;

        k=k+1;

        end

        f,k

调试后,将其以test1.m形式保存在D:\MATLAB中。

(3)     命令行程序运行。进入命令窗口,键入test1,观察运行结果:

(4)     按上述步骤,在在编辑器中输入如下函数文件:

function f=tt(n)

     %求小于任何正整数且为2的整数次幂的正整数。

     %c=n(n)

     %n可取任意正整数。

     %

     %20##年8月。

     f(1)=2;

     k=1;

     while f(k)<ceil(n/2)  %ceil函数取最近的正整数

     f(k+1)=f(k)*2;

     k=k+1;

     end

     f

调试后,将其以test2.m形式保存在D:\MATLAB中。

(5)     进入命令窗口,键入test2(9),观察程序运行结果。

2、编写一个函数M文件,计算下面函数的值,给出标量x的值,调用该函数后,返回y的值。

选择一些数据测试编写的函数。

3、编写一个函数M文件,返回向量x中元素的和、平均值、最大值、最小值、均方根值。其中方均根值(Root Mean Square)的计算公式为:

并用下面数据测试你写的函数:

(1)     x=sin(0:0.01:6*pi)

>> x=sin(0:0.01:6*pi);

>> y=text4(x)

(2)     x=rand(1,200),得到的x为200个(0,1)之间均匀分布的随机数。

 >> x=rand(1,200);

>> y=text4(x)

4、编写一个函数M文件,若给出一个向量,函数返回如下范德蒙矩阵。

例如在命令窗口输入>>v=myvander([2 3 4 5]),得,同时生成一些数据测函数。

5、分别使用while和for编写命令文件,用循环语句编程计算s值:

同时对编写的文件设置断点,观察变量取值的变化情况。

6、数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如:

2®1

3®10®5®16®8®4®2®1

6®3®10®5®16®8®4®2®1

建立命令M文件,完成上述功能,要求显示数字处理过程。

7、设计一个学生身高的管理系统,输出身高的基本分为5等:很高、较高、中等、较矮、矮,其中190cm以上为“很高”,[180cm,190cm)区间为“较高”,[170cm,180cm)为“中等”,[1160cm,170cm)为“较矮”,160cm以下为“矮”,要求分别用if语句和switch语句实现

8、Fibonacci数组的元素满足Fibonacci规则:

ak+2=ak+ak+1,(k=1,2,3,…);且a1= a2=1。

请设计一段程序,求出该数组中第一个大于10000的元素

要求显示的结果为:

i=21

a(i)=10946

或者

a(21)=10946

9、编写一个函数文件and.m,用于求两个输入矩阵的乘积和点乘,然后在命令行窗口中调用该函数,要求:

(1)   当两矩阵是尺寸相同的方阵时,返回它们的乘积和点乘。

(2)   当两矩阵不是尺寸相同的方阵时,则根据它们的尺寸,分别进行乘积或点乘

(3)   当两矩阵的尺寸不能满足乘积或点乘的要求时,则提示“这两个矩阵不能乘”

10、编写一个阶乘函数factorial.m,然后在如下程序中调用该函数,

“分别使用for和while语句找出最小的n值,使得n!>10100,并求出n!”

11、下列程序用来判断一个人的体温是否处于危险状态。调试程序是否正确,如果程序错误指出错误在哪里?并写出正确答案。

temp=input(‘请输入体温: temp = ’);

if temp < 36.5

disp(‘体温偏低’);

elseif temp > 36.5

      disp(‘体温正常’);

elseif temp > 38.0

      disp(‘体温偏高!’);

elseif temp > 39

      disp(‘体温高!!’);

end

12、使用嵌套for循环命令创建下列矩阵:

>> text12();

     5     1     0     0     0

     1     5     1     0     0

     0     1     5     1     0

     0     0     1     5     1

     0     0     0     1     5

三、源程序和实验结果

1、运行结果如下:

>> test1();

f =

           2           4           8          16          32          64         128         256         512        1024

k =

10

>> test2(9);

f =

 2     4     8

2、源代码:

function y = text3(x)

%编写一个函数M文件,计算下面函数的值,给出标量x的值,调用该函数后,返回y的值。

if x<=0

    y = sin(x);

elseif x>0&x<=3

    y=x;

else y=-x+6;

end

end

运行结果如下:

>> y=text3(5)

y =

     1

>> y=text3(3.14/2)

y =

    1.5700

>> y=text3(-1)

y =

   -0.8415

3、源代码:

function y = text4(x)

%编写一个函数M文件,返回向量x中元素的和、平均值、最大值、最小值、均方根值。

y(1)=sum(x);

y(2)=mean(x);

y(3)=max(x);

y(4)=min(x);

y(5)=sqrt(mean(x.^2));

end

 运行结果如下:

1x=sin(0:0.01:6*pi)

>> x=sin(0:0.01:6*pi);

>> y=text4(x)

y =

   -0.0002   -0.0000    1.0000   -1.0000    0.7071

(2)x=rand(1,200),

 >> x=rand(1,200);

>> y=text4(x)

y =

   99.3810    0.4969    0.9943    0.0099    0.5707

4、源代码:

function y = myvander(x)

%编写一个函数M文件,若给出一个向量 ,函数返回如下范德蒙矩阵

n=length(x);

y = ones(n);

for i = 2:n

    y(i,:)=x.^(i-1);

end

end

运行结果如下:

>> v=myvander([2 3 4 5])

v =

     1     1     1     1

     2     3     4     5

     4     9    16    25

     8    27    64   125

5、源代码

(1)for循环

function s = text5()

%5/分别使用while和for编写命令文件,用循环语句编程计算s值:

s=0;

for n = 2:1:10

    s=s+(n^3-n^2);

end

end

 (2)while循环 

function s=text5while()

%5、使用while编写命令文件,用循环语句编程计算s

n=2;

s=0;

while n<=10

    s=s+(n^3-n^2);

    n=n+1;

end

end

运行结果如下

>> text5()

ans =

        2640

>> text5while()

ans =

        2640

6、源代码:

function y = text6()

%6/任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。

i=2;

n=input('请输入一个正整数');

y(1)=n;

while n~=1

 if rem(n,2)==0

    n=n/2;

 elseif rem(n,2)==1

    n=n*3+1;

 end

 y(i)=n;

 i=i+1;

end

end

运行结果如下:

>> y=text6()

请输入一个正整数12

y =

    12     6     3    10     5    16     8     4     2     1

7、源代码:

(1)if语句

function []=text7if(x)

if x>=190

    disp('很高');

elseif x>=180&x<190

    disp('较高');

elseif x>=170&x<180

    disp('中等');

elseif x>=160&x<170

    disp('较矮');

end

end

(2)switch语句

function []=text7switch(x)

%7/用switch语句实现

switch x

    case num2cell(190:300)

        disp('很高');

    case num2cell(180:190)

        disp('较高');

    case num2cell(170:180)

        disp('中等');

    case num2cell(160:170)

        disp('较矮');

    otherwise

        disp('矮');

end

end

运行结果如下:

(1)if语句

>> text7if(175)

中等

>> text7if(190)

很高

(2)switch语句

>> text7switch(175)

中等

>> text7switch(170)

中等

>> text7switch(180)

较高

>> text7switch(160)

较矮

8、源代码:

function [  ] = text8(  )

%UNTITLED Summary of this function goes here

%   Detailed explanation goes here

a(1)=1;

a(2)=1;

i=2;

while a(i)<10000

    i=i+1;

    a(i)=a(i-2)+a(i-1);

end

disp(['i=',num2str(i)]);

disp(['a(i)=',num2str(a(i))]);

end

运行结果如下:

>> text8()

i=21

a(i)=10946

9、源代码:

function [] = text9( x,y )

%UNTITLED3 Summary of this function goes here

%   Detailed explanation goes here

[a,b]=size(x);

[c,d]=size(y);

if a==b&&c==d&&a==c

    z1=x*y;

    z2=x.*y;

    disp(z1);disp(z2);

elseif b==c

    z1=x*y;

  disp(z1);

elseif a==c&&b==d

  

    z2=x.*y;

    disp(z2);

elseif b~=c

    disp('这两个矩阵不能乘');

End

end

运行结果如下:

>> x=[1 2 3];

>> y=[1 2 3 4];

>> text9(x,y)

这两个矩阵不能乘

>> x=[1 2 3;4 5 6];

>> y=[1 2 3;4 5 6];

>> text9(x,y)

     1     4     9

16    25    36

>> x=[1 2 3;4 5 6;7 8 9];

>> y=[7 8 9;1 2 3;4 5 6];

>> text9(x,y)

    21    27    33

    57    72    87

    93   117   141

     7    16    27

     4    10    18

28    40    54

10、源代码:

(1)for循环

function [  ] =factorialfor(  )

%UNTITLED4 Summary of this function goes here

%   Detailed explanation goes here

s=1;

n=1;

for n=1:1000

    s=s*n;

    if(s>10100) break;

    end

end

disp(n);

end

(2)switch循环

function [  ] = factorialwhile(  )

%UNTITLED5 Summary of this function goes here

%   Detailed explanation goes here

n=1;

s=1;

while s<=10100

    n=n+1;

    s=s*n;

end

disp(n);

 end

运行结果如下:

>> factorialfor();

     8

>> factorialwhile();

     8

11、源代码:

function [  ] = text10(  )

%UNTITLED6 Summary of this function goes here

%   Detailed explanation goes here

temp=input('请输入体温: temp =');

if temp < 36.5

disp('体温偏低');

elseif temp >= 36.5

    disp('体温正常');

elseif temp > 38.0

    disp('体温偏高!');

elseif temp > 39

    disp('体温高!!');

end

End

运行结果如下:

>> text10();

请输入体温: temp =36.5

体温正常

>> text10();

请输入体温: temp =38

体温正常

12、源代码:

function [  ] = test12(  )

%UNTITLED8 Summary of this function goes here

%   Detailed explanation goes here

a=zeros(5);

for i=1:5

    a(i,i)=5;

   for j=1:5

       if i==j+1||j==i+1

      a(i,j) = 1;

       end

   end

end

disp(a);

end

 运行结果如下:

>> text12();

         5     1     0     0     0

         1     5     1     0     0

         0     1     5     1     0

         0     0     1     5     1

         0     0     0     1     5

更多相关推荐:
matlab实验报告

MATLAB教程及实训实验报告班级:10级专升本学号:姓名:实验1熟悉matlab的开发环境及矩阵操作一、实验的教学目标通过本次实验使学生熟悉MATLAB7.0的开发环境,熟悉MATLAB工作界面的多个常用窗口…

matlab基本操作实验报告

实验一matlab基本操作一实验目的熟悉matlab的安装与启动熟悉matlab用户界面熟悉matlab功能建模元素熟悉matlab优化建模过程二实验设备与仪器1微机2matlab仿真软件三实验步骤1了解mat...

matlab实验报告

课程设计说明书(论文)题目带限数字基带传输系统的仿真课程名称Matlab通信仿真设计专业通信工程班级1203学生姓名学号指导教师设计起止时间:20##年12月18日至20##年12月25日一、课程设计目的和要求…

matlab音乐处理合成实验报告

MATLAB高级编程与工程应用语音合成综合实验姓名班级学号日期121简单的合成音乐1请根据东方红片断的简谱和十二平均律计算出该片断中各个乐音的频率在MATLAB中生成幅度为1抽样频率为8kHz的正弦信号表示这些...

东南大学几何与代数matlab实验报告

数学实验报告学号姓名吴雪松得分实验1求解线性方程组实验内容用MATLAB求解如下线性方程组Axb其中5100A00006510000006510000006510000006510000006510000006...

matlab实验报告

数学实验报告班级学号姓名实验序号1日期年月日实验名称特殊函数与图形问题背景描述绘图是数学中的一种重要手段借助图形可以使抽象的对象得到明白直观的体现如函数的性质等同时借助直观的图形使初学者更容易接受新知识激发学习...

Matlab实验报告一

数学与信息科学系实验报告实验名称程序设计所属课程数学软件与实验实验类型综合型实验专业信息与计算科学班级20xx级1班学号姓名指导教师1234567

matlab实验报告

MATLAB实验报告实验一MATLAB语言平台与SIMULINK工具箱一目的与任务1学习了解MATLAB语言环境2练习MATLAB命令4掌握SIMULINK工具箱的应用二内容与要求1实验内容1学习了解MATLA...

matlab实验报告

MATLAB实验报告1在区间11上分别取n1020用两组选中节点对龙格函数fx插值及三次样条插值对每个n值分别画出插值函数及fx的图形解n10在matlab命令窗口中键入gtgtx1021y1125x2y1in...

matlab实验报告格式

数学实验报告实验序号:1日期:20XX年10月20日班级姓名学号实验名称:特殊函数与图形问题背景描述:绘图是数学中的一种重要手段,借助图形,可以使抽象的对象得到明白直观的体现,如函数的性质等。同时,借助直观的图…

Matlab实验报告

程序设计训练报告题目学生姓名学生学号专业班级指导老师20xx年6月22日一实验名称用matlab处理基本运算与画图二实验目的1掌握二维曲线绘图的基本方法与命令2掌握一个窗口多个图形的画法分割子窗口的画法三实验说...

Matlab数学实验报告模板

数学实验报告日期20年月日Maylab实验报告学院数学系班级09级A班姓名学号名称二0一二年五月八日

matlab实验报告(13篇)