数值分析上机作业。
zhh_mushan_
班级: 土木工程一班。
姓名: 赵惠惠。
班级: 2010510359
二零一一年六月
舍入误差与有效数。
一、 问题说明。
1. 设,其精确值为。
1) 编制按从小到大的顺序计算通用程序。
2) 编制按从小到大的顺序计算通用程序。
3) 按两种顺序分别计算并指出有效位数。(编制程序用单精度)
4) 通过本次上机题,你明白了什么?
二、 算法与源程序。
源程序(c语言)如下:
#include ""
#include ""
main()
float n;
float sn=0,sn1=0,sn2=0;
float e1,e2;
float i;
printf("please put into the value of n");
printf("n=")
scanf("%f",&n);
printf("");
sn=0.5*(1.5-1/n-1/(n+1));
for(i=2;i<=n;i++)
sn1=sn1+1/(i*i-1);
for(i=n;i>=2;i--)
sn2=sn2+1/(i*i-1);
e1=sn-sn1;
e2=sn-sn2;
printf("sn=%f,sn1=%f,e1=%f",sn,sn1,e1);
printf("sn=%f,sn2=%f,e2=%f",sn,sn2,e2);
三、计算结果及分析。
please put into the value of n
n=100sn=0.740049,sn1=0.740049,e1=0.000000
sn=0.740049,sn2=0.740050,e2=-0.000000
please put into the value of n
n=10000
sn=0.749900,sn1=0.749852,e1=0.000048
sn=0.749900,sn2=0.749900,e2=0.000000
please put into the value of n
n=1000000
sn=0.749999,sn1=0.749852,e1=0.000147
sn=0.749999,sn2=0.749999,e2=0.000000
在上述运算中各符号意义分别为:
sn: 算式精确值;
sn1,e1:按算法1)进行计算的结果,计算结果的绝对误差;
sn2,e2:按算法2)进行计算的结果,计算结果的绝对误差。
由计算结果可知,算法1)在n=100,10000,1000000时的绝对误差分别为e1=0.000000,0.000048, 0.
000147.可见随着n值的增大,误差也在增大;而由算法2)在n=100,10000,1000000时绝对误差为e2=0.000000,0.
000000,0.000000,可以看出,在单精度的情况下,误差并无增长。因此,我们可以得出,算法对误差的传播又一定的影响,在计算时选一种好的算法可以使结果更为精确。
牛顿迭代法。
一、问题说明。
1.给定初值x0及容许误差ε,编制牛顿法解方程f(x)=0根的通用程序。
2.给定方程f(x)=x3/3-x=0,易知其有三个根,x1*=-x2*=0,x3*=
a.由牛顿法的局部收敛性可知存在δ>0当x0∈(δ时,牛顿迭代序列收敛于根x2*.确定δ的范围。
b.试用若干值,观察当x0∈(-1),(11),(1,∞)时牛顿迭代序列收敛性及收敛于哪一个根。
3.通过本上机题,你明白了什么?
二、算法及源程序。
#include""
#include""
#define tol 0.00001
#define f(xo) xo*xo*xo+2*xo*xo+10*xo-20
#define df(xo) 3*xo*xo+4*xo+10
#define m 6
main()
float xoo,xo;
int i=0;
int flag=0;
printf("please alter the expression of f(x) and df(x) at first.")
printf("\you h**e finished the alterness ,put into flag=1");
printf("\you h**en't finished the alterness ,put into flag=0");
printf("please put into the value of flag");
printf("flag=")
scanf("%d",&flag);
if(flag==1)
while ((fabs(xoo-xo))>tol&&i<=m);
if(i>m)
printf("the solution is failure");
elseif((fabs(xoo-xo)) printf("one solution of the eqation f(x)=0 is x=%f",xoo ); if(flag==0) printf("alter the expression of f(x) and df(x) first.") 三、计算结果及分析。 please alter the expression of f(x) and df(x) at first. you h**e finished the alterness ,put into flag=1 you h**en't finished the alterness ,put into flag=0 please put into the value of flag flag=1 please put into the initial value xo: xo=1.1 xo=1.100000,xoo=4.225396 xo=4.225396,xoo=2.984068 xo=2.984068,xoo=2.241050 xo=2.241050,xoo=1.865471 xo=1.865471,xoo=1.745122 xo=1.745122,xoo=1.732196 xo=1.732196,xoo=1.732051 xo=1.732051,xoo=1.732051 one solution of the eqation f(x)=0 is x=1.732051 please alter the expression of f(x) and df(x) at first. you h**e finished the alterness ,put into flag=1 you h**en't finished the alterness ,put into flag=0 please put into the value of flag flag=1 please put into the initial value xo: xo=0.5 xo=0.500000,xoo=-0.111111 xo=-0.111111,xoo=0.000926 xo=0.000926,xoo=-0.000000 xo=-0.000000,xoo=0.000000 one solution of the eqation f(x)=0 is x=0.00000 列主元的三角分解法。 一。 问题说明。 1) 编制解n阶线形方程组ax=0的列主元三角分解法的通用程序。 2) 用所编的程序解教材弟161页所给的线性方程组。打印出解向量,保留5位有效数字。 3) 本题编程之中,你提高了那些编程能力。 二、算法及源程序。 #include"" #include"" #define n 9 main() int i,k,t,q; float a[n][n+1]; float temp=0,s=0; printf("please put into the a[n][n+1]:"); for(k=0;k for(k=0;k for(k=0;k for(i=0;i for(i=1;i a[i][0]=a[i][0]/a[0][0]; else{ t=k; 12.求在 0,1 上的一次最佳平方逼近多项式与二次最佳平方逼近多项式。函数 function s zjpfbj n,a,b 创建一个函数,里面填入次数,和区间范围。base inline x j 1 x j 定义多项式。quan inline 1 x 权函数。a zeros n 1 y zeros... 实验2.2算法设计与比较。实验目的 编制不同方法的matlab程序,这些方法的计算效果和特点。问题提出 非线性方程的数值解法很多,不同的方法效果如何,要靠计算的实践来分析 比较。实验内容 考虑下列算法 1 牛顿法 2 弦割法 3 抛物线法。分别编写它们的matlab程序。牛顿法程序 function... 实验报告一。题目 分析误差的方法与原则。摘要 用计算机解决实际问题就要先建立数学模型,而模型与实际问题之间会出现误差无可避免。因此在数值分析中除了要研究数学问题的数值方法与理论,还要研究计算结果的误差是否满足精度要求,这就是误差估计问题。前言 目的和意义 掌握截断误差与舍入误差。数学原理 截断误差指...数值分析作业
数值分析作业
数值分析作业