计算方法课程实验报告
实验名称 非线性方程求根
班级 教师 动创新13 姓名 封敏丽 赵美玲 地点 学号 201302400104 数学实验中心 序号 评分 一、 实验目的 ① 掌握二分法、牛顿迭代法等常用的非线性方程迭代算法; ② 了解迭代算法的设计原理及初值对收敛性的影响。 二、用文字或图表记录实验过程和结果 题目 求方程f(x)?x3?x2?3x?3?0在1.5 附近的根.(误差限为??1e?6,??1e?9) (1)编程实现二分法,并求解上述非线性方程的根(有根区间自己确定)。 (2)设计弦截法,计算原方程的根。 参考答案 原方程的根为x?1.732051 (1)有根区间取[1.5 2]; 用Matlab进行运算,先编写程序如下: f=input('输入函数f(x)='); qujian=input('输入区间='); err=input('输入误差='); a=qujian(1); b=qujian(2); yc=1; k=0;%计二分法的次数 while((b-a)>err&yc~=0); c=(a+b)/2; x=a; ya=eval(f); x=b; yb=eval(f); x=c; yc=eval(f); if ya*yc<0 b=c; else a=c; end x0=c;k=k+1; end 将以上程序保存为文件erfenfa.m。 调用erfenfa得到如下结果: 这个时候将在Workspace区域得到x0和k的值如下: 如上图所示,用二分法得到方程的近似根约为1.732051,二分次数为19. 二分法流程图如下: 开始 输入a,b,c X0=1/2(a+b) F(a)=x*x*x+x*x-3x-3 F(x0)=x0*x0*x0+x0* x0-3x0-3 Y F(x0)=0 N F(a)F(x0))<0 N Y b=x0 a=x0 N │a-b│