实验报告
题目:非线性方程求解
摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。
前言:(目的和意义)
掌握二分法与Newton法的基,取
x0=;)比较结果。
当x0=,程序死循环,无法计算,也就是说不收敛。改时,结果收敛为
x=;
f(x)=-007;
k=16;
显然这个结果不是很好,而且也不是收敛至方程的2重根上。
当x0=,结果收敛为
x=;
f(x)=-023;
k=4;
这次达到了预期的结果,这说明初值的选取很重要,直接关系到方法的收敛性,实际上直接用Newton法,在给定同样的条件和精度要求下,可得其迭代次数k=15,这说明改进后的Newton法法速度确实比较快。
结论:
对于二分法,只要能够保证在给定的区间内有根,使能够收敛的,当时收敛的速度和给定的区间有关,二且总体上来说速度比较慢。Newton法,收敛速度要比二分法快,但是最终其收敛的结果与初值的选取有关,初值不同,收敛的结果也可能不一样,也就是结果可能不时预期需要得结果。改进的Newton法求解重根问题时,如果初值不当,可能会不收敛,这一点非常重要,当然初值合适,相同情况下其速度要比Newton法快得多。
实验报告二
题目:Gauss列主元消去法摘要:求解线性方程组的方法很多,主要分为直接法和间接法。本实验运用直接法的
Guass消去法,并采用选主元的方法对方程组进行求解。
前言:(目的和意义)
。
了解列主元的意义。
确定什么时候系数阵要选主元
数学原理:
由于一般线性方程在使用Gauss消去法求解时,从求解的过程中可以看到,若=0,则必须进行行交换,才能使消去过程进行下去。有的时候即使0,但是其绝对值非常小,由于机器舍入误差的影响,消去过程也会出现不稳定得现象,导致结果不正确。因此有必要进行列主元技术,以最大可能的消除这种现象。这一技术要寻找行r,使得
并将第r行和第k行的元素进行交换,以使得当前的的数值比0要大的多。这种列主元的消去法的主要步骤如下:
消元过程
对k=l,2,…,n-1,进行如下步骤。
选主元,记
若很小,这说明方程的系数矩阵严重病态,给出警告,提示结果可能不对。
交换增广阵A的r,k两行的元素。
(j=k,…,n+1)
计算消元
(i=k+1,…,n;j=k+1,,n+1)
回代过程
对k=n,n-1,・・・,1,进行如下计算
至此,完成了整个方程组的求解。
程序设计:
本实验采用Matlab的M文件编写。
Gauss消去法源程序:
clear
a=input('输入系数阵:>>\n')
b=input('输入列阵b:>>\n')
n=length(b);
A=[ab]
x=zeros(n,1);
%%%函数主体
fork=1:n-1;
%%%是否进行主元选取
ifabs(A(k,k))<yipusilong;%事先给定的认为有必要选主元的小数yzhuyuan=1;
elseyzhuyuan=0;
end
ifyzhuyuan;
%%%%选主元
t=A(k,k);
forr=k+1:n;
ifabs(A(r,k))>abs(t)
p=r;
elsep=k;
end
end
%%%交换元素
ifp~=k;
forq=k:n+1;
s=A(k,q);
A(k,q)=A(p,q);
A(p,q)=s;
end
end
end
%%%判断系数矩阵是否奇异或病态非常严重
ifabs(A(k,k))<yipusilong
disp('矩阵奇异,解可能不正确')
end
%%%%计算消元,得三角阵
forr=k+1:n;
m=A(r,k)/A(k,k);
forq=k:n+1;
A(r,q)=A(r,q)-A(k,q)*m;
end
end
end
%%%%求解x
x(n)=A(n,n+1)/A(n,n);
fork=n-1:-1:1;
s=0;
forr=k+1:n;
s=s+A(k,r)*x(r);
endt=(A(k,n+1)-s)
x(k)=(A(k,n+1)-s)/A(k,k)end
结果分析和讨论:例:求解方程。其中为一小数,当时,分别采用列主元和不列主元的Gauss消去法求
解,并比较结果。
记Emax为求出的解代入方程后的最大误差,按要求,计算结果如下:max
当时,不选主元和选主元的计算结果如下,其中前一列为不选主元结果,后一列为选主
非线性方程求解数值分析上机实验报告 来自淘豆网m.daumloan.com转载请标明出处.