数值分析作业

发布 2022-08-27 20:05:28 阅读 5113

数值分析上机作业。

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...

数值分析作业

实验报告一。题目 分析误差的方法与原则。摘要 用计算机解决实际问题就要先建立数学模型,而模型与实际问题之间会出现误差无可避免。因此在数值分析中除了要研究数学问题的数值方法与理论,还要研究计算结果的误差是否满足精度要求,这就是误差估计问题。前言 目的和意义 掌握截断误差与舍入误差。数学原理 截断误差指...