计算方法课程设计

计算方法课程设计
计算方法课程设计

数理学院2014级信息与计算科学

课程设计

姓名:刘金玉

学号: 3141301240

班级: 1402

成绩:

实验要求

1.应用自己熟悉的算法语言编写程序,使之尽可能具有通用性。2.上机前充分准备,复习有关算法,写出计算步骤,反复检查,调试程序。(注:在练习本上写,不上交)

3.完成计算后写出实验报告,内容包括:算法步骤叙述,变量说明,程序清单,输出计算结果,结构分析和小结等。(注:具体题目具体分析,并不是所有的题目的实验报告都包含上述内容!)

4.独立完成,如有雷同,一律判为零分!

5.上机期间不允许做其他任何与课程设计无关的事情,否则被发现一次扣10分,被发现三次判为不及格!非特殊情况,不能请假。旷课3个半天及以上者,直接判为不及格。

目录

一、基本技能训练 (4)

1、误差分析 (4)

2、求解非线性方程 (6)

3、插值 (12)

4、数值积分 (12)

二、提高技能训练 (16)

1、 (16)

2、 (18)

三、本课程设计的心得体会(500字左右) (21)

一、基本技能训练

1、误差分析

实验1.3 求一元二次方程的根 实验目的:

研究误差传播的原因与解决对策。 问题提出:求解一元二次方程20ax bx c ++=

实验内容:

一元二次方程的求根公式为

1,22b x a

-+=

用求根公式求解下面两个方程:

2210(1)320(2)1010

x x x x +-=-+=

实验要求:

(1) 考察单精度计算结果(与真解对比);

(2) 若计算结果与真解相差很大,分析其原因,提出新的算法(如先求1x 再

根据根与系数关系求2x )以改进计算结果。 实验步骤: 方程(1):

根据求根公式,写出程序: format long a=1;b=3;c=-2;

x1=((-1)*b+sqrt(b^2-4*a*c))/2*a

x2=((-1)*b-sqrt(b^2-4*a*c))/2*a

运行结果:

x1 = 0.5630

x2 = -3.5630

然后

由符号解求的该方程的真值程序为:

syms x;

y=x^2+3*x-2;

s=solve(y,x);

vpa(s)

运行结果为:

X1= 0.5632798704

X2= -3.56327987

方程(2):

format long

a=1;b=-10^10;c=1;

x1=((-1)*b+sqrt(b^2-4*a*c))/2*a

x2=((-1)*b-sqrt(b^2-4*a*c))/2*a

运行结果为:

x1 = 1.0000e+010

x2 = 0

然后

由符号解求的该方程的真值程序为:

syms x;

y=x^2-10^10*x+1;

s=solve(y,x);

vpa(s)

运行结果:

X1= 10000000000.0

X2= 0.6415321827

由此可知,对于方程(1),使用求根公式求得的结果等于精确值,故求根公式法可靠。而对于方程(2),计算值与真值相差很大,故算法不可靠。

改进算法,对于方程(2):先用迭代法求x1,再用11a

x x

,求x2

c

程序为:

syms k a=[ ]; for i=1:100 a(1)=4;

a(i+1)=(10^10*a(i)-1)^(1/2); end x1=a(100) x2=1/(x1) 运行结果为: x1 = 1.0000e+010 x2 = 1.0000e-010 实验结论:

对于方程(1),两种方法在精确到小数点后15位时相同,说明两种算法的结果都是精确的。

对于方程(2),两种算法结果有相当大的偏差,求根公式所求的一个根直接为零,求根公式的算法是不精确的。

原因:方程(2

)用求根公式计算时,b -b 是大数,出现了大数吃掉小数的误差,也出现了两个相近的数相减的误差,所以出现x2=0这样大的误差。改进的结果会比较准确。

2、求解非线性方程

实验2.1 Gauss 消去法的数值稳定性实验

实验目的:观察和理解高斯消元过程中出现小主元即()

k kk a 很小时,引起方程组

解的数值不稳定性.

实验内容:求解线性方程组(1,2)i i A x b i == 其中

(1)15

10.31059.14

3

15.291

6.1301211.29521211A -???

?--

?= ?

? ???,159.1746.7812b ??

?

?= ? ?

??

(2)

210701 3 2.09999999999962 5151 0102

A

-

??

?

- ?

=

?

--

?

??

1

8

5.9000000000001

5

1

b

??

?

?

=

?

?

??

实验要求:

(1)计算矩阵的条件数,判断系数矩阵是良态的还是病态的

(2)用高斯列主元消去法求得L和U及解向量

(3)用不选主元的高斯消去法求得L和U及解向量

(4)观察小主元并分析对计算结果的影响

实验步骤:

(1)计算矩阵的条件数程序:

矩阵A1:

A1=[0.3*10^(-15) 59.14 3 1;5.291 -6.130 -1 2;11.2 9 5 2;1 2 1 1];

cond(A1,1)

cond(A1,2)

cond(A1,inf)

运行结果:

ans = 136.294470872045e+000

ans = 68.4295577125341e+000

ans = 84.3114602051800e+000

由矩阵条件数判断出矩阵A1是病态矩阵。

矩阵A2:

A2=[10 -7 0 1;-3 2. 6 2;5 -1 5 -1;0 1 0 2];

cond(A1,1)

cond(A1,2)

cond(A1,inf)

运行结果:

ans = 19.2831683168042e+000

ans = 8.99393809015365e+000

ans = 18.3564356435280e+000

由矩阵条件数判断出矩阵A2是病态矩阵。

(2)高斯列主元消去法程序:

方程组(1):

A1=[0.3*10^(-15) 59.14 3 1;5.291 -6.130 -1 2;11.2 9 5 2;1 2 1 1];

b1=[59.17;46.78;1;2];

n=4;

for k=1:n-1

a=max(abs(A1(k:n,k)));

[p,k]=find(A1==a);

B=A1(k,:);c=b1(k);

A1(k,:)=A1(p,:);b1(k)=b1(p);

A1(p,:)=B;b1(p)=c;

if A1(k,k)~=0

A1(k+1:n,k)=A1(k+1:n,k)/A1(k,k);

A1(k+1:n,k+1:n)=A1(k+1:n,k+1:n)-A1(k+1:n,k)*A1(k,k+1:n);

else

break

end

end

L1=tril(A1,0);

for i=1:n

L1(i,i)=1;

end

L=L1

U=triu(A1,0)

for j=1:n-1

b1(j)=b1(j)/L(j,j);

b1(j+1:n)=b1(j+1:n)-b1(j)*L(j+1:n,j);

end

b1(n)=b1(n)/L(n,n);

for j=n:-1:2

b1(j)=b1(j)/U(j,j);

b1(1:j-1)=b1(1:j-1)-b1(j)*U(1:j-1,j);

end

b1(1)=b1(1)/U(1,1);

x1=b1

运行结果:

18100026.791010

00.47240.1755100.08930.02020.49291L ?

?????

?=??-?

?--?? 11.2

952059.143100 2.835 1.2310

000.801U ??????=??

-??

?? 1[18.9882;3.3378;34.747;33.9865]x =--

方程组(2):

A2=[10 -7 0 1;-3 2. 6 2;5 -1 5 -1;0 1 0 2]; b2=[8;5.91;5;1]; n=4; for k=1:n-1

a=max(abs(A2(k:n,k))); [p,k]=find(A2==a); B=A2(k,:);c=b2(k);

A2(k,:)=A2(p,:);b2(k)=b2(p); A2(p,:)=B;b2(p)=c; if A2(k,k)~=0

A2(k+1:n,k)=A2(k+1:n,k)/A2(k,k);

A2(k+1:n,k+1:n)=A2(k+1:n,k+1:n)-A2(k+1:n,k)*A2(k,k+1:n); else break end end

L1=tril(A2,0); for i=1:n L1(i,i)=1; end L=L1

U=triu(A2,0) for j=1:n-1

b2(j)=b2(j)/L(j,j);

b2(j+1:n)=b2(j+1:n)-b2(j)*L(j+1:n,j); end

b2(n)=b2(n)/L(n,n); for j=n:-1:2

b2(1:j-1)=b2(1:j-1)-b2(j)*U(1:j-1,j); end

b2(1)=b2(1)/U(1,1); x2=b2 运行结果:

121

00

00.51000.30.410100

0.40.3331L ?????

?=??

--??

?

-?? 1070

10 2.55 1.5006 2.300

00 3.3667U -????-??=?????? 112[0.44410; 1.0;1.0;1.0]x -=?-

(3) 不选主元的高斯消去法程序: 方程组(1): clear format long

A1=[0.3e-15 59.14 3 1;5.291 -6.130 -1 2;11.2 9 5 2;1 2 1 1]; b1=[59.17;46.78;1;2]; n=4; for k=1:n-1

A1(k+1:n,k)=A1(k+1:n,k)/A1(k,k);

A1(k+1:n,k+1:n)=A1(k+1:n,k+1:n)-A1(k+1:n,k)*A1(k,k+1:n); end

L1=tril(A1,0); for i=1:n L1(i,i)=1; end L=L1

U=triu(A1,0) for j=1:n-1

b1(j)=b1(j)/L(j,j);

b1(j+1:n)=b1(j+1:n)-b1(j)*L(j+1:n,j); end

b1(n)=b1(n)/L(n,n); for j=n:-1:2

b1(1:j-1)=b1(1:j-1)-b1(j)*U(1:j-1,j); end

b1(1)=b1(1)/U(1,1); x1=b1 运行结果:

15

151510

0017.63710100'37.3310 2.1168103.333100.18900L ?

?

????

?=?????

??

?

151815150.31059.14310 1.0431052.911017.63710'001680000.5U ?????-?-?-???=??--??

??

'1[23.6848;1.0005;0;0]x =

方程组(2): clear format long

A2=[10 -7 0 1;-3 2. 6 2;5 -1 5 -1;0 1 0 2]; b2=[8;5.91;5;1]; n=4; for k=1:n-1

A2(k+1:n,k)=A2(k+1:n,k)/A2(k,k);

A2(k+1:n,k+1:n)=A2(k+1:n,k+1:n)-A2(k+1:n,k)*A2(k,k+1:n); end

L1=tril(A2,0); for i=1:n L1(i,i)=1; end L=L1

U=triu(A2,0)

for j=1:n-1

b2(j)=b2(j)/L(j,j);

b2(j+1:n)=b2(j+1:n)-b2(j)*L(j+1:n,j); end

b2(n)=b2(n)/L(n,n); for j=n:-1:2

b2(j)=b2(j)/U(j,j);

b2(1:j-1)=b2(1:j-1)-b2(j)*U(1:j-1,j); end

b2(1)=b2(1)/U(1,1); x2=b2 运行结果:

12121

0000.310

0'0.5 2.499810100

0.9999100.4001L ??

??-?

?=??

-??

?

-???

12

1212

10

701

0 1.0106

2.3'0014.998710 5.7495100

00.400 3.3667U -????-??

?=??

???

?

??

'

52[0.36210; 1.0;1.0;1.0]x -=?-

(4) 分析小元对计算结果的影响

通过观察计算结果,分析可知,小元对计算结果的影响很大,小元的存在会使得到的计算结果有很大的误差。

3、插值

4、数值积分

实验2.4:复化求和公式计算定积分 实验内容:

计算下列各式右端定积分的近似值

3122

2011

(1) ln 22 (2) =411dx dx x x π=--+??

122

012(3) 3 (4) e ln 3x x dx xe dx ==?? 实验要求:

(1) 分别用复化梯形公式、复化Simpson 公式计算,要求绝对误差限为

70.510ε-=?;

(2) 将计算结果与精确解作比较,并比较各种算法的计算量。 实验步骤:

(1) 复化梯形公式和复化Simpson 程序: 式(1): a=2;b=3; syms x; f=1/(x^2-1); n=8; h=(b-a)/n; s=0;w=0; for i=1:n-1 x=a+h*i;

s=s+subs(f,x)*2; end

w=(s+subs(f,2)+subs(f,3))*h/2; f4=2*w f1=0;f2=0; for i=1:n-1 if rem(i,2)~=0 x1=a+i*h; f1=f1+subs(f,x1); else rem(i,2)==0 x2=a+i*h; f2=f2+subs(f,x2); end end

f3=(h/3)*(subs(f,2)+subs(f,3)+4*f1+2*f2)*2 运行结果: f4 = 0.4064

f3 = 0.4055

式(2):

a=0;b=1;

syms x;

f=1/(x^2+1);

n=100;

h=(b-a)/n;

s=0;w=0;

for i=1:n-1

x=a+h*i;

s=s+subs(f,x)*2;

end

w=(s+subs(f,2)+subs(f,3))*h/2;

f4=4*w

f1=0;f2=0;

for i=1:n-1

if rem(i,2)~=0

x1=a+i*h;

f1=f1+subs(f,x1);

else rem(i,2)==0

x2=a+i*h;

f2=f2+subs(f,x2);

end

end

f3=(h/3)*(subs(f,2)+subs(f,3)+4*f1+2*f2)*4 运行结果:

f4 = 3.1176

f3 = 3.1256

式(3):

a=0;b=1;

syms x;

f=3^x;

n=100;

h=(b-a)/n;

for i=1:n-1

x=a+h*i;

s=s+subs(f,x)*2;

end

w=(s+subs(f,2)+subs(f,3))*h/2;

f4=w

f1=0;f2=0;

for i=1:n-1

if rem(i,2)~=0

x1=a+i*h;

f1=f1+subs(f,x1);

else rem(i,2)==0

x2=a+i*h;

f2=f2+subs(f,x2);

end

end

f3=(h/3)*(subs(f,2)+subs(f,3)+4*f1+2*f2) 运行结果:

f4 = 1.9805

f3 = 1.9271

式(4):

a=1;b=2;

syms x;

f=x*exp(x);

n=100;

h=(b-a)/n;

s=0;w=0;

for i=1:n-1

x=a+h*i;

s=s+subs(f,x)*2;

end

w=(s+subs(f,2)+subs(f,3))*h/2;

f4=w

for i=1:n-1

if rem(i,2)~=0

x1=a+i*h;

f1=f1+subs(f,x1);

else rem(i,2)==0

x2=a+i*h;

f2=f2+subs(f,x2);

end

end

f3=(h/3)*(subs(f,2)+subs(f,3)+4*f1+2*f2)

运行结果:

f4 = 7.6769

f3 = 7.5809

(2)求精确解程序:

y1=log(2)

y2=pi

y3=2/log(3)

y4=exp(2)

运行结果:

y1 = 0.6931

y2 = 3.1416

y3 = 1.8205

y4 = 7.3891

(3)分析

使用复化梯形公式和复化Simpson公式计算所得的结果与真实值比较有很大的误差。

两种公式算法中,复化梯形公式计算量比复化Simpson公式的计算量少,但是两种公式算法精确度都不是很高,有待使用其他精确度高的算法替代。

二、提高技能训练

1、kepler方程的计算

在人造卫星轨道理论中对应的二体问题是可积系统,其中有 6 个积分常数为(,,,,,)T a e i M ωΩ,其中a 表示轨道半长径,e 表示轨道偏心率,i 表示轨道倾角, Ω是升交点赤经, ω 是近地点辐角,M 是平近点角。其中第六个积分常数,通常可以用其他的一些量替换,如过近地点时刻p t ,真近点角度 f 与偏近点角度E 。这几个是相互等价的关系,我们这里要讲的就是平近点角 M 与偏近点角E 的一个关系,有如下方程

sin E e E M -=

这就是著名的 Kelper 方程,是在人造卫星运动理论或者行星运动理论中最基本的方程之一。 因为如果我们已经知道卫星轨道量去计算卫星的星历时, 第 6 个根数通常是使用平近点角。这时候需要把平近点角化为偏近点角,也就是需要计算上述的 Kepler 方程。具体理论这里不再阐述,而 Kepler 方程本身是我们这里感兴趣的。可采用 Newton 迭代法计算 Kepler 方程,在实际工程中,一般也是这样做的,因为 Newton 迭代法收敛速度快而且精度比较高。也可用其它算法计算。 实验目的与要求 (1)了解 Kepler 方程;

(2)能够用牛顿迭代方法计算 Kepler 方程; (3)通过调节轨道偏心率 e 查看运算收敛情况。

实验内容及数据来源

编写解 kepler 方程的方法,给定偏心率为 0.01、平近点角为 32 度时计算出偏近点角E 。

实验步骤:

(1)对Kepler 方程的了解:

Kepler 方程又称作开普勒方程,是二体问题运动方程的一个积分。它反映天体在其轨道上的位置与时间t 的函数关系。对于椭圆轨道,开普勒方程可以表示为E -esinE=M ,式中E 为偏近点角,M 为平近点角,都是从椭圆轨道的近地点开始起算,沿逆时针方向为正,E 和M 都是确定天体在椭圆轨道上的运动和位置的基本量。

(2) 牛顿迭代法计算开普勒方程程序: N =100000; x0=0;

y=32-x0+0.01*sin(x0);

E=1.0e-6;

k=1;

while(norm(y-x0)>=E&&k

x0=y;

f=diff(y);

f1=diff(f);

if(f1~=0)

y=x0-f/f1;

end

k=k+1;

end

fprintf('迭代的次数为k=%d\n',k);

fprintf('\n');

fprintf('方程的根为 x*=%.7f\n',y);

运行结果:

迭代的次数为k=2

方程的根为 x*=32.0000000

(3)调节偏心率查看收敛情况:

调节不用的偏心率的运行结果都趋于32,由此判断出该方程为收敛方程。实验结论:

调节不同的偏心率程序运行出来的结果没有很大的偏差,所以该方程是收敛的。

2(1)、一维插值问题的应用

加工时需要x每改变0.1m时y值,并画出相应的轮廓曲线。

试验程序:

x0=[0 3 5 7 9 11 12 13 14 15];

y0=[0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6];

x=0:0.1:15;

y1=interp1(x0,y0,x); %分段线性插值

y2=interp1(x0,y0,x,'spline'); %三次样条插值

subplot(2,1,1) plot(x0,y0,'k+',x,y1,'r') grid

title('piecewise linear') %图片命名 subplot(2,1,2)

plot(x0,y0,'k+',x,y2,'r') grid

title('spline') 运行结果:

piecewise linear

spline

(2)、二维插值问题的应用

(山区地貌图)在某山区(平面区域()()0,28000,2400?内,单位:m )测得一些

试验程序:

x=0:400:2800;

y=0:400:2400;

h=[1180 1320 1450 1420 1400 1300 700 900 ; 1230 1390 1500 1500 1400 900 1100 1060; 1270 1500 1200 1100 1350 1450 1200 1150; 1370 1500 1200 1100 1550 1600 1550 1380; 1460 1500 1550 1600 1550 1600 1600 1600; 1450 1480 1500 1550 1510 1430 1300 1200; 1430 1450 1470 1320 1280 1200 1080 940]; xi=0:50:2800;

xi=xi';

yi=0:50:2400;

z=interp2(x,y,h,xi,yi,'cubic');

figure(1)

mesh(xi,yi,z)

figure(2)

contour(x,y,h)

运行结果:

地貌图及等值线图如下:

并行计算1

并行计算 实 验 报 告 学院名称计算机科学与技术学院专业计算机科学与技术 学生姓名 学号 年班级 2016年5 月20 日

一、实验内容 本次试验的主要内容为采用多线程的方法计算pi的值,熟悉linux下pthread 形式的多线程编程,对实验结果进行统计并分析以及加速比曲线分析,从而对并行计算有初步了解。 二、实验原理 本次实验利用中值积分定理计算pi的值 图1 中值定理计算pi 其中公式可以变换如下: 图2 积分计算pi公式的变形 当N足够大时,可以足够逼近pi,多线程的计算方法主要通过将for循环的计算过程分到几个线程中去,每次计算都要更新sum的值,为避免一个线程更新sum 值后,另一个线程仍读到旧的值,所以每个线程计算自己的部分,最后相加。三、程序流程图 程序主体部分流程图如下:

多线程执行函数流程图如下: 四、实验结果及分析

令线程数分别为1、2、5、10、20、30、40、50和100,并且对于每次实验重复十次求平均值。结果如下: 图5 时间随线程的变化 实验加速比曲线的计算公式类似于 结果如下: 图5 加速比曲线 实验结果与预期类似,当线程总数较少时,线程数的增多会对程序计算速度带来明显的提升,当线程总数增大到足够大时,由于物理节点的核心数是有限的,因此会给cpu带来较多的调度,线程的切换和最后结果的汇总带来的时间开销较大,所以线程数较大时,增加线程数不会带来明显的速度提升,甚至可能下降。 五、实验总结

本次试验的主要内容是多线程计算pi的实现,通过这次实验,我对并行计算有了进一步的理解。上学期的操作系统课程中,已经做过相似的题目,因此程序主体部分相似。不同的地方在于,首先本程序按照老师要求应在命令行提供参数,而非将数值写定在程序里,其次是程序不是在自己的电脑上运行,而是通过ssh和批处理脚本等登录到远程服务器提交任务执行。 在运行方面,因为对批处理任务不够熟悉,出现了提交任务无结果的情况,原因在于windows系统要采用换行的方式来表明结束。在实验过程中也遇到了其他问题,大多还是来自于经验的缺乏。 在分析实验结果方面,因为自己是第一次分析多线程程序的加速比,因此比较生疏,参考网上资料和ppt后分析得出结果。 从自己遇到的问题来看,自己对批处理的理解和认识还比较有限,经过本次实验,我对并行计算的理解有了进一步的提高,也意识到了自己存在的一些问题。 六、程序代码及部署 程序源代码见cpp文件 部署说明: 使用gcc编译即可,编译时加上-pthread参数,运行时任务提交到服务器上。 编译命令如下: gcc -pthread PI_3013216011.cpp -o pi pbs脚本(runPI.pbs)如下: #!/bin/bash #PBS -N pi #PBS -l nodes=1:ppn=8 #PBS -q AM016_queue #PBS -j oe cd $PBS_O_WORKDIR for ((i=1;i<=10;i++)) do ./pi num_threads N >> runPI.log

数值计算方法课程设计(C语言)

数值计算方法课程设计 姓名 学号 成绩

课程实际报告 实验一:秦九韶算法 题目 用选列主元高斯消去法解线性方程组 ???????=+- =-+-=-+-=--02 02 0 21 34343232121x x x x x x x x x x 算法语言: 利用c 语言的知识编写该算法程序 算法步骤叙述: 秦九昭算法的基思路是v[0]=a[0]*x+a[1] v[i]=v[i-1]*x+a[i+1];利用秦九昭算法计算多项式函数。 程序清单: #include void main() { float a[5],x,sum; int i; printf("presase input the value of x="); scanf("%f",&x); for (i =5;i >=0;i --) { printf("please input the value of a%d=",i); scanf("%f",&a[i]); } sum =a[5];

for(i=5;i>=1;i--) {sum=sum*x+a[i-1]; } printf("f(x)=%f/n",sum); } 输出结果计算:

实验总结: 通过运用C 语言,解决了秦九韶算法手写的复杂。为以后的雪地打下基础。 实验二:用选列主元高斯消去法解线性方程组 题目 用选列主元高斯消去法解线性方程组 ???????=+- =-+-=-+-=--02 0 2 0 21 34343232121x x x x x x x x x x 算法步骤叙述 第一步消元——在增广矩阵(A,b )第一列中找到绝对值最大的元素,将其所在行与第一行交换,再对(A,b )做初等行变换使原方程组的第一列元素除了第一行的全变为0; 第二步消元——在增广矩阵(A,b )中第二列中(从第二行开始)找到绝对值最大的元素,将其所在行与第二行交换,再对(A,b )做初等行变换使原方程组的第二列元素除了第一和第二行的全变为0; 第三步消元——在增广矩阵(A,b )中第三列中(从第三行开始)找到绝对值最大的元素,将其所在行与第三行交换,再对(A,b )做初等行变换使原方程组的第三列第四行元素为0; 第四,按x4-x3-x2-x1的顺序回代求解出方程组的解,x[n]=b[n]/a[n][n],x[i]=(b[i]-Σa[i][j]x[j])/a[i][i],i=n-1,…,2,1 程序清单: #include #include #define N 4 static double A[N][N] = {-3,-1,0,0,-1,2,-1,0,0,-1,2,-1,0,0,-1,2}; static double B[N]={1,0,0,0};

计算材料课程设计--计算BN的弹性常数

课程设计任务书 2011—2012 学年第1 学期 课程名称:计算材料学 一、设计题目:计算BN的弹性常数 二、完成期限:自2011 年12 月 4 日至2011 年12 月12 日共 2 周 内容及任务1.DFT基本理论,CASTEP使用方法 2.晶体模型的建立与几何优化,相关性质的计算。 3.计算BN的弹性常数 4.结果分析 5. 报告写作与修改 进度安排 起止日期工作内容 11-12-4-6 熟悉DTT理论,软件安装,认识界面,熟悉基本操作11-12-7 晶体模型建立,进行结构优化,计算物理性质 11-12-8 物理性质,力学性质的计算 11-12-9 计算BN的弹性常数 11-12-10-12 写出课程设计的总结实验报告.,修改成文 主要参考资料[1] Kohn W, Sham L J, Self-consistent equations including exchange and correlation effects [J]. Physical review, 1965, 140(4):A1133-A1338. [2] Hohenberg P, Kohn W. Inhomogeneous electron gas [J]. Physical review, 1964,136(3):B864- B871. [3] 谢希德, 陆栋.固体能带理论[M].上海:复旦大学出版,1998. [4] Perdew J P, Chevary J A, Vosko S H. Atoms, molecules, solids, and surfaces: Applications of the generalized gradient approximation for exchange and correlation[J]. Physical review B, 1992, 46(11): 6671-6687. 指导教师(签字):年月日 系(教研室)主任(签字):年月日 1

计算方法上机实验报告

《计算方法》上机实验报告 班级:XXXXXX 小组成员:XXXXXXX XXXXXXX XXXXXXX XXXXXXX 任课教师:XXX 二〇一八年五月二十五日

前言 通过进行多次的上机实验,我们结合课本上的内容以及老师对我们的指导,能够较为熟练地掌握Newton 迭代法、Jacobi 迭代法、Gauss-Seidel 迭代法、Newton 插值法、Lagrange 插值法和Gauss 求积公式等六种算法的原理和使用方法,并参考课本例题进行了MATLAB 程序的编写。 以下为本次上机实验报告,按照实验内容共分为六部分。 实验一: 一、实验名称及题目: Newton 迭代法 例2.7(P38):应用Newton 迭代法求 在 附近的数值解 ,并使其满足 . 二、解题思路: 设'x 是0)(=x f 的根,选取0x 作为'x 初始近似值,过点())(,00x f x 做曲线)(x f y =的切线L ,L 的方程为))((')(000x x x f x f y -+=,求出L 与x 轴交点的横坐标) (') (0001x f x f x x - =,称1x 为'x 的一次近似值,过点))(,(11x f x 做曲线)(x f y =的切线,求该切线与x 轴的横坐标) (') (1112x f x f x x - =称2x 为'x

的二次近似值,重复以上过程,得'x 的近似值序列{}n x ,把 ) (') (1n n n n x f x f x x - =+称为'x 的1+n 次近似值,这种求解方法就是牛顿迭代法。 三、Matlab 程序代码: function newton_iteration(x0,tol) syms z %定义自变量 format long %定义精度 f=z*z*z-z-1; f1=diff(f);%求导 y=subs(f,z,x0); y1=subs(f1,z,x0);%向函数中代值 x1=x0-y/y1; k=1; while abs(x1-x0)>=tol x0=x1; y=subs(f,z,x0); y1=subs(f1,z,x0); x1=x0-y/y1;k=k+1; end x=double(x1) K 四、运行结果: 实验二:

数值计算方法课程设计

重庆邮电大学 数学与应用数学 专业 《数值计算方法》课程设计 姓名: 李金徽 王莹 刘姝楠 班级: 1131001 1131002 1131002 学号: 2010213542 2010213570 2010213571 设计时间: 2012-6-4 指导教师: 朱伟

一、课程设计目的 在科学计算与工程设计中,我们常会遇到求解线性方程组的问题,对于系数矩阵为低阶稠密矩阵的线性方程组,可以用直接法进行消元,而对于系数矩阵为大型稀疏矩阵的情况,直接法就显得比较繁琐,而迭代法比较适用。比较常用的迭代法有Jacobi 迭代与Gauss - seidel 迭代。本文基于两种方法设计算法,并比较他们的优劣。 二、课程设计内容 给出Jacobi 迭代法和Gauss-Seidel 迭代法求解线性方程组的算法思想和MATLAB 程序实现,并对比分析这两种算法的优劣。 三、问题的分析(含涉及的理论知识、算法等) Jacobi 迭代法 方程组迭代法的基本思想和求根的迭代法思想类似,即对于线性 方程组Ax = b( 其中n n n R b R R A ∈?∈,),即方程组 )1(2211222221211 1212111?? ???? ?=+?++??=+?++=+?++n n nn n n n n n n b x a x a x a b x a x a x a b x a x a x a 将系数矩阵A 写为 )2(000000 21122 12122 11U L D a a a a a a a a a A n n n n nn --≡??? ?? ? ? ??---- ??????? ??----??????? ??= 若选取D M =,则U L A M N +=-=,方程组)1(转化为等价方程组 b x U L Dx ++=)(

计算方法实验报告格式

计算方法实验报告格式 小组名称: 组长姓名(班号): 小组成员姓名(班号): 按贡献排序情况: 指导教师评语: 小组所得分数: 一个完整的实验,应包括数据准备、理论基础、实验内容及方法,最终对实验结果进行分析,以达到对理论知识的感性认识,进一步加深对相关算法的理解,数值实验以实验报告形式完成,实验报告格式如下: 一、实验名称 实验者可根据报告形式需要适当写出. 二、实验目的及要求 首先要求做实验者明确,为什么要做某个实验,实验目的是什么,做完该实验应达到什么结果,在实验过程中的注意事项,实验方法对结果的影响也可以以实验目的的形式列出. 三、算法描述(实验原理与基础理论) 数值实验本身就是为了加深对基础理论及方法的理解而设置的,所以要求将实验涉及到的理论基础,算法原理详尽列出. 四、实验内容 实验内容主要包括实验的实施方案、步骤、实验数据准备、实验的算法以及可能用到的仪器设备. 五、程序流程图 画出程序实现过程的流程图,以便更好的对程序执行的过程有清楚的认识,在程序调试过程中更容易发现问题. 六、实验结果 实验结果应包括实验的原始数据、中间结果及实验的最终结果,复杂的结果可以用表格

形式列出,较为简单的结果可以与实验结果分析合并出现. 七、实验结果分析 实验结果分析包括对对算法的理解与分析、改进与建议. 数值实验报告范例 为了更好地做好数值实验并写出规范的数值实验报告,下面给出一简单范例供读者参考. 数值实验报告 小组名称: 小组成员(班号): 按贡献排序情况: 指导教师评语: 小组所得分数: 一、实验名称 误差传播与算法稳定性. 二、实验目的 1.理解数值计算稳定性的概念. 2.了解数值计算方法的必要性. 3.体会数值计算的收敛性与收敛速度. 三、实验内容 计算dx x x I n n ? += 1 10 ,1,2,,10n = . 四、算法描述 由 dx x x I n n ? += 1 10 ,知 dx x x I n n ?+=--101110,则

多核编程与并行计算实验报告 (1)

(此文档为word格式,下载后您可任意编辑修改!) 多核编程与并行计算实验报告 姓名: 日期:2014年 4月20日

实验一 // exa1.cpp : Defines the entry point for the console application. // #include"stdafx.h" #include #include #include #include using namespace std; void ThreadFunc1(PVOID param) { while(1) { Sleep(1000); cout<<"This is ThreadFunc1"<

实验二 // exa2.cpp : Defines the entry point for the console application. // #include"stdafx.h" #include #include using namespace std; DWORD WINAPI FunOne(LPVOID param){ while(true) { Sleep(1000); cout<<"hello! "; } return 0; } DWORD WINAPI FunTwo(LPVOID param){ while(true) { Sleep(1000); cout<<"world! "; } return 0; } int main(int argc, char* argv[]) { int input=0; HANDLE hand1=CreateThread (NULL, 0, FunOne, (void*)&input, CREATE_SUSPENDED,

数值分析课程设计

淮海工学院计算机工程学院课程设计报告书 课程名:《数值分析》 题目:数值分析课程设计 班级: 学号: 姓名:

数值分析课程设计 课程设计要求 1、研究第一导丝盘速度y与电流周波x的关系。 2、数据拟合问题运用样条差值方法求出温度变化的拟合曲线。 课程设计目的 1、通过编程加深对三次样条插值及曲线拟合的最小二乘法的理解; 2、学习用计算机解决工程问题,主要包括数据处理与分析。 课程设计环境 visual C++ 6.0 课程设计内容 课程设计题目1: 合成纤维抽丝工段中第一导丝盘的速度对丝的质量有很大的影响,第一丝盘的速度和电流周波有重要关系。下面是一组实例数据: 其中x代表电流周波,y代表第一导丝盘的速度 课程设计题目3: 在天气预报网站上获得你家乡所在城市当天24小时温度变化的数据,认真观察分析其变化趋势,在此基础上运用样条差值方法求出温度变化的拟合曲线。然后将该函数曲线打印出来并与原来的温度变化数据形成的曲线进行比较,给出结论。写出你研究的心得体会。 课程设计步骤 1、利用最小二乘法写出题1的公式和算法; 2、利用excel表格画出数据拟合后题1的图像; 3、在Visual C++ 6.0中编写出相应的代码; 4、搜索11月12日南通当地一天的温度变化数据; 5、在Visual C++ 6.0中编写出相应的代码; 6、利用excel表格画出数据拟合后题3的图像 课程设计结果 课程设计题目1 数值拟合

解:根据所给数据,在excel窗口运行: x=[49.2 50.0 49.3 49.0 49.0 49.5 49.8 49.9 50.2 50.2] y=[16.7 17.0 16.8 16.6 16.7 16.8 16.9 17.0 17.0 17.1] 课程设计题目3 数据为:X=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]; Y=[12,12,11,12,12,12,12,12,13,15,16,17,17,18,17,17,17,16,15,15,15,15,14,14]; 源代码为: 第一题: #include #include"math.h" using namespace std; //double x[100],y[100]; int main(){ int i; double k,b; double sum1=0,sum2=0,sum3=0,sum4=0; double x[10]={49.2,50.0,49.3,49.0,49.0,49.5,49.8,49.9,50.2,50.2}; double y[10]={16.7,17.0,16.8,16.6,16.7,16.8,16.9,17.0,17.0,17.1}; for(i=0;i<10;i++){ sum1+=x[i]*y[i]; sum2+=x[i];

吉林大学材料力学课程设计五种传动轴的静强度、变形及疲劳强度的计算

1.材料力学课程设计的目的 本课程设计的目的是在于系统学完材料力学之后,能结合工程中的实际问题,运用材料力学的基本理论和计算方法,独立地计算工程中的典型零部件,以达到综合运用材料力学的知识解决工程实际问题之目的。同时,可以使学生将材料力学的理论和现代计算方法及手段融为一体。既从整体上掌握了基本理论和现代的计算方法,又提高了分析问题,解决问题的能力;既把以前所学的知识(高等数学、工程图学、理论力学、算法语言、计算机和材料力学等)综合运用,又为后继课程(机械设计、专业课等)打下基础,并初步掌握工程中的设计思想和设计方法,对实际工作能力有所提高。具体的有以下六项: 1.使学生的材料力学知识系统化、完整化; 2.在系统全面复习的基础上,运用材料力学知识解决工程中的实际问题; 3.由于选题力求结合专业实际,因而课程设计可以把材料力学知识和专业需要结 合起来; 4.综合运用了以前所学的个门课程的知识(高数、制图、理力、算法语言、计算机等等)使相关学科的知识有机地联系起来; 5.初步了解和掌握工程实践中的设计思想和设计方法; 6.为后继课程的教学打下基础。 2.材料力学课程设计的任务和要求 要求参加设计者,要系统地复习材料力学的全部基本理论和方法,独立分析、判断、设计题目的已知条件和所求问题。画出受力分析计算简图和力图,列出理论依据和导出计算公式,独立编制计算程序,通过计算机给出计算结果,并完成设计计算说明书。

3.材料力学课程设计题目 传动轴的强度、变形及疲劳强度计算 3-1 设计题目 传动轴的材料为优质碳素结构钢(牌号45),许用应力[σ]=80MPa,经高频淬火处理,其=650MPa,=300MPa, =155MPa,磨削轴的表面,键槽均为端铣加工,阶梯轴过渡圆弧r均为2,疲劳安全系数n=2,要求: 1)绘出传动轴的受力简图; 2)作扭矩图及弯矩图; 3)根据强度条件设计等直轴的直径; 4)计算齿轮处轴的挠度;(按直径Φ1的等直杆计算) 5)对阶梯传动轴进行疲劳强度计算;(若不满足,采取改进措施使其满足疲 劳强度); 6)对所取数据的理论根据作必要的说明。 说明: 1)坐标的选取均按下图6—1所示; 2)齿轮上的力F与节圆相切; 3)数据表中为直径D的皮带轮传递的功率,为直径为D1的皮带轮传递 的功率。

河海大学水文分析与计算课程设计报告

水文分析计算课程设计报告书 学院:水文水资源 专业:水文与水资源工程 学号: 姓名: 指导老师:梁忠民、李国芳 2015年06月12日 南京

目录 1、设计任务 (1) 2、流域概况 (1) 3、资料情况及计算方案拟定 (1) 4、计算步骤及主要成果 (2) 4.1 设计暴雨X p(t)计算 (2) 4.1.1 区域降雨资料检验 (2) 4.1.2 频率分析与设计雨量计算 (3) 4.2计算各种历时同频率雨量X t,P (9) 4.3 选典型放大推求X P (t) (9) 4.4 产汇流计算 (9) 4.4.1 径流划分及稳渗μ值率定 (12) 4.4.2 地表汇流 (17) 4.5 由设计暴雨X P(t)推求Q P(t) (18) 4.5.1 产流计算 (18) 4.5.2 地面汇流 (18) 4.5.3地下汇流计算 (19) 4.5.4 设计洪水过程线 (20) 5、心得体会 (22)

1、设计任务 推求江西良田站设计洪水过程线,本次要求做P 校,即推求Q 0.01%(t)。 2、流域基本概况 良田是赣江的支流站。良田站以上控制的流域面积仅为44.5km 2,属于小流域,如右图所示。年降水均值在1500~1600mm 之内,变差系数Cv 为0.2,即该地区降雨充沛,年际变化小,地处湿润地区。暴雨集中。暴雨多为气旋雨、台风雨,季节为3~8月,暴雨历时为2~3日。 3、资料情况及计算方案拟定 3.1资料情况 设计站(良田)流量资料缺乏,邻近站雨量资料相对充分,具体如表3-1: 表3-1 良田站及邻近地区的实测暴雨系列、历时洪水、特大暴雨资料 (设计站(良田)流量资料缺乏,邻近站雨量资料相对充分。) 站名 实测暴雨流量系列 特大暴雨、历史洪水 良田 75~78 (4年) Q=216m 3 /s ,N=80(转化成X 1日,移置峡江站) 峡江 53~80 (28年) 吉安 36~80 (45年) 桑庄 57~80 (24年) X 1日=416mm ,N=100~150(74.8.11) 寨头 57~80 (24年) 沙港 特大暴雨 X 1日=396mm ,N=100~150(69.6.30) (移置到寨头站)

并行计算第一次实验报告

并行计算上机实验报告题目:多线程计算Pi值 学生姓名 学院名称计算机学院 专业计算机科学与技术时间

一. 实验目的 1、掌握集群任务提交方式; 2、掌握多线程编程。 二.实验内容 1、通过下图中的近似公式,使用多线程编程实现pi的计算; 2、通过控制变量N的数值以及线程的数量,观察程序的执行效率。 三.实现方法 1. 下载配置SSH客户端 2. 用多线程编写pi代码 3. 通过文件传输界面,将文件上传到集群上 4.将命令行目录切换至data,对.c文件进行编译 5.编写PBS脚本,提交作业 6.实验代码如下: #include

#include #include #include #include #include static double PI=0; static int N=0; static int numOfThread=0; static int length=0; static int timeUsed=0; static int numOfThreadArray[]={1,2,4,6,8,10,12,14,16,20,24,30}; static int threadArraySize=12; static int nTime=4; static int repeatTime=30; static double totalTime=0; struct timeval tvpre, tvafter; pthread_mutex_t mut; clockid_t startTime,endTime;

材料力学课程设计

目录 一、 关于材料力学课程设计 (2) 二、 设计题目 (2) 三、 设计内容 (3) 3.1 柴油机曲轴的受力分析 (3) 3.2 设计曲轴颈直径d ,主轴颈直径D (6) 3.3 设计h 和b,校核曲柄臂强度 (6) 3. 4 校核主轴颈H —H 截面处的疲劳强度,取疲劳安全系数n=2。键 槽为端铣加工,主轴颈表面为车削加工 (6) 3.5 用能量法计算A —A 截面的转角y θ,x θ (7) 3.6对计算过程的几点必要说明 (9) 3.7 改进方案 (10) 四、 计算机程序设计 (10) 4.1程序框图 (10) 4.2计算机程序 (11) 4.3输出结果 (12) 五、 设计体会 (12) 六、 参考书目 (12) 一、 关于材料力学课程设计 1.材料力学课程设计的目的 本课程设计的目的是在于系统学完材料力学之后,能结合工程中的实际问题,运用材料力学的基本理论和计算方法,独立地计算工程中的典型零部件,以达到综合运用材料力学的知识解决工程实际问题之目的。同时,可以使学生将材料力学的理论和现代计算方法及手段融为一体,既从整体上掌握了基本理论和现代的计算方法,又提高了分析问题、解决问题的能力;既把以前所学的知识(高等数学、工程图学、理论力

学、算法语言、计算机和材料力学等)综合运用,又为后继课程(机械设计、专业课等)打下基础,并初步掌握工程中的设计思想和设计方法,对实际工作能力有所提高。具体的有以下六项: (1)使学生的材料力学知识系统化、完整化; (2)在系统全面复习的基础上.运用材料力学知识解决工程中的实际问题; (3)由于选题力求结合专业实际.因而课程设计可以把材料力学知识和专业需要结 合起来; (4)综合运用了以前所学的多门课程的知识(高数、制图、理力、算法语言、计算 机等等)使相关学科的知识有机地联系起来; (5)初步了解和掌握工程实践中的设计思想和设计方法; (6)为后继课程的教学打下基础 2.材料力学课程设计的任务和要求 参加设计者要系统地复习材料力学的全部基本理论和方法.独立分析、判断、设计题目的已知条件和所求问题.画出受力分析计算简图和内力图.列出理论依据和导出计算公式.独立编制计算程序.通过计算机给出计算结果.并完成设计计算说明书. 3.材料力学课程设计的一般过程 材料力学课程设计与工程中的一般设计过程相似.从分析设计方案开始到进行必要的计算并对结构的合理性进行分析.最后得出结论.材料力学设计过程可大致分为以下几个阶段: (1)设计准备阶段:认真阅读材料力学课程设计指导书.明确设计要求.结合设计题目复习材料力学课程设计的有关理论知识.制定设计步骤、方法以及时间分配方案等; (2)从外力变形分析入手,分析及算内力、应力及变形,绘制各种内力图及位移、转角曲线; (3)建立强度和刚度条件.并进行相应的设计计算及必要的公式推导; (4)编制计算机程序并调试; (5)上机计算,记录计算结果; (6)整理数据,按照要求制作出设计计算说明书; (7)分析讨论设计及计算的合理性和优缺点,以及相应的改进意见和措施; 二、设计题目 某柴油机曲轴可以简化为下图所示的结构,材料为球墨铸铁(QT450—5),弹性常数为E 、μ,许用应力[σ],G 处输入转矩为e M ,曲轴颈中点受切向力t F 、径向力r F 的作用,且2t r F F = 。曲柄臂简化为矩形截面,1.4≤h D ≤1.6,2.5≤h b ≤4,3l =1.2r ,有关数据如下表:

太原理工大学数值计算方法实验报告

本科实验报告 课程名称:计算机数值方法 实验项目:方程求根、线性方程组的直接解法、线性方程组的迭代解法、代数插值和最小二乘拟合多项式 实验地点:行勉楼 专业班级:******** 学号:********* 学生:******** 指导教师:誌,冬华 2016年4 月8 日

y = x*x*x + 4 * x*x - 10; return y; } float Calculate(float a,float b) { c = (a + b) / 2; n++; if (GetY(c) == 0 || ((b - a) / 2) < 0.000005) { cout << c <<"为方程的解"<< endl; return 0; } if (GetY(a)*GetY(c) < 0) { return Calculate(a,c); } if (GetY(c)*GetY(b)< 0) { return Calculate(c,b); } } }; int main() { cout << "方程组为:f(x)=x^3+4x^2-10=0" << endl; float a, b; Text text; text.Getab(); a = text.a; b = text.b; text.Calculate(a, b); return 0; } 2.割线法: // 方程求根(割线法).cpp : 定义控制台应用程序的入口点。// #include "stdafx.h" #include"iostream"

心得体会 使用不同的方法,可以不同程度的求得方程的解,通过二分法计算的程序实现更加了解二分法的特点,二分法过程简单,程序容易实现,但该方法收敛比较慢一般用于求根的初始近似值,不同的方法速度不同。面对一个复杂的问题,要学会简化处理步骤,分步骤一点一点的循序处理,只有这样,才能高效的解决一个复杂问题。

并行处理实验报告:用MPI实现的矩阵乘法的加速比分析

华中科技大学 课程名称并行处理 实验名称矩阵乘法的实现及加速比分析考生姓名李佩佩 考生学号 M201372734 系、年级计算机软件与理论2013级类别硕士研究生 考试日期 2014年1月3日

一. 实验目的 1) 学会如何使用集群 2) 掌握怎么用并行或分布式的方式编程 3) 掌握如何以并行的角度分析一个特定的问题 二. 实验环境 1) 硬件环境:4核CPU、2GB内存计算机; 2) 软件环境:Windows XP、MPICH2、VS2010、Xmanager Enterprise3; 3) 集群登录方式:通过远程桌面连接211.69.198.2,用户名:pppusr,密码:AE2Q3P0。 三. 实验内容 1. 实验代码 编写四个.c文件,分别为DenseMulMatrixMPI.c、DenseMulMatrixSerial.c、SparseMulMatrixMPI.c和SparseMulMatrixSerial.c,用于比较并行和串行矩阵乘法的加速比,以及稀疏矩阵和稠密矩阵的加速比。这里需要说明一下,一开始的时候我是把串、并行放在一个程序中,那么就只有两个.c文件DenseMulMatrix.c 和SparseMulMatrix.c,把串行计算矩阵乘的部分放到了主进程中,即procsID=0的进程,但是结果发现执行完串行后,再执行并行就特别的慢。另外,对于稀疏矩阵的处理方面可能不太好,在生成稀疏矩阵的过程中非0元素位置的生成做到了随机化,但是在进行稀疏矩阵乘法时没有对矩阵压缩,所以跟稠密矩阵乘法在计算时间上没多大区别。 方阵A和B的初始值是利用rand()和srand()函数随机生成的。根据稀疏矩阵和稠密矩阵的定义,对于稀疏矩阵和稠密矩阵的初始化方法InitMatrix(int *M,int *N,int len)会有所不同。这里需要说明一下,一开始对于矩阵A和B的初始化是两次调用InitMatrix(int *M ,int len),生成A和B矩阵,但是随后我发现,由于两次调用方法InitMatrix的时间间隔非常短,又由于srand()函数的特点,导致生成的矩阵A和B完全一样;然后,我就在两次调用之间加入了语句“Sleep(1000);”,加入头文件“#include ”,这样生成的A、B矩阵就不一样了,但很快问题又出现了,在Xshell中不能识别头文件“#include ”。所以,最后决定用下面的方法生成矩阵A和B,B是A的转置。 //稠密矩阵的生成方法 void InitMatrix(int *M,int *N,int len) { srand((unsigned)time( NULL)); for(i=0; i < len*len; i++)

计算力学课程设计报告

计算力学课程设计说明书 作者: 学号: 学院: 专业(方向): 题目: ANSYS软件建模 指导者: (姓名) (专业技术职务) (姓名) (专业技术职务) 评阅者: (姓名) (专业技术职务) 2015 年 9 月

题目1: 下图所示为一个支座类零件的结构示意图,要求用ANSYS软件建立相应的实体模型和有限元离散模型,说明所用单元的种类、单元数和节点总数。(单位:mm) 解题步骤: 1、定义工作文件名、标题,并更改工作目录 将文件名和标题均改为zuoye1,工作目录改为H:\ANSYS。 2、选择计算类型 选择Main Manu>preferences,勾选Structural。 3、定义单元类型 选择Main Manu>Preprocessor>Element Type>Add/Edit/Delete命令,在弹出的对话框内选择Solid Brick 8node 185单元,点击OK。如下图。 4、自底向上创建几何模型 (1)绘制底座:选择Main Manu>Preprocessor>Modeling> Create>Volumes> Block>By Dimensions命令,输入相应的坐标参数,点击OK,生成底座。见下图。

(2)打圆孔:选择Main Manu>Preprocessor>Modeling>Create>Volumes> Cylinder>Solid Cylinder命令,输入相应参数,先后建立两个圆柱模型,然后选择Main Manu>Preprocessor>Modeling>Operate>Booleans>Subtract>Volumes 命令,减掉两个圆柱,从而打出两个圆孔。如下图。 (3)倒圆角:选择Main Manu> Preprocessor>Modeling>Create>Areas>Area Fillet命令,选择需要倒角的两个面,输入圆角半径,创建出两个圆弧面,然后选择Main Manu> Preprocessor>Modeling>Operate>Booleans>Divide>Volume By Area命令,切割出两个圆角,最后选择Main Manu>Preprocessor>Modeling> Delete>Volume and Below命令,删除圆角外的多余部分。如图所示。 (4)绘制底座凹槽:选择Main Manu> Preprocessor>Modeling>Create> Volumes>Block>By Dimensions命令,输入凹槽各点坐标,在凹槽位置创建出一个和底座重合的长方体块,然后选择Main Manu>Preprocessor>Modeling> Operate> Booleans>Subtract>Volumes命令,在底座中减去重合部分即可。如图所示。

多核编程与并行计算实验报告 (1)

多核编程与并行计算实验报告 姓名: 日期:2014年 4月20日 实验一 // exa1.cpp : Defines the entry point for the console application.

// #include"stdafx.h" #include #include #include #include using namespace std; void ThreadFunc1(PVOID param) { while(1) { Sleep(1000); cout<<"This is ThreadFunc1"<

实验二 // exa2.cpp : Defines the entry point for the console application. // #include"stdafx.h" #include #include using namespace std; DWORD WINAPI FunOne(LPVOID param){ while(true) { Sleep(1000); cout<<"hello! "; } return 0; } DWORD WINAPI FunTwo(LPVOID param){ while(true) { Sleep(1000); cout<<"world! ";

《数值分析》课程设计报告

《数值分析》课程设计实验报告 龙格—库塔法分析Lorenz 方程 200820302033 胡涛 一、问题叙述 考虑著名的Lorenz 方程 () dx s y x dt dy rx y xz dt dz xy bz dt ?=-???=--???=-?? 其中s ,r ,b 为变化区域内有一定限制的实参数,该方程形式简单,表面上看并无惊人之处,但由该方程揭示出的许多现象,促使“混沌”成为数学研究的崭新领域,在实际应用中也产生了巨大的影响。 二、问题分析 Lorenz 方程实际上是一个四元一阶常微分方程,用解析法精确求解是不可能的,只能用数值计算,最主要的有欧拉法、亚当法和龙格- 库塔法等。为了得到较高精度的,我们采用经典四阶龙格—库塔方法求解该问题。 三、实验程序及注释 (1)算法程序 function [T]=Runge_Kutta(f,x0,y0,h,n) %定义算法,其中f 为待解方程组, x0是初始自变量,y0是初始函数 值,h 是步长,n 为步数 if nargin<5 n=100; %如果输入参数个数小于5,则步数 n=100 end r=size(y0);r=r(1); %返回初始输出矩阵的行列数,并将 值赋给r(1) s=size(x0);s=s(1); %返回初始输入矩阵的行列数,并 将值赋给s(1) r=r+s; T=zeros(r,n+1); T(:,1)=[y0;x0]; for t=2:n+1 %以下是具体的求解过程 k1=feval(f,T(1:r-1,t-1)); k2=feval(f,[k1*(h/2)+T(1:r-1,t-1);x0+h/2]); k3=feval(f,[k2*(h/2)+T(1:r-1,t-1);x0+h/2]); k4=feval(f,[k3*h+T(1:r-1,t-1);x0+h]); x0=x0+h; T(:,t)=[T(1:r-1,t-1)+(k1+k2*2+k3*2+k4)*(h/6);x0]; end

水文分析计算课程设计

《水文分析与计算》课程设计指导书 ———设计年径流及设计洪水的计算 一、课程设计的目的 1.掌握PIII型频率曲线的制作方法 2. 掌握设计年径流及其年内分配的计算方法 3.掌握考虑历史特大洪水的设计洪水及其过程的计算方法 二、课程设计任务 1.根据所给资料推求设计年径流与设计年内分配过程 表1是某站1958~1976年各月径流量资料,根据所给资料推求P=10%的设计丰水年、P=50%的设计平水年、P=90%的设计枯水年的设计年径流量;并计算P=90%的设计枯水年径流年内分配过程。 要求:理论频率曲线采用PIII型分布,由矩法作参数无偏估计,并以估计值为初值,用目估适线法选配理想的理论频率曲线,注意比较验证均值X a、变差系数C V、偏态系数C S对频率曲线的影响效果。检查所选最终的理论频率曲线的合理性,并计算所求设计频率的相应设计年径流,年径流分配过程采用典型年同倍比放大法。 3

三、课程设计成果要求 要求提交设计成果:一份电子文档,一份打印文档。设计中的计算可采用采用excel 或编程计算,编程语言可采用FORTRAN 语言、C 语言、Basic 语言或同等功能的语言编程。要求程序正确、可靠、可运行,符合结构化程序设计思想,具有易读性、可修改性、可验证性、通用性,关键变量应作注释说明。计算结果要表格化,便于检查、保存和打印。设计设计报告,其重点是对计算成果的说明和合理性分析及其有关问题的讨论。要求文字流畅,简明扼要;图表整齐清楚,名称、编号齐全;封面统一,最后装订成册。 四、课程设计的考核 平日考勤、设计报告,加上抽查提问及上机操作,对成绩进行综合评定。 五、课程设计时间与地点 时间: 2013年5月9日星期四 地点: 学院 六、实验原理 1.经验频率计算 经验频率:P=m/(n+1)*100%,模比系数:Q Q Ki i = 2.线型选择 频率曲线一般应采用皮尔逊Ⅲ型。 3.频率曲线参数估计 平均值:n 1 ∑== n i i Q Q 变差系数:() 1 n 11 2 --= ∑=n i i v K C 4.偏态系数:Cs=2-3Cv 七、实验步骤 1、将测站所得数据年份及年平均流量数据复制与Excel 表格中,并列出序号,同时计算出年平均流量的均值。 2、另起一列,将年平均流量数据按从大到小排列。按数学期望公式计算出相应经验频率P=m/(n+1)*100%。在画图软件上绘制经验点距。再计算出各相应的模比系数Ki (Q Q Ki i =)和(Ki-1)2。 3、选定水文频率分布线型(选用皮尔逊Ⅲ型)。 表2 某站年径流量频率计算表

相关文档
最新文档