实验五 用Newton法计算方程的根.docVIP

  • 193
  • 0
  • 约4.49千字
  • 约 6页
  • 2016-03-12 发布于江苏
  • 举报
实验五 用Newton法计算方程的根.doc

佛山科学技术学院 实 验 报 告 课程名称 数值分析 实验项目 用Newton法和steffensen加速法计算方程的根 专业班级 姓名 学号 指导教师 成 绩 日 期 实验目的 在计算机上用迭代法求非线性方程的根。 实验要求 1、按照题目要求完成实验内容; 2、写出相应的Matlab 程序; 3、给出实验结果(可以用表格展示实验结果); 4、分析和讨论实验结果并提出可能的优化实验。 5、写出实验报告。 实验步骤 用Matlab编写Newton法和Steffensen加速法程序 2、用Newton法求解书本P229例题4,Steffensen加速法计算P255例题1。 3、用调试好的程序解决如下问题 求的根,其中控制精度,最大迭代次数。 编制计算函数值的程序: 实验结果 1、用Matlab编写Newton法和Steffensen加速法程序; 利用Newton法求方程的根: function [x_star, index, it]=Newton(fun, x, ep, it_max) % 求解非线性方程的Newton法,其中 % fun(x) --- 需要求根的函数, % 第一个分量是函数值,第二个分量是导数值 % x --- 初始点。 % ep --- 精度,当|(x(k)-x(k-1)|ep时,终止计算。省缺为1e-5 % it_max --- 最大迭代次数,省缺为100 % x_star --- 当迭代成功时,输出方程的根, % 当迭代失败时,输出最后的迭代值。 % index --- 当index=1时,表明迭代成功, % 当index=0时,表明迭代失败(迭代次数 = it_max)。 % it --- 迭代次数。 if nargin 4 it_max=100; end if nargin 3 ep=1e-5; end index=0; k=1; while k=it_max x1=x; f=feval(fun, x); if abs(f(2))ep break; end x=x-f(1)/f(2); if abs(x-x1)ep index=1; break; end k=k+1; end x_star=x; it=k; 利用steffensen加速迭代方法: function [x_star, index, it]=steffensen(phi, x, ep, it_max) % Steffensen 加速方法 % phi(x) --- 迭代函数 % x --- 初始点。 % ep --- 精度,当|(x(k)-x(k-1)|ep时,终止计算。省缺为1e-5 % it_max --- 最大迭代次数,省缺为100 % x_star --- 当迭代成功时,输出方程的根, % 当迭代失败时,输出最后的迭代值。 % index --- 当index=1时,表明迭代成功, % 当index=0时,表明迭代失败(迭代次数 = it_max)。 % it --- 迭代次数。 if nargin 4 it_max=100; end if nargin 3 ep=1e-5; end index=0; k=1; while k=it_max x1=x; y=feval(phi,x); z=feval(phi,y); x=x-(y-x)^2/(z-2*y+x); if abs(x-x1)ep index=1; break; end k=k+1; end x_star=x; it=k; 2、用Newton法求解书本P229例题4,Steffensen加速法计算P255例题1。 用Newton法计算书本P229例题4。(求方程f(x)=x^3-x-1=0在区间[1,2]内的根) fun=inline([x^3-x-1,3*x^2-1]); [x_star,index,it]=Newton(fun,1.5) 书本P255例题1:求x=x^3-1在x0=1.5附近解。 phi=inline(x^

文档评论(0)

1亿VIP精品文档

相关文档