- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数学软件实验任务书
课程名称
数学软件实验
班级
学号
实验课题
非线性方程组的牛顿迭代法,最速下降法,不动点迭代法
实验目的
熟悉非线性方程组的牛顿迭代法,最速下降法,不动点迭代法
实验要求
运用Matlab/C/C++/Java/Maple/Mathematica等其中一种语言完成
实验内容
非线性方程组的牛顿迭代法
非线性方程组的最速下降法
非线性方程组的不动点迭代法
成绩
教师
实验一 非线性方程组的牛顿迭代法
1 实验原理
对于非线性方程
在x(k )处按照多元函数的泰勒展开,并取线性项得到
其中
2 数据来源
计算非线性方程组
初值取
3 实验步骤
步骤一:编写牛顿迭代法的基本程序。
打开 Editor 编辑器,输入以下语句:
function [x,n,data]=new_ton(x0,tol)
if nargin==1
tol=1e-10;
end
x1=x0-f1(x0)/df1(x0);
MATLAB 241 数值分析与应用
n=1;
%迭代过程
while (norm(x1-x0)tol)
x0=x1;
x1=x0-f1(x0)/df1(x0);
n=n+1;
%data 用来存放中间数据
data(:,n)=x1;
end
x=x1;
以文件名new_ton.m保存。
步骤二:编写方程函数与方程的Jacobi矩阵函数。
(1)打开Editor 编辑器输入以下语句:
%牛顿迭代法的方程函数
function f=f1(x0)
x=x0(1);
y=x0(2);
f1=x^2-2*x-y+0.5;
f2=x^2+4*y^2-4;
%最后方程函数以行向量输出
f=[f1 f2];
以文件名f1.m保存。
(2)新打开Editor 编辑器输入以下语句:
%牛顿迭代法的jacobi矩阵
function f=df1(x0);
x=x0(1);
y=x0(2);
f=[2*x-2 -1
2*x 8*y];
以文件名df1.m保存。
步骤三:编写主函数。
打开 Editor 编辑器输入以下语句:
%牛顿迭代法的主函数
x0=[1 1];
[x,n,data]=new_ton(x0);
disp(计算结果为)
x
disp(迭代次数为)
n
%抽取data1中第一个变量数据画出曲线
subplot(2,1,1)
plot(data(1,:)),title(x 在迭代中的变化)
%抽取data中的第二个变量数据画出其变化曲线
subplot(2,1,2)
plot(data(2,:)),title(y在迭代中的变化)
以文件名new_main.m保存。
4 实验结果
计算结果为
x =
-0.222214555069498 0.993808418603981
迭代次数为
n =
16
实验二 非线性方程组的最速下降法
1 实验原理
对于非线性方程组
令
如果给定一个初值,我们希望找到一条路线每一次迭代以后代价函数都会比原来小一些。
l称为步长因子, 的不同,就构成了不同的下降算法。如果取
就是所谓的最速下降法。最速下降法是大范围收敛的h在某出沿最速下降方向
下降的最快
2 数据来源
计算非线性方程组
初值取
3 实验步骤
步骤一:打开 Editor 编辑器,输入以下语句:
syms x y
f1=x^2-2*x-y+0.5;
f2=x^2+4*y^2-4;
h=f1^2+f2^2
grad=[diff(h,x),diff(h,y)];
grad=simple(grad)
以文件名tidu_fuhao.m保存。
步骤二:编写梯度函数。
打开 Editor 编辑器,输入以下语句:
function f=f1_tidu(x0)
x=x0(1);
y=x0(2);
f= [8*x^3-12*x^2-4*x*y-6*x+4*y-2+16*x*y^2
-2*x^2+4*x-62*y-1+16*y*x^2+64*y^3];
步骤四:编写最速下降法的方法函数。
打开 Editor 编辑器,输入以下语句:
function [x,n,data]=zuisu(x0,tol)
if nargin==1
tol=1e-4;
end
x1=x0-0.001*f1_tidu(x0);
n=1;
%迭代过程
while (norm(x1-x0)tol) (n2000)
x0=x1;
%0.001 为步长因子
x1=x0-0.001*f1_tidu(x0);
n=n+1;
%data 用来存放中间数据
data(:,n)=x1;
end
x=x1;
以文件名zuisu.m保存。
步骤四:编写主函数。
打开 Editor 编辑器,输入以下语句:
4 实验结果
运行程序得到计算结果
x =
-0.21412 0.99395
迭代次数为
n =
426
实验
文档评论(0)