资源描述
课 程 设 计 说 明 书
1
课程名称 题 目
计算机仿真技术
MATLAB 程序应用与仿真
-- 函数可视化应用和恒稳磁场仿真
学 院 XXXXXXXX学院
班 级 XXXXXXXXX
课程设计任务书
(指导教师填写)
课程设计名称 计算机仿真技术 学生姓名 XXXX 专业班级 XXX
设计题目 MATLAB 程序应用与仿真 ―― 函数可视化应用和恒稳磁场仿真
一、 课程设计目的
计算机仿真课程设计是在学完了 “高等数学”、“线性代数”、“积分变换”、“大学物理”、 “电路”等课程后进行的一个重要的实践性教学环节。学生通过本次课程设计应熟练掌握 MATLAB 基本操作方法,能够简单的进行简单的建模仿真。本设计主要目的为:
1. 了解 MATLAB 主要功能和基本特点,熟悉 MATLAB 操作环境。
2. 了解 MATLAB 图形处理系统应用。
3. 掌握 MATLAB 语法规则和程序设计基本特点,能够进行简单程序设计。
4. 掌握 MATLAB 在线性代数、 多项式与内插、 曲线拟合、 常微分方程求解等数值运算中 的应用。
5. 学会使用手册及有关资料。
二、 设计内容、技术条件和要求
设计内容:
1. 用 MATLAB 语言进行二维图形和三维图形的绘制。
(1)在一个绘图窗口中绘制下列函数的图形
(a) y (t) = 2exp( 3t),0 t 2
1
(b) y (t) = 2t exp(2t),0 t 2
2
(c) y (t) = 1 exp( t 2 ), 4 t 4 3 2 2
(d ) y (t) = sin(t) , 5 t 5
4 t
(2)绘制下列函数表示的曲面
(a) 4x2 9y 2 16z 2 = 25
(b) y 2 + z 2 = 2x
2. 用毕奥-萨伐定理计算位于 y-z 平面上的电流环在 x-y 平面上产生的磁场分布,并 用 MATLAB 进行仿真。
技术条件:一人一台装有 MATLAB6.5 或MATLAB7.0 软件的计算机。
要 求:学生在指导教师的指导下进行设计,完成数学模型建立, M 文件程序编写,调试
2
及结果分析,最后写出设计说明书。
三、 时间进度安排
1. MATLAB 应用讲解 2 天
2.资料查阅与学习、讨论 1 天
3.仿真模型建立及编程 3 天
4.系统调试和成果验收 4 天
四、 主要参考文献
1.《MATLAB 实用教程》 (第二版) . 郑阿奇主编. 电子工业出版社
2.《MATLAB 及其在电子信息课程中的应用》 (第三版) .陈怀琛. 电子工业出版社 3.《MATLAB7.x 程序设计语言》 .楼顺天主编,西安电子科技大学出版社
3
指导教师签字:
20XX 年 11 月 20 日
课程设计报告
设计内容:
1. 用 MATLAB 语言进行二维图形和三维图形的绘制。
(1)在一个绘图窗口中绘制下列函数的图形
(a) y (t) = 2exp( 3t),0 t 2
1
(b) y (t) = 2t exp(2t),0 t 2
2
(c) y (t) = 1 exp( t 2 ), 4 t 4 3 2 2
(d ) y (t) = sin(t) , 5 t 5
4 t
程序及运行结果:
t=0:0. 1:2;
subplot(2,2,1)
plot(t,2*exp(-3*t))
t=0:0. 1:2
subplot(2,2,2)
plot(t,2*t.*exp(-2*t))
t=-4:0. 1:4
subplot(2,2,3)
plot(t,1/sqrt(2)*exp(-t.*t/2))
t=-5:0. 1:5
subplot(2,2,4)
plot(t,sin(t+eps)./(t+eps))
4
绘图:
(2)绘制下列函数表示的曲面
(a) 4x2 一9y 2 一 16z 2 = 25
(b) y 2 + z 2 = 2x
程序及运行结果:
(a)
y=linspace(-3,3,100);
z=linspace(-4,4,100);
[yy,zz]=meshgrid(y,z);
xx=sqrt(25/4+9/4*yy. ^2+16/4*zz. ^2)
surf(xx,yy,zz)
hold on
surf(-xx,yy,zz)
title('杨仕凯')
5
绘图:
(b)
y=linspace(-4,4,100);
z=linspace(-4,4,100);
[yy,zz]=meshgrid(y,z);
xx=(yy. ^2+zz. ^2)/2
surf(xx,yy,zz)
title('杨仕凯')
6
绘图:
2. 用毕奥-萨伐定理计算位于 y-z 平面上的电流环在 x-y 平面上产生的磁场分布,并 用 MATLAB 进行仿真。
程序:
fprintf('************************\n* 恒 稳 磁 场 分 布 仿 真
*\n************************\n');
clear all;
mu0 = 4*pi*1e-7;
I0 = 5.0;
Rh = input('输入环半径 Rh(m):(取 2) ');
C0 = mu0/(4*pi) * I0;
xMax = 3; yMax = 3;
NGx = 21; NGy = 21;
x=linspace(-xMax, xMax, NGx);
y=linspace(-yMax, yMax, NGy);
Nh = 20;
7
theta0 = linspace(0,2*pi, Nh+1);
theta1 = theta0(1:Nh);
y1 = Rh*cos(theta1);
z1 = Rh*sin(theta1);
theta2 = theta0(2:Nh+1);
y2 = Rh*cos(theta2);
z2 = Rh*sin(theta2);
dlx = 0;
dly = y2-y1;
dlz = z2-z1;
xc = 0;
yc = (y2+y1)/2;
zc = (z2+z1)/2;
for i=1:NGy
for j=1:NGx
rx = x(j) - xc;
ry = y(i) - yc;
rz = 0-zc;
r3 = sqrt(rx. ^2 + ry. ^2 + rz. ^2). ^3;
dlXr_x = dly.*rz - dlz.*ry;
dlXr_y = dlz.*rx - dlx.*rz;
Bx(i,j) = sum(C0*dlXr_x./r3);
By(i,j) = sum(C0*dlXr_y./r3);
end
end
clf; quiver(x,y,Bx,By);
hold on;
plot(0,Rh,'bo');plot(0,-Rh,'rx');
xlabel('x'); ylabel('y');
hold off;
8
title('杨仕凯')
运行结果:
************************
* 恒稳磁场分布仿真*
************************
输入环半径 Rh(m):(取 2) 2
绘图:
9
思考题
1. MATLAB 功能和特点是什么?
答:功能: 1) 数值计算功能 2) 符号计算功能。 3) 数据分析功能。 4) 动态仿真功能。 5) 程 序接口功能。 6) 文字处理功能。
特点: 1) 界面友好, 编程效率高。 2) 功能强大, 可扩展性强。 3) 图形功能, 灵活且方便。
4) 在线帮助, 有利于自学。
「|1 2 3]| 「|1 1 1]|
2.计算 A= 和 B= 矩阵乘积和点积运算。 程序:
A=[1,2,3,;4,5,6;7,8,9;]
B=[1,1,1;2,2,2;3,3,3]
C=A*B
D=A.*B
运行结果:
A
=
10
1
4
7
B
=
2
5
8
3
6
9
1
2
3
C =
14
32
50
D
=
1
8
21
1
2
3
14
32
50
2
10
24
1
2
3
14
32
50
3
12
27
3. M 脚本文件和 M 函数文件的主要区别是什么?
答:主要区别: M 文件可分为脚本文件(MATLAB scripts)和函数文件(MATLAB functions)。 脚本文件是包含多条 MATLAB 命令的文件;函数文件可以包含输入变量,并把结果传送给 输出变量。
4 .编程求解如下线性代数方程组。 3x+4y-7z-12w=4
5x-7y+4z+2w=-3
x+8z-5w=9
-6x+5y-2z+10w=-8
程序:
A=[3 4 -7 -12;5 -7 4 2;1 0 8 -5;-6 5 -2 10]
B=[4;-3;9;-8]
X=A\B
运行结果:
A
=
11
3
5
1
-6
B
=
4
-3
9
-8
X
=
4
-7
0
5
-7
4
8
-2
-12
2
-5
10
-1.4841
-0.6816
0.5337
-1.2429
5.采用 for„end 或者 while„end 编写程序计算从整数 a 加到整数b (a<b)的数列和,并 分别采用 plot、 stem 和stairs 命令绘图,最后比较说明这三个绘图命令的不同。
程序:
function y=sumy(a,b)
c=b-a+1
y=zeros(c,1)
y(1,1)=a
for n=2:c
y(n,1)=y(n- 1,1)+n+a- 1
end
d=a:b
xlabel('x')
ylabel('y')
subplot(2,2,1)
plot(d,y)
title('杨仕凯 数列 plot 求和')
subplot(2,2,2)
stairs(d,y)
title('杨仕凯 数列 stairs 求和')
subplot(2,2,3)
stem(d,y)
title('杨仕凯 数列 stem 求和')
运行结果:
sumy(1,20)
ans =
1
3
6
10
15
21
28
36
45
55
66
78
91
105
120
136
153
171
190
210
绘图:
12
6.编写 M 函数文件对下面函数进行分段曲面绘制。
(|0.5e-0.75 y2 -3.75x2 -1.5x
z(x, y) =〈0.8e-y 2 -6x2
|l0.5e-0.75 y2 -3.75x2 +1.5x
程序:
function z=suny(x,y)
x=linspace(-3,3,100);
y=linspace(-4,4,100);
[xx,yy]=meshgrid(x,y);
zz=zeros(100,100);
aa=xx+yy;
for i=1:100;
for j=1:100;
x + y > 1
- 1 < x + y 共 1
x + y 共 -1
13
if aa(i,j)>1;
zz(i,j)=0.5*exp(-0.75*yy(i,j).*yy(i,j)-3.75*xx(i,j).*xx(i,j)- 1.5*xx(i,j));
elseif aa(i,j)<=- 1;
zz(i,j)=0.5*exp(-0.75*yy(i,j).*yy(i,j)-3.75*xx(i,j).*xx(i,j)- 1.5*xx(i,j));
else zz(i,j)=0.8*exp(-yy(i,j).*yy(i,j)-0.6*xx(i,j).*xx(i,j));
end
end
end
surf(xx,yy,zz)
xlabel('x')
ylabel('y')
zlabel('z')
title('杨仕凯 z(x,y)')
绘图:
7.谈谈自己对 MATLAB 计算机仿真技术课程设计的体会。 体会总结以下几条:
1) matlab 是一个很好的应用工具
2)学 Matlab 并不难,难的是学会怎么用,要有耐心。 3)不要只问不学,有了问题先自己想,察看帮助,实在看不懂再问别人。
4) 多动手写程序、调试,多读 matlab 实验书上的程序。 5)电脑上复制粘贴很方便,最好还是自己写一遍,这样印象深刻,对于不懂的函数用法的 函数, help 中查查,能看懂多少算多少,对于程序断点调试一遍,弄清楚每个语句的功能,。 6)尽量摆脱 c 编程的习惯,总爱用循环,能不用的循环的尽量不用,掌握矢量化的精髓。 7)多用 help, see also lookfor get,set 等常用命令。
8) 要大胆的去试,试过才知道可不可以。
14
展开阅读全文