文档库 最新最全的文档下载
当前位置:文档库 › 西安交大计算方法

西安交大计算方法

西安交大计算方法
西安交大计算方法

.

西安交通大学计算方法上机实验

班级:(xxx)

姓名:(xxx)

学号:2111601004

'.

.

1.按两种顺序计算y,哪个接近真值?

Y = 1000 + + + …+

用java 语言编写:

public class Add {

public static void main(String[] args)

{

double s=0,y=1000;

for(double a=1001.0;a<=2000.0;a++)

{

y+=1.0/a;

}

for(double a=2000.0;a>=1001.0;a--)

{

s+=1.0/a;

}

s=s+1000;

System.out.println(正序和+s);

System.out.println(逆序和+y);

}

}

运行结果:

结论:显然假设是double类型的数据时,先算大数的过程吃掉了末尾的小数被进位所埋按从小到大(从右向左)的计算顺序所得的结果没,导致了大数吃小数的误差,与真值相近,而按从大到小(从左到右)的计算顺序所得的结果与真值的误差较大。

'.

.

1-18.设(x) = 1 + x + + + …+ , 计算(-5)和1/(5),哪个接近?

解法一:

JAVA 语言编写:用 second

classpublic

main(String[] args) void{ public static

s1=1 ,s2=1; double { double e=1,sum=1; //e的初值为1,sum用来存放n!int a=1;

while(sum

sum=a*sum;

e=1.0/sum+e;

a++;

}

double b=1.0/(e*e*e*e*e);

System.out.println(较为精确的值就支?尽+b);

for(int i=1;i<=24;i++)

{

s1+=cimi1(i);

s2+=cimi2(i);

}

s1=1.0/s1;

System.out.println(?????尽+s1);

System.out.println(卜???尽+s2);

}

public static double cimi1(int ai)

{double xi=1;

for(int i=ai;i>=1;i--)

{

xi=xi*(5.0/i);

}

return xi;

}

public static double cimi2(int ai)

{double xi=1;

for(int i=ai;i>=1;i--)

{

xi=xi*(-5.0/i);

}

return xi;

}

'.

.

}

运行结果:

解法二:

用matlab编程并运行,如下:(1)计算(-5)

运行结果如下:

(2)计算1/(5)

运行结果如下:

而的真是结果为0.006737946

比较得1/(5)的计算结果与真实值更接近

解法三:

也可以用C++编写:

#include stdafx.h

'.

.

#includestdio.h

#include iostream

using namespace std;

int main(int argc, char* argv[])

{ int func1(int );

double func2(int);

double y=0;

int i;

for(i=1;i<25;i++)

{ int z=func1(i);

double e=func2(i);

y+=z/e;

}

cout<<----------------------------------------<

cout<

cout<<----------------------------------------<

}

int func1(int x){

int y=1;

int k;

for (k=0;k

y*=5;

return y;}

double func2(int n){

double y=1;

int j;

相关文档