(完整版)哈工大-数值分析上机实验报告
实验报告一
题目: 非线性方程求解
摘要:非线性方程的解析解通常很难给出,因此线性方 程的数值解法就尤为重要。本实验采用两种常见的求解方法 二分法和 Newton法及改进的 Newton法。
前言:
掌握二分法与 Newton法的基本原理和应用。 数学原
理:
对于一个非线性方程的数值解法很多。在此介绍两种最
常见的方法:二分法和 Newton法。
对于二分法,其数学实质就是说对于给定的待求解的方
程 f(x),其在[a,b]上连续,f(a)f(b)5e-6) ; c=(a+b)/2;
if f12(a)*f12(c)>0; a=c; else b=c; end
R=b-a;%求出误差 k=k+1; end
x=c%给出解
Newton法及改进的Newton法源程序:
clear
%%%%输入函数
f=input(' 请输入需要求解函数 >>','s') %%% 求解f(x)
的导数 df=diff(f);
%%改进常数或重根数 miu=2;
%%初始值X0
xO=input(' i叩 ut initial value xO>>'); k=0;% 迭代
次数
max=100;%最大迭代次数
R=eval(subs(f,'xO','x'));% 求解 f(x0),以确定初值
x0时否就是解
while (abs(R)>1e-8)
x1=xO-miu*eval(subs(f,'xO','x'))/eval(subs(df,'xO',
'x')); R=x1-x0;
xO=x1;
k=k+1;
if (eval(subs(f,'xO','x'))max;%
如果迭代次数大于
给定值,认为迭代不收敛,
重新输入初值
ss=input('maybe
result
is error,choose
a new
xO,y/n>>','s');
if strcmp(ss,'y')
x0=input('input
initial
value xO>>');
k=0;
else break end end end
k;%给出迭代次数x=x0 ; %给出解
结果分析和讨论:
用二分法计算方程在[1,2]内的根。(,下同)计算
结果为 x= ;
f(x)= -3. 311e-007 ; k=18 ;
f(x)知结果满足要求,但迭代次数比较多,方法收敛速 度比较慢。
用二分法计算方程在[1,]内的根。 计算结果为
x= ;
f(x)= 2. 815e-006 ; k=17 ;
f(x)知结果满足要求,但迭代次数还是比较多。
用Newton法求解下列方程a) x0=;计算结果 为
x= 0. 78 ; f(x)= 2. 313e-016 ; k=4 ;
f(x)知结果满足要求,而且又迭代次数只有 4次看出收
敛速度很快。
x0=1 ;
x0=, x0=;
当x0=时,计算结果为
x= 0. 83 ;
f(x)= -8. 584e-014 ; k=4 ;
f(x)知结果满足要求,而且又迭代次数只有 4次看出收
敛速度很快,实际上该方程确实有真解 x=。
(完整版)哈工大-数值分析上机实验报告 来自淘豆网m.daumloan.com转载请标明出处.