《數值分析》课程设计报告范文.docVIP

  • 19
  • 0
  • 约 7页
  • 2016-12-07 发布于重庆
  • 举报
《數值分析》课程设计报告范文

课程设计报告 课程设计题目: 非线性方程求解 2011年 11月 27 日 题目: 用二分法,简单迭代法、牛顿迭代法以及弦截法求非线性方程 误差不超过10-4,输出迭代次数,初始值和根的近似值。 一、摘要 在matlab环境下运用熟悉的计算机编程语言结合二分法、简单迭代法、牛顿迭代法以及弦截法求解非线性方程,在运行完程序后,对运行结果做出了各方面的分析和比较。 最终得出二分法迭代次数最多,需14次,而简单迭代法、牛顿迭代法以及弦截法的迭代次数都较少,只需4—5次。由于方程有多个解,所以当赋的初始值不同或给定的区间不同时,根的近似值也会有所不同。 二、设计目的 用熟悉的计算机语言编程,上机完成用二分法、简单迭代法、牛顿迭代法以及弦截法求解非线性方程,掌握各种方法的理论依据及求解思路,了解各种迭代方法的异同。 三、理论基础 二分法: 二分法就是将方程根所在的区间平分为两个小区间,再判断根属于哪个小区间;把有根的小区间再平分为二,再判断根所在的更小的区间,对分;重复这一过程,最后求出所要的近似值。 简单迭代法: 简单迭代法是将方程化为一个等价的方程: 从而构成序列: 即给定一个初值,由(2)可算得,再将带入(2)的右端,又可得,…。我们{}为迭代序列,而称(1)式中的为迭代函数,(2)为迭代格式。如果连续,迭代序列{}收敛于,则就是方程(1)的解。事实上,又,亦即: 或 所以,如果迭代序列收敛,总能收敛于原方程的解。实际计算中,无穷过程不可能实现,只迭代到一定程度,取作为原方程的近似根。 牛顿迭代法: 设已知方程的一个近似根,把在处做泰勒展开, 若取前两项来近似代替(称为的线性化),则得近似的线性方程: 设,解之得。取作为原方程的近似根,即,一般地,再重复用上述方法得:。一般地,有迭代公式 上式称为求解的牛顿迭代公式。 弦截法: 假设方程在区间[a,b]上有唯一根,在区间[a,b]内的曲线上任取两点作弦,用此弦与轴的交点横坐标作为方程根的近似值。按此方法进行迭代计算,直到满足精度要求为止。 单点弦法:为避免导数的计算,用平均变化率 来替代迭代公式中的导数,于是得到: 按此公式进行迭代计算就称单点弦截法。按(3)式求得的实际上是弦AB与轴交点的横坐标,下一步再以点()和()作弦交轴得等等。每次作新的弦都以()作为一个端点,只有一个端点不断更换,故名为单点弦截法。 四、程序代码及运算结果 function y=f(x) y=sin(x)-x.^2/2; 二分法: clear;clc; a=-2;b=1; chushizhi1=-2 chushizhi2=1 kg=10^(-4); for k=0:20 if f(a)*f(b)0 x=error else if f(a)*f(b)==0 if f(a)==0 a,k; else b,k; end else m=(a+b)/2; if abs(a-b)kg jinsijie=m diedaicishu=k-1 break else if f(a)*f(m)0 a=m; else b=m; end k=k+1; end end end end 运行结果 chushizhi1 =-2 chushizhi2 =1 jinsijie =1.5259e-005 diedaicishu =14 简单迭代法: x(1)=1 for k=1:12 x(k+1)=asin((x(k).^2)/2); if (abs(x(k+1)-x(k)))0.0001 x(k+1) k break end end 运行结果 jinsijie =9.9887e-010 diedaicishu =5 chushizhi =1 牛顿迭代法: syms x y=diff(sin(x)-x.^2/2,x) y = cos(x)-x function y=p(x) y=cos(x)-x; x(1)=-1; for k=1:20 if p(x(k))~=0 x(k+1)=x(k)-f(x(k))./p(x(k)); if (abs(x(k+1)-x(

文档评论(0)

1亿VIP精品文档

相关文档