matlab程序设计实践-牛顿法解非线性方程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中南大学MATLAB程序设计实践学长有爱奉献,下载填上信息即可上交,没有下载券的自行百度。所需m文件照本文档做即可,即新建(FILE)→脚本(NEW-Sscript)→复制本文档代码→运行(会跳出保存界面,文件名默认不要修改,保存)→结果。第一题需要把数据文本文档和m文件放在一起。全部测试无误,放心使用。本文档针对做牛顿法求非线性函数题目的同学,当然第一题都一样,所有人都可以用。←记得删掉这段话

班级:

学号:

姓名:

一、《MATLAB程序设计实践》Matlab基础

表示多晶体材料织构的三维取向分布函数(f=f(φ1,φ,φ2))是一个非常复杂的函数,难以精确的用解析函数表达,通常采用离散

空间函数值来表示取向分布函数,是三维取向分布函数的一个实例。

由于数据量非常大,不便于分析,需要借助图形来分析。请你编写一

个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)(

(2)将文件内的数据按照要求读取到矩阵f(phi1,phi,phi2)中,代码如

下:

fid=fopen('');

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;数据说明部分,与

作图无关此方向表示f随着

φ1从0,5,10,15,

20 …到90的变化而

变化

此方向表示f随着φ

从0,5,10,15, 20 …

到90的变化而变化

表示以下数据为φ2=0的数据,即f(φ1,φ,0)

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);

将以上代码保存为在MATLAB中运行,运行结果如下图所示:!

将以下代码保存为文件:

fopen('');

,

readdata;

[x,y,z]=meshgrid(0:5:90,0:5:90,0:5:90);

slice(x,y,z,f,[45,90],[45,90],[0,45])

运行结果如下图所示:

(2))

(3)将以下代码保存为文件:fopen('');

readdata;

for i=1:19

subplot(5,4,i)

pcolor(f(:,:,i))

nd

)

运行结果如下图所示:

|

将以下代码保存为文件:

fopen('');

readdata;

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)。将以下代码保存为文件:

fopen('');

readdata;

plot([0:5:90],f(:,10,1),'-bo')

text(60,6,'\phi=45 \phi2=0')运行结果如下图所示:

#

二 《MATLAB 程序设计实践》科学计算(24)

班级: 学号: 姓名: >

1、编程实现以下科学计算算法,并举一例应用之。(参考书籍《精通MALAB科学计算》,王正林等著,电子工业出版社,2009年)

“牛顿法非线性方程求解”

解:弦截法本质是一种割线法,它从两端向中间逐渐逼近方程的根;牛顿法本质上是一种切线法,它从一端向一个方向逼近方程的根,其递推公式为:

-

=+n n x x 1)

()

('

n n x f x f 初始值可以取)('

a f 和)('

b f 的较大者,这样可以加快收敛速度。

和牛顿法有关的还有简化牛顿法和牛顿下山法。

在MATLAB 中编程实现的牛顿法的函数为:NewtonRoot 。 功能:用牛顿法求函数在某个区间上的一个零点。 /

调用格式:root=NewtonRoot )(```eps b a f

其中,f为函数名;

a为区间左端点;

b为区间右端点

eps为根的精度;

root为求出的函数零点。,

相关文档
最新文档