数值分析期末大作业

发布 2021-04-20 10:32:28 阅读 3225

一、问题提出。

设方程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、认识选择计算格式的重要性;

3、掌握迭代算法和精度控制;

4、明确迭代收敛性与初值选取的关系。

三、结构程序设计。

本程序实在matlab软件上进行操作的。首先建立一个空白的m-文件。在编辑器中输入以下内容,并保存。

function [x1,m,n,q]=shizi1(p)

x=zeros(100,1);

x=double(x);

x(1,1)=p;

i=1;deltax=100;

while (i<100 & deltax > 0.000001)

x(i+1,1)=(3*x(i,1)+1)/x(i,1)^2

deltax=abs(x(i+1,1)-x(i,1));

i=i+1;

endx1=x(1,1);

m=i;n=x(i,1);

q=deltax;

以上是运行函数,下一步在建立一个执行m-文件,输入以下内容,并保存。其中x1为初始值,m为迭代次数,n为最后得到的值,q为|xk+1-xk|。

clear all;

clc;p=1.8;

x1,m,n,q]=shizi1(p)

1、 对第一个迭代公式,在执行文件中输入p=1.8;[x1,m,n,q]=shizi1(p)。得到如下结果如下:初值为1.8,迭代100次,精度为10-6。

可见该迭代公式是发散的,将初值改为-1.5,其他均条件不变。

p=-1.5;

x1,m,n,q]=shizi1(p)

改变初值后可以得到一个接近真值的结果x的结果ans=-1.5321。可见此种迭代公式得到的结果需要很大的计算量。

2. 对第二个迭代公式,建立一个空白的m-文件。在编辑器中输入以下内容,并保存。

function [x1,m,n,q]=shizi2(p)

x=zeros(100,1);

x=double(x);

x(1,1)=p;

i=1;deltax=100;

while (i<100 & deltax > 0.000001)

x(i+1,1)=(x(i,1)^3-1)/3

deltax=abs(x(i+1,1)-x(i,1));

i=i+1;

endx1=x(1,1);

m=i;n=x(i,1);

q=deltax;

在执行文件中输入p=-0.3;[x1,m,n,q]=shizi2(p)。得到如下结果如下:初值为-0.3,迭代100次,精度为10-6。

迭代到第7次后就可以得到真值-0.3473的结果,此种迭代式的迭代速度较快。

改变初值,当初值等于1.8时,p=1.8;

x1,m,n,q]=shizi2(p)

其结果如下:

当初值为1.8时,迭代次数为11次。

继续改变初值,当初值等于-1.5时,p=-1.5;

x1,m,n,q]=shizi2(p)

其结果如下:

当初值为-1.5时,迭代次数为14次。

可以看出,此迭代方程迭代收敛速度较快。

3. 对第三个迭代公式,建立一个空白的m-文件。在编辑器中输入以下内容,并保存。

function [x1,m,n,q]=shizi3(p)

x=zeros(100,1);

x=double(x);

x(1,1)=p;

i=1;deltax=100;

while (i<100 & deltax > 0.000001)

x(i+1,1)= 3*x(i,1)+1)^(1/3)

deltax=abs(x(i+1,1)-x(i,1));

i=i+1;

endx1=x(1,1);

m=i;n=x(i,1);

q=deltax;

在执行文件中输入:

p=-0.3;

x1,m,n,q]=shizi3(p)

得到如下结果如下:初值为-0.3,迭代100次,精度为10-6。

迭代到第15次后就可以得到接近于真值1.8794的结果。

改变初值,当初值等于1.8时,p=1.8;

x1,m,n,q]=shizi3(p)

其结果如下:

当初值为1.8是,迭代次数为11次得到值1.8794。

继续改变初值,当初值等于-1.5时,p=-1.5;

x1,m,n,q]=shizi3(p)

其结果如下:

当初值为-1.5时,迭代次数为15次。

4. 对第四个迭代公式,建立一个空白的m-文件。在编辑器中输入以下内容,并保存。

function [x1,m,n,q]=shizi4(p)

x=zeros(100,1);

x=double(x);

x(1,1)=p;

i=1;deltax=100;

while (i<100 & deltax > 0.000001)

x(i+1,1)=1/(x(i,1)^2-3)

deltax=abs(x(i+1,1)-x(i,1));

i=i+1;

endx1=x(1,1);

m=i;n=x(i,1);

q=deltax;

在执行文件中输入:

p=-0.3;

x1,m,n,q]=shizi4(p)

得到如下结果如下:初值为-0.3,迭代100次,精度为10-6。

迭代到第7次后就可以得到真值-0.3473的结果。

改变初值,当初值等于1.8时,p=1.8;

x1,m,n,q]=shizi4(p)

其结果如下:

当初值为1.8是,迭代次数为9次得到值-0.3473。

继续改变初值,当初值等于-1.5时,p=-1.5;

x1,m,n,q]=shizi4(p)

其结果如下:

当初值为-1.5时,迭代次数为10次。

5. 对第五个迭代公式,建立一个空白的m-文件。在编辑器中输入以下内容,并保存。

function [x1,m,n,q]=shizi5(p)

x=zeros(100,1);

x=double(x);

x(1,1)=p;

i=1;deltax=100;

while (i<100 & deltax > 0.000001)

x(i+1,1)=(3+(1/x(i,1)))1/2)

deltax=abs(x(i+1,1)-x(i,1));

i=i+1;

endx1=x(1,1);

m=i;n=x(i,1);

q=deltax;

在执行文件中输入:

p=-0.3;

x1,m,n,q]=shizi5(p)

得到如下结果如下:初值为-0.3,迭代100次,精度为10-6。

当迭代到第10次时可得到与真值x*1=1.8793相近的结果。

改变初值,当初值等于1.8时,p=1.8;

x1,m,n,q]=shizi5(p)

其结果如下:

当初值为1.8时,迭代次数为7次得到值1.8794。

继续改变初值,当初值等于-1.5时,p=-1.5;

x1,m,n,q]=shizi5(p)

其结果如下:

当初值为-1.5时,迭代次数为9次得到值1.8794。

6. 对第六个迭代公式,建立一个空白的m-文件。在编辑器中输入以下内容,并保存。

function [x1,m,n,q]=shizi6(p)

x=zeros(100,1);

x=double(x);

x(1,1)=p;

i=1;deltax=100;

while (i<100 & deltax > 0.000001)

x(i+1,1)=(x(i,1))-1/3)*(x(i,1))^3)-3*(x(i,1))-1)/(x(i,1))^2)-1))

deltax=abs(x(i+1,1)-x(i,1));

i=i+1;

endx1=x(1,1);

m=i;n=x(i,1);

q=deltax;

在执行文件中输入:

p=-0.3;

x1,m,n,q]=shizi6(p)

得到如下结果如下:初值为-0.3,迭代100次,精度为10-6。

迭代到第4次后就可以得到真值-0.3473的结果,此种迭代式的迭代速度较快。

改变初值,当初值等于1.8时,p=1.8;

x1,m,n,q]=shizi6(p)

其结果如下:

当初值为1.8时,迭代次数为5次得到值1.8794。

继续改变初值,当初值等于-1.5时,p=-1.5;

x1,m,n,q]=shizi6(p)

其结果如下:

当初值为-1.5时,迭代次数为5次得到值-1.5321。

四、结果与讨论。

通过以上结果可知,初值的改变会影响到迭代的次数,初值选取不当会使得迭代次数过多,甚至可能得不到收敛。迭代法的编程很简单,但是计算量很大,收敛速度也较慢;所以可以通过埃特金的加速方法可以进行加速,或使用牛顿迭代法等来进行改进迭代;改变迭代法后,只要迭代次数足够的话,就可以使结果达到任意的精度。

数值分析大作业

课程设计。题目一 非线性方程求根。用newton法计算下列方程。1 初值分别为,2 其三个根分别为。当选择初值时给出结果并分析现象,当,迭代停止。一 摘要。非线性方程的解析解通常很难给出,因此非线性方程的数值解就尤为重要。本实验通过使用常用的求解方法二分法和newton法及改进的newton法处理几...

数值分析大作业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...