数值分析上机题答案c语言,数值分析上机题答案.doc

数值分析上机题

姓名:武均 学号:142648

习题1

17.(上机题)舍入误差与有效数

设,其精确值为。

(1)编制按从大到小的顺序,计算的通用程序。

(2)编制按从小到大的顺序,计算的通用程序。

(3)按两种顺序分别计算,,,并指出有效位数。(编制程序时用单精度)

(4)通过本上机题你明白了什么?

按从大到小的顺序计算的通用程序为:

#include

float sum(float N)

{

float j,s,sum=0;

for(j=2;j<=N;j++)

{

s=1/(j*j-1);

sum+=s;

}

return sum;

}

按从小到大的顺序计算的通用程序为:

#include

float sum(float N)

{

float j,s,sum=0;

for(j=N;j>=2;j--)

{

s=1/(j*j-1);

sum+=s;

}

return sum;

}

从大到小的顺序的值从小到大的顺序的值精确值有效位数从大到小从小到大0.7400490.740050.740049650.7498520.74990.7499440.7498520.7499990.74999936通过本上机题,看出按两种不同的顺序计算的结果是不相同的,按从大到小的顺序计算的值与精确值有较大的误差,而按从小到大的顺序计算的值与精确值吻合。从大到小的顺序计算得到的结果的有效位数少。计算机在进行数值计算时会出现“大数吃小数”的现象,导致计算结果的精度有所降低,我们在计算机中进行同号数的加法时,采用绝对值较小者先加的算法,其结果的相对误差较小。

习题2

20.(上机题)Newton迭代法

(1)给定初值及容许误差,编制Newton法解方程根的通用程序。

(2)给定方程,易知其有三个根,,。

1.由Newton方法的局部收敛性可知存在,当时,Newton迭代序列收敛于根。试确定尽可能大的。

2.试取若干初始值,观察当,,,,时Newton序列是否收敛以及收敛于哪一个根。

(3)通过本上机题,你明白了什么?

解:(1)编制的通用程序:

#include

#include

#define eps 0.000001 /给定容许误差

float f(float x) //定义函数f(x)

{

float f;

f=x*x*x/3-x; //f(x)的表达式;

return(f);

}

float df(float x) //定义函数df(x),计算f(x)的导函数

{

float df;

df=x*x-1; //f(x)导函数的表达式;

return (df);

}

void main(void)

{

float x0,x1,a;

int k=0;

cout<

cin>>x0;

do

{

a=-f(x0)/df(x0);

x1=x0+a;

k++;

x0=x1;

}

while(fabs(a)>eps);

cout<

//输出迭代的次数和根值

}

(2)计算迭代序列收敛于根的尽可能大的的函数为:

#include

#include

void delay(int n) //定义延时函数

{for(n=10000;n>0;n--);}

#define eps 0.000001

float f(float x) //定义函数f(x)

{

float f;

f=x*x*x/3-x; //f(x)的表达式;

return(f);

}

float df(float x) //定义函数df(x),计算f(x)的导函数

{

float df;

df=x*x-1; //f(x)导函数的表达式;

return (df);

}

int judgement(float z)

{

int count=5;

float x0,x1,type,type1;

x0=z;

while(count-->0)

{

x1=x0-f(x0)/df(x0);

type=fabs(x1);

type1=fabs(x1-x0); //调试值用

cout<

if(fa

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值