中南大学MATLAB课程实践.doc
文本预览下载声明
中南大学
MATLAB课程设计实践
目录
公共题 - 1 -
第一题 - 6 -
1.1不动点迭代法解非线性方程组 - 6 -
1.2牛顿法解非线性方程组 - 9 -
第二题 - 14 -
2.1题目 - 14 -
2.2题目 - 18 -
2.3题目 - 22 -
公共题
题目
表示多晶体材料织构的三维取向分布函数(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分布情况。
程序流程图
程序代码
common.m
%课程实践公共题目
file=fopen(data.txt,r);
%No_use存储没有用的数据
for i=1:18
No_use=fgetl(file);
end
%读入数据
for i=1:19 %phi2
No_use=fscanf(file,%f,1);
for j=1:19%phi1
for k=1:19%phi
f(j,k,i)=fscanf(file,%f,1);
end
end
end
% slice给出分布特征
figure(1);
[x,y,z]=meshgrid(0:5:90,0:5:90,0:5:90);
slice(x,y,z,f,[45,90],[45,90],[0,45]);
%pcolor给出切面f情况
figure(2);
for i=1:19
subplot(5,4,i);
[X,Y]=meshgrid(0:5:90);
contour(X,Y,f(:,:,i));
axis ij;
end
%沿alpha取向线分布情况
figure(3);
plot([0:5:90],f(10,:,1),-bo);
text(60,6,\phi=45);
text(60,5.5,\phi2=0);
运行结果
第一题
题目
编程实现以下科学计算算法,并举一例应用之。(参考书籍《精通MALAB科学计算》,王正林等著,电子工业出版社,2009年) “不动点迭代法和牛顿法非线性方程组求解”
1.1不动点迭代法解非线性方程组
算法说明
设含有n个未知数与n个方程的非线性方程组记为:F(x)=0,然后把上述方程组改为便于迭代的等价形式:x=φ(x),由此就可以构造不动点迭代法的迭代公式:
这样就可以求出非线性方程组的解。
调用格式:[x1,n]=StablePoint(x,eps)。
其中,x为初始迭代向量;
eps为迭代精度;
x1为求出的解向量;
n为迭代步数。
程序流程图
程序代码
function [x1,n]=StablePoint(x,eps)
%不动点迭代法求非线性方程组的根
%x为初值;eps为精度,x1为方程的根,n为迭代次数
if(nargin==1)
eps=1.0e-4;
end
x1=g(x);%g(x)为非线性方程组
n=1;
tol=1;
while(toleps)
x=x1;
x1=g(x);%迭代
tol=norm(x1-x);
n=n+1;
if n1000 %迭代次数过多
disp(迭代次数超过1000,可能不收敛);
return;
end
end
举例说明
首先建立g.m函数文件:
function y=g(x)
%输入方程组
y(1)=0.7*sin(x(1))+0.2*cos(x(2));
y(2)=0.7*cos(x(1))-0.2*sin(x(2));
end
在MATLAB命令窗口中运行:
即求得非线性方程组y(1),y(2)的一组解[0.5264 0.5080],共迭代了12次,精度为1.0e-4。
1.2牛顿法解非线性方程组
算法说明
牛顿迭代法的迭代公式为:错误!未找到引用源。
求解步骤为:
(1)给出初始值错误!未找到引用源。;
(2)对n=1,2,3…计算F(xn)和F’(xn);
(3)求出xn+1,并进行精度控制。
显示全部