数值分析大作业

发布 2022-09-10 11:09:28 阅读 7766

课程设计。

题目一:非线性方程求根。

用newton法计算下列方程。

(1),初值分别为,,;

(2)其三个根分别为。当选择初值时给出结果并分析现象,当,迭代停止。

一、摘要。非线性方程的解析解通常很难给出,因此非线性方程的数值解就尤为重要。本实验通过使用常用的求解方法二分法和newton法及改进的newton法处理几个题目,分析并总结不同方法处理问题的优缺点。

观察迭代次数,收敛速度及初值选取对迭代的影响。

二、数学原理。

构造迭代函数的一条很重要的途径是,用近似方程来代替原方程去求根。因此,如果能将非线性方程用线性方程来代替的话,求近似根问题就很容易解决,而且十分方便。newton法就是把非线性方程线性化的一种方法。

在求解非线性方程时,它的困难在于是非线性函数,为克服这一困难,考虑它的线性展开。设当前点为,在处的taylor展开式为。

令,可以得到上式的近似方程。

设,解其方程得到。

这就是牛顿迭代公式。用牛顿迭代公式求方程根的方法称为牛顿迭代法。

牛顿迭代法的几何意义为,不断用切线来近似曲线得到方程的根,我们知道方程的实根是函数的图形与横坐标的交点,是函数在点处的切线与轴的交点,此时就是用切线的零点代替曲线的零点,因此,牛顿迭代法又称为切线法。

三、程序设计。

基于matlab软件编写程序,先定义一个用newton法求解的功能函数,然后调用函数用于计算不同的方程。各变量定义见程序。

1、选取初值。

2、利用公式求解。

3、计算所得是否满足精度要求。

4、如不满足继续迭代运算,如满足则输出所求结果。

四、结果分析和讨论。

1、第一题计算结果:

首先得到函数在区间[-2.5,2.5]的图像,即可知函数与轴有交点,也就是说有根,并且从图中能够大致估算到根的位置。

1)、取初值时。

得到根值r=1.3247,迭代次数t=4次

2)、取初值时。

得到根值r=1.3247,迭代次数t=42次。

3)、取初值时。

得到根值r=1.3247,迭代次数t=8次。

根据结果可以分析得到,当使用牛顿迭代法时,所选初始值对迭代速度(迭代次数)有较大影响。当初始值充分接近方程的单根时,可保证迭代序列快速收敛,当初值选择不当时会造成迭代次数大幅增加或不一定收敛。

2、第二题计算结果:

初值时,得到根值r=-98,迭代次数为1次。

根据结果可以得到,给出的迭代初值不一定会收敛于离它最近的实根,收敛速度也不一定会慢。初值不同所得到的收敛值也不同。例如,在本题中更改初值为时,所得到的根是3,迭代次数为4次。

五、完成题目的体会与收获。

通过自己编程实现牛顿迭代法,不仅让我对牛顿迭代法有了更深刻的了解,同时也锻炼了我编程解决数学问题的能力。原本上课时不清晰的思路被理清了,观察计算结果之后,还对牛顿迭代法的规律和用法更加明了。希望以后能多有这样的实践作业。

六、附录。function [root,t]= newtonroot2( f,a)

f是非线性函数。

a为初值。eps为根的精度。

root为求出的函数零点。

t为迭代次数。

eps=5.0e-6;

t=0;f1=subs(sym(f),findsym(sym(f)),a);

fun=diff(sym(f));

fa=subs(sym(f),findsym(sym(f)),a);

dfa=subs(sym(fun),findsym(sym(fun)),a);

root=a-fa/dfa;

tol=abs(root-a);

while(tol>eps)

t=t+1;

r1=root;

fx=subs(sym(f),findsym(sym(f)),r1);

dfx=subs(sym(fun),findsym(sym(fun)),r1);

root=r1-fx/dfx;

tol=abs(root-r1);

endend

题目二:线性方程组求解。

有一平面机构如图所示,该机构共有13条梁(图中标号的线段)由8个铰接点(图中标号的圈)联结在一起。上述结构的1号铰接点完全固定,8号铰接点竖立方向固定,并在2号、5号和6号铰接点,分别有如图所示的10吨、15吨和20吨的负载,在静平衡的条件下,任何一个铰接点上水平和竖立方向受力都是平衡的,以此计算每个梁的受力情况。

令,假设为各个梁上的受力,例如。

对2号铰接点有:、

对3号铰接点有:、

对4号铰接点有:、

对5号铰接点有:、

对6号铰接点有:、

对7号铰接点有:、

对8号铰接点有:

一、摘要。对于实际的工程问题,很多问题归结为线性方程组的求解。本实验通过实际题目掌握求解线性方程组的数值解法,这里采用雅克比迭代法,如不收敛,再采用高斯列主元消去法。

二、数学原理。

1、雅克比迭代法。

设有一个n元线性方程组。

它的矩阵形式为,如果非奇异,且。由上式可以得到。

而其相应的迭代公式为。

把上式迭代公式称为jacobi(雅克比)迭代。

由于迭代存在收敛性,所以把分量形式的迭代公式改写成矩阵形式。记。

则。方程组改写成。

与其相应的矩阵形式的迭代公式为。

也可以简单地记为。

式中,;,上两式也称为jacobi迭代。同时称为jacobi迭代矩阵。

2、高斯列主元消去法。

在消元过程进行到第步时,写出其相应的增广矩阵,可以发现,此时第个方程与后面的个方程的地位并没有区别,因此选择第列的元素中绝对值最大的元素作为主元,即令。

如果这时候,那么矩阵就奇异不可逆,方程的解也不确定,只有停止计算;否则,当,则其增广矩阵中交换第行和第行,即。

使成为主元,然后再按高斯消去法进行消元运算。上述这种消去法称为高斯列主元消去法。

三、程序设计。

把方程组整理为矩阵形式:

本题我先采用了雅克比迭代法进行计算,所得结果发散,因此采用高斯列主元消去法计算。

1、输入数据a和b,置det=1。

2、对于作,按列选主元、交换两行、消元计算。

3、置。4、输出线性方程组的解。

四、结果分析和讨论。

得到结果,各个梁的受力情况分别为.0000(单位:吨)

由结果分析,高斯列主消元法能准确的计算出该线性方程组的解。

五、完成题目的体会与收获。

在解决本道题目的时候,我受到了重重困难。刚开始我并未考虑使用迭代法的收敛条件,便使用雅克比迭代法进行计算,但在经过多次尝试后,才发现该方法不收敛,改用高斯列主消元法来计算。这让我吸取了深深的教训。

在今后的学习中,注意每种方法的使用限制条件,收敛条件等,真正学而会用,才能彻底掌握知识。

六、附录。高斯列主消元法:

function [x]= gauss(a,b)

n,m]=size(a);

det=1;x=zeros(n,1);

for k=1:n-1

max1=0;

for i=k:n

if abs(a(i,k))>max1

max1=abs(a(i,k));r=i;

endend

if r>k

z=a(k,:)a(k,:)a(r,:)a(r,:)z;

z=b(k);b(k)=b(r);b(r)=z;det=-det;

endfor i=k+1:n

m=a(i,k)/a(k,k);

for j=k+1:n

a(i,j)= a(i,j)-m* a(k,j);

endb(i)=b(i)-m*b(k);

enddet=det*a(k,k);

enddet=det*a(n,n);

for k=n:-1:1

for j=k+1:n

b(k)=b(k)-a(k,j)*x(j);

endx(k)=b(k)/a(k,k);

endx(k)=b(k)/a(k,k);

end雅克比迭代法:

function [x,n] =jacobi( a,b,x0 )

a为系数矩阵。

b方程组右端相。

x为所得结果。

n为迭代次数。

eps=1.0e-4;

d=diag(diag(a));

l=-tril(a,-1);

u=-triu(a,1);

b=d\(l+u);

f=d\b;

x=b*x0+f;

n=1;while norm(x-x0)>=eps

x0=x;x=b*x0+f;

n=n+1;

endend

数值分析期末大作业

一 问题提出。设方程f x x3 3x 1 0有三个实根 x 1.8793 x 0.34727 x 1.53209现采用下面六种不同计算格式,求 f x 0的根 x 或x 1 x 2 x 3 x 4 x 5 x 6 x x 二 目的和意义。1 通过实验进一步了解方程求根的算法 2 认识选择计算格式的...

数值分析大作业2019 A班

a班大作业要求 1.使用统一封皮 2.上交大作业内容包含 1 题目 2 数学原理 3 程序设计 必须对输入变量 输出变量进行说明 编程无语言要求,但程序要求通过 4 结果分析和讨论 5 完成题目的体会与收获。3.提交大作业的时间 本学期最后一次课 过期不计入成绩 4.提交方式 打印版一份 或手写大作...

数值分析课程设计大作业

课程设计。2013年07月20日。1.1水手 猴子和椰子问题。算法分析 设椰子起初的数目为,第一至第五次猴子在夜里藏椰子后,椰子的数目分别为,再设最后每个人分得x个椰子,由题意得 利用逆向递推方法求解 n input n for x 1 n p 5 x 1 for k 1 5 p 5 p 4 1 e...