计算方法上机作业 下载本文

方程求根

一、目的和意义

非线性方程在科学研究与工程实践中广泛出现,例如,优化问题、特征值问题、微分方程问题等。但是,除少量方程外,大多数非线性方程求根相当困难,常见的几个简单、有效的数值求根方法,包括二分法、迭代法、牛顿法、割线法等,本实验旨在比较各种算法的计算性能和使用范围。

二、计算公式 1.二分法 2.不动点迭代法 三、结构程序设计代码 1.二分法

1).定义所求解函数

function [ y ] = f( x ) y = x^3 + 4*x^2 - 10; end

2).执行算法

%初始化,设置区间端点a、b,误差限tol a = 1; b = 2; tol = 0.5*10^(-6); k = 0; fa = f(a); %设置最大二分次数为30 for k = 1:50

p = (a + b)/2; fp = f(p); if(fp == 0 || (b - a)/2 < tol) break end

if(fa * fp < 0) b = p; else a = p;

end

disp('近似解p = ');disp(vpa(p,10)); disp('迭代次数k = ');disp(k); end

2.不动点迭代法

1).定义不动点方程g(x)

function [ y ] = g( x )

y = x^3 + 4*x^2 + x - 10; end

2).执行算法

%初始化,设置误差限,设置初值p0 tol = 0.5*10^(-6); k = 1; p0 = 1.5; %迭代次数为10次 while k <= 10 p = g(p0);

if abs(p - p0) < tol break end

disp('近似解p = ');disp(vpa(p,10)); disp('迭代次数k = ');disp(k); k = k + 1; p0 = p; end

四、结果及其讨论 1.二分法结果

由于结果较长,只取了一部分,从图中可以看出,迭代20次可得到误差限范围内的近似解p=1.36522。

2.不动点迭代法结果

由结果可以看出,函数不收敛,当迭代次数为6时,已经近似趋向于无穷大。

3.讨论

上面实验通过两种方法近似计算了函数的解,二分法可在迭代20次的情况下求出近似解,而由于所设的不动点方程发散,所以使用不动点迭代法无法求出近似解。因此,在实际计算过程中,使用不动点迭代法时,在建立不动点方程后,要分析其收敛性。