一、问题提出。
设方程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...