中南大学MATLAB课程设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档