中南大学MATLAB课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、《MATLAB程序设计实践》Matlab基础
班级:
学号:
姓名:
表示多晶体材料织构的三维取向分布函数(f=f(φ1,φ,φ2))是一个非常复杂的函数,难以精确的用解析函数表达,通常采用离散空间函数值来表示取向分布函数,Data.txt是三维取向分布函数的一个实例。由于数据量非常大,不便于分析,需要借助图形来分析。请你编写一个matlab程序画出如下的几种图形来分析其取向分布特征:(1)用Slice函数给出其整体分布特征;
(2)用pcolor或contour函数分别给出(φ2=0, 5, 10, 15, 20, 25,
30, 35 …90)切面上f分布情况(需要用到subplot函数);
(3) 用plot函数给出沿α取向线(φ1=0~90,φ=45,φ2=0)的f分布情况。
流程图
解:
(1)将文件Data.txt内的数据按照要求读取到矩阵f(phi1,phi,phi2)中,代码如下:
fid=fopen('data.txt'); %读取数据文件Data.txt
for i=1:18
tline=fgetl(fid);
end
phi1=1;phi=1;phi2=1;line=0;
f=zeros(19,19,19);
while ~feof(fid)
tline=fgetl(fid);
data=str2num(tline);
line=line+1;
if mod(line,20)==1
phi2=(data/5)+1;
phi=1;
else
for phi1=1:19
f(phi1,phi,phi2)=data(phi1);
end
phi=phi+1;
end
end
fclose(fid);
将以上代码保存为readtext.m文件并在MATLAB中运行,运行结果如下图所示:
fopen('readtext.m');
readtext;
[x,y,z]=meshgrid(0:5:90,0:5:90,0:5:90);
slice(x,y,z,f,[45,90],[45,90],[0,45]) %运用slice函数绘制图形运行结果如右图所示
(2)将以下代码保存为code1_2_1.m文件:
fopen('readtext.m');
readtext;
for i=1:19
subplot(5,4,i)
pcolor(f(:,:,i)) %运用pcolor函数绘制图形
end
运行结果如右图所示
fopen('readtext.m'); %运用contour函数绘制图形
readtext;
for i=1:19
subplot(5,4,i)
contour(f(:,:,i))
end
运行结果如右图所示:
(3)φ1=0~90,φ=45,φ2=0所对应的f(φ1,φ,φ2)即为f(:,10,1)。将以下代码保存为code1_3.m文件:
fopen('readtext.m');
readtext;
plot([0:5:90],f(:,10,1),'-bo') %运用plot函数绘制图形
text(60,6,'\phi=45 \phi2=0')
运行结果如下图所示:
1. 编程实现以下科学计算算法,并举一例应用之。(参考书籍《精通MATLAB 科学算法》,王正林等著,电子工业出版社,2009年)
“多项式拟合”。
思考:多项式拟合是用多项式拟合曲线的一种方式,低次数下运用此方法符合较好,但较高次数下波动太大,失去真实性。
1.1 多项式曲线拟合概述
对给定数据点(x i ,y i )(i=1,2,...N ),构造m 次多项式, P (x )=0a +m
m x a x a ++ 1 (m ∑∑=⎥⎦ ⎤⎢⎣⎡-N i i j i j y x a 12 通过简单的计算可得出系数是下面的线性方程组的解: ⎥ ⎥ ⎥⎥⎦⎤⎢⎢⎢ ⎢⎣⎡++m m m m m c c c c c c c c c 21 121 10 ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡m a a a 10=⎥⎥⎥⎥⎦ ⎤⎢⎢⎢⎢⎣⎡m b b b 10 其中, c k = ∑==N i k i m k x 1 )2,,1,0(, b k = ),1,0(,m k x y k i i =∑ 在MATLAB 中编程实现的多项式曲线拟合函数为:multifit 功能:离散实验数据点的多项式曲线拟合。 调用格式:A=multifit(X,Y,m) 其中:X 为实验数据点的x 坐标向量; Y 为实验数据点的y 坐标向量; m 为拟合多项式的次数; A 为拟合多项式的系数向量。 1.2 多项式曲线拟合编程流程图 1.3 多项式曲线拟合的MATLAB 程序代码 function A=multifit(X,Y,m) %离散实验数据点的多项式曲线拟合 %实验数据点的x 坐标向量:X %实验数据点的y 坐标向量:Y %拟合多项式的次数:m 输入向量X ,Y ,多项式次数 m. M=N 得出X 的项数为N , Y 的项数为M 建立长度为2m+1的零向量C 和长度为2m 的零向量b ,变量j = 0,k =0。 j<2m+1 Y N 显示输入不正确 k C(j)=c(j)+X(k)^(j-1) Y Y j b(j)=b(j)+Y(k)*X(k)^(j-1) k=k+1 建立矩阵C 将c 向量的元素依行代入 将矩阵b 右除C 得到结果向量 输出结果 Y N N N