1、 1 课程设计任务书 20122013 学年第学年第 1 学期学期 课程名称: 最优化算法 设计题目: 解方程组及非线性方程组 完成期限:自 2012 年 12 月 17 日至 2012 年 12 月 21 日共 1 周 任 务 及 内 容 设计的任务设计的任务: 一、熟练运用 matlab 编程解线性方程组及非线性方程组 二、灵活运用 GMRES 方法、Newton 法等方法求解; 内容包括内容包括: 1、应用GMRES方法,用求解方程组; 2、分别用不动点迭代方法和Newton法求解非线性方程; 进 度 安 排 起止日期 工作内容 2012.12.17 分析题目以及了解 MATLAB的编程
2、 2012.12.18 对应的问题模型 MATLAB 程序 2012.12.192012.12.20 根据编写的 MATLAB 程序的处最优解 2012.12.21 整理资料,书写文档 主 要 参 考 资 料 1 施光燕,钱伟懿.最优化方法.北京:高等教育出版社.2011. 2 徐翠微,孙绳武.计算方法引论.北京:高等教育出版社,2010. 3 谢金星, 薛毅. 优化建模与 Lingo 软件. 北京:清华大学出版社,2010. 指 导 教 师 (签字) : 年 月 日 系 ( 教 研 室 ) 主 任 ( 签字) : 年 月 日 1 一、问题重述一、问题重述 (1) 应用 GMRES 方法,用求
3、解方程组 8102 ,7210 ,910 32 321 21 xx xxx xx (2)分别用不动点迭代方法和 Newton 法求解,初始迭代点为(0,0) 01)5.0()2( 01 2 2 2 1 2 2 1 xx xx 二、问题分析二、问题分析 问题问题 1 1 需用 GMRES 方法求解线性方程组,首先建立函数 gmres 函数,储存如下将 gmres.m 保存,再新建文件并调用 gmres 函数,赋初始值,则可输出函数值。 问题问题 2 2 需用不动点迭代方法和 Newton 法求解非线性方程组,首先建立函数 fun 储 存, 如下将 fun.m 保存; 其次建立函数 dfun 用来
4、求方程组的雅克比矩阵将 dfun.m 保存;再编程牛顿法求解非线性方程组将 newton.m 保存;然后将迭代过程写入 txt 文档文件名为 iteration.txt;最终在调用 matlab 中 newton 函数,并赋初 始值,则可输出函数值。 三、求解方法三、求解方法 问题问题 1 1 clear clc global A; format long 2 A=10 -1 0; -1 10 -2; 0 -2 10; b=9,7,8; x0=0,0,0; params=1e-14,30; fprintf ( Error_rk n) x, error, total_iters=gmresb(x
5、0,b,atv, params) %fprintf(x 的近似解:n) %fprintf( %10.5en,x) %fprintf (迭代次数:n) %fprintf ( % d n, total_iters) %fprintf (解的误差:n) %fprintf ( %11 .5e n, error) fprintf ( n) 问题二问题二 function df=dfun(x); %用来求解方程组的雅克比矩阵储存在 dfun 中 f=fun(x); df=diff(f,x1);diff(f,x2); df=conj(df); newton(0 0,0.00001,20) 四、求解过程四、求解过程 问题问题 1 1 function x,error, total_iters = gmresb(x0, b, atv, params) n=length(b); errtol=params(1); kmax=params(2); x=x0; h=zeros(kmax); 3 v=zeros(n,kmax); if norm(x) =0 r = b-feval(atv,x); else r = b; end rho=norm(r); errtol=errtol*norm(b); error=; error=error,rho; total_iters