当前位置:文档之家› 数值分析实验报告--常微分方程的差分方法及并行方法

数值分析实验报告--常微分方程的差分方法及并行方法

数值分析实验报告--常微分方程的差分方法及并行方法
数值分析实验报告--常微分方程的差分方法及并行方法

《数值分析》实验报告

实验七、常微分方程的差分方法

及并行方法

(一)欧拉方法

一. 实验目的 ① 通过这次实验我们解决了 Mat lab 编有关微分方程的诸多问题 例如欧拉方法求微分方程。使我不仅深入了解欧拉公式的具体概念,还进一步学会使用Matlab 来求解求复杂的常微分方程的方法等问题,使结果更加精准。让我体会到了高数和计算方法相结合的重要性,使我们对这门课更加感兴趣。

②让我们熟悉Mat lab 编 环 并要熟练掌握及应用

二. 实验要求

要求会用Mat lab 来编关于欧拉方法的程序并会运行处结果,根据下面的有关题目算出结果后并画出有关图形以及比较其误差。要求实验的准确性。

三. 实验内容

首先对欧拉方法要有深入的了解并会准确应用,再编写出Mat lab 的欧拉方法的程序后,运行并把得到的结果,误差分心和图形写在试验报告上。

四. 实验题目

例 用欧拉方法求初值问题

?????=≤≤?==1

,10,0x y x y x dx dy 的数值解,分别取5002.0005.0,

=h ,并计算误差,画出精确解和数值解的图形.

五. 实验原理

原理:向前欧拉公式如下:10(,),0,1,...n n n n n y y hf x y n x x nh +=+=??=+?

六. 设计思想

它是一种最简单的解微分方程的数值方法,它的基本想法和微分法的基本思想相同,是在小区间[x n ,x n+1]上利用差商

[y(x n+1)-y(x n )]/h 来代替方程左端的导数y’,而方程右端的已知函数f(x,y)中的x 在最先区间[x n ,x n+1]上取的值不同。

七. 对应程序及实验结果及图形

用向前欧拉公式求解常微分方程初值问题的数值解及其截断误差公式的MATLAB 主程序:

function f=funfcn(x,y)

f=x-y ;保存名为funfcn.m的M文件

在工作区输入S1=dsolve('Dy=x-y','y(0)=1','x')

输出为:

S1 =-1+x+2*exp(-x)

再输入主程序

function P=Eulerli1(x0,y0,b,h)

n=(b-x0)/h; X=zeros(n,1);

Y=zeros(n,1); k=1;

X(k)=x0; Y(k)=y0;

for k=1:n

X(k+1)=X(k)+h;

Y(k+1)=Y(k)+h*(X(k)-Y(k)); k=k+1;

end

y= -1+X+2*exp(-X); plot(X,Y,'mp',X,y,'b-')

grid

xlabel('自变量 X'), ylabel('因变量 Y')

title('用向前欧拉公式求dy/dx=x-y ,y(0)=1在[0,1]上的数值解和精确解y= -1+x+2*exp(-x)')

legend('h=0.05时,dy/dx=x-y ,y(0)=1在[0,1]上的数值解','精确解y= -1+x+2*exp(-x)')

jwY=y-Y;xwY=jwY./y;

k1=1:n;k=[0,k1];

P=[k',X,Y,y,jwY,xwY];

保存名为Eulerli1.m的M文件

在MATLAB工作窗口输入下面的程序

x0=0;y0=1;b=1;h=0.05;

P=Eulerli1(x0,y0,b,h)

legend('h=0.05时,dy/dx=x-y,y(0)=1在[0,1]上的数

值解','精确解y=-1+x+2*exp(-x)')

输出结果为

P =

0 0 1.0000 1.0000 0 0

1.0000 0.0500 0.9500 0.9525 0.0025

0.0026

2.0000 0.1000 0.9050 0.9097 0.0047

0.0051

3.0000 0.1500 0.8647 0.8714 0.0067

0.0076

4.0000 0.2000 0.8290 0.8375 0.0084

0.0101

5.0000 0.2500 0.7976 0.8076 0.0100

0.0124

6.0000 0.3000 0.7702 0.7816 0.0115

0.0147

7.0000 0.3500 0.7467 0.7594 0.0127

0.0167

8.0000 0.4000 0.7268 0.7406 0.0138

0.0186

9.0000 0.4500 0.7105 0.7253 0.0148

0.0203

10.0000 0.5000 0.6975 0.7131 0.0156

0.0219

11.0000 0.5500 0.6876 0.7039 0.0163

0.0232

12.0000 0.6000 0.6807 0.6976 0.0169

0.0242

13.0000 0.6500 0.6767 0.6941 0.0174

0.0251

14.0000 0.7000 0.6753 0.6932 0.0178

0.0257

15.0000 0.7500 0.6766 0.6947 0.0182

0.0261

16.0000 0.8000 0.6803 0.6987 0.0184 0.0263

17.0000 0.8500 0.6862 0.7048 0.0186 0.0264

18.0000 0.9000 0.6944 0.7131 0.0187 0.0262

19.0000 0.9500 0.7047 0.7235 0.0188 0.0260

20.0000 1.0000 0.7170 0.7358 0.0188 0.0255

>> x0=0;y0=1;b=1;h=0.0250;

P=Eulerli1(x0,y0,b,h)

输入结果P =

0 0 1.0000 1.0000 0 0

1.0000 0.0250 0.9750 0.9756 0.0006 0.0006

2.0000 0.0500 0.9512 0.9525 0.0012 0.0013

3.0000 0.0750 0.9287 0.9305 0.0018 0.0019

4.0000 0.1000 0.9074 0.9097 0.0023 0.0025

5.0000 0.1250 0.8872 0.8900 0.0028 0.0031

6.0000 0.1500 0.8681 0.8714 0.0033 0.0038

7.0000 0.1750 0.8502 0.8539 0.0037 0.0044

8.0000 0.2000 0.8333 0.8375 0.0042 0.0050

9.0000 0.2250 0.8175 0.8220 0.0046 0.0055

10.0000 0.2500 0.8027 0.8076

0.0049 0.0061

11.0000 0.2750 0.7888 0.7941

0.0053 0.0067

12.0000 0.3000 0.7760 0.7816

0.0056 0.0072

13.0000 0.3250 0.7641 0.7701

0.0060 0.0077

14.0000 0.3500 0.7531 0.7594

0.0063 0.0082

15.0000 0.3750 0.7430 0.7496

0.0065 0.0087

16.0000 0.4000 0.7338 0.7406

0.0068 0.0092

17.0000 0.4250 0.7255 0.7325

0.0070 0.0096

18.0000 0.4500 0.7180 0.7253

0.0073 0.0100

19.0000 0.4750 0.7113 0.7188

0.0075 0.0104

20.0000 0.5000 0.7054 0.7131

0.0077 0.0108

21.0000 0.5250 0.7002 0.7081

0.0079 0.0111

22.0000 0.5500 0.6959 0.7039 0.0080 0.0114

23.0000 0.5750 0.6922 0.7004 0.0082 0.0117

24.0000 0.6000 0.6893 0.6976 0.0083 0.0120

25.0000 0.6250 0.6871 0.6955 0.0085 0.0122

26.0000 0.6500 0.6855 0.6941 0.0086 0.0124

27.0000 0.6750 0.6846 0.6933 0.0087 0.0125

28.0000 0.7000 0.6844 0.6932 0.0088 0.0127

29.0000 0.7250 0.6848 0.6936 0.0089 0.0128

30.0000 0.7500 0.6858 0.6947 0.0090 0.0129

31.0000 0.7750 0.6874 0.6964 0.0090 0.0130

32.0000 0.8000 0.6896 0.6987 0.0091 0.0130

33.0000 0.8250 0.6923 0.7015 0.0091 0.0130

34.0000 0.8500 0.6956 0.7048 0.0092 0.0130

35.0000 0.8750 0.6995 0.7087 0.0092 0.0130

36.0000 0.9000 0.7039 0.7131 0.0093 0.0130

37.0000 0.9250 0.7088 0.7181 0.0093 0.0129

38.0000 0.9500 0.7142 0.7235 0.0093 0.0128

39.0000 0.9750 0.7201 0.7294 0.0093 0.0127

40.0000 1.0000 0.7265 0.7358

0.0093 0.0126

八.实验体会

此次实验是一种最简单的解微分方程的数值方法,虽然简单方便运行,但是精度有点低,但是做题还是以精度高的为好,应该用以下的改进的欧拉方法较好。

(二)改进的欧拉算法 一.实验目的

通过MATLAB编程和常微分方程的差分方法中某种具体算法解决具体问题的时候,更深一步的体会数值分析这门课的重要性,并深入了解改进后的欧拉算法的原理,知道他的好处有哪些,缺点有哪些。同时学会用比较的态度看待某些特定问题。二.实验要求

要求会用MATLAB编程,并执行出改进后欧拉方法的结果,完成解决以下的具体问题。并深入理解它的真正含义。

三.实验内容

理解改进的欧拉公式的真正含义,用MATLAB 编程后并运行以下题目,算出它的精确解和数值解。并画出图形,从图形结果和定义上进一步理解改进的欧拉公式。

四.实验题目

用改进欧拉方法求下列问题

??

???=≤≤?+==1,10,3520x y x y x dx dy 的数值解,并计算误差,画出精确解和数值解的图形.

五.实验原理

改进欧拉公式 yn+1=yn+h/2*(k1+k2)

k1=f(xn,yn)

k1=f(xn+1,yn+hk1)

六.设计思想

我们知道向前欧拉公式精度只有一阶,而梯形公式的精度提到二倍,但迭代太繁琐,方法使迭代过程分为两步:先由欧拉公式算出y n+1的预测值y^n+1;再把它带入梯形公式的右端,作为校正。

七.对应程序及实验结果及图形 保存下面程序存为jq.m

syms x

dsolve('Dy=2*x+5*y-3','y(0)=1','x')

输出jq 有

ans =

13/25-2/5*x+12/25*exp(5*x)

再保存下面文件为funfcn.m

function f=funfcn(x,y)

f=2*x+5*y-3;

再输入保存一下主程序为gaiEuler.m :

function [H,X,Y ,k,h,P]=gaiEuler(funfcn,x0,b,y0,tol)

%初始化.

pow=1/3;

x=x0; h=0.0078125*(b-x);

y=y0(:);p=128; n=fix((b-x0)/h);

H=zeros(p,1); X=zeros(p,1);

Y=zeros(p,length(y)); k=1;

X(k)=x; Y(k,:)=y';

% 绘图.

clc,x,h,y

% 主循环.

while(xx)

if x+h>b

h=b-x;

end

%计算斜率.

fxy=feval(funfcn,x,y); fxy=fxy(:);

%计算误差,设定可接受误差.

delta=norm(h*fxy,'inf'); wucha=tol*max(norm(y,'inf'),1.0);

% 当误差可接受时重写解.

if delta<=wucha

x=x+h; y1=y+h*fxy; fxy1=feval(funfcn,x,y1);

fxy=fxy(:);y2=(fxy+fxy1)/2; y=y+h*y2; k=k+1;

if k>length(X)

X=[X;zeros(p,1)]; Y=[Y;zeros(p,length(y))];

H=[H;zeros(p,1)];

end

H(k)=h;X(k)=x;Y(k,:)=y'; plot(X,Y,'mh'), grid

xlabel('自变量 X'), ylabel('因变量 Y')

title('用改进的欧拉公式计算dy/dx=f(x,y),y(x0)=y0在[x0,b]上的数值解')

end

%更新步长.

if delta~=0.0

h=min(h*8,0.9*h*(wucha/delta)^pow);

end

end

if (x

disp('Singularity likely.'), x

end

H=H(1:k); X=X(1:k); Y=Y(1:k,:); n=1:k; P=[n',H,X,Y]

在工作区输入:

x0=0;y0=1;b=1;tol=1.e-1;

[H,X,Y,k,h,P]=gaiEuler(@funfcn,x0,b,y0,tol)

S1 = 13/25-2/5*X+12/25*exp(5*X),

plot(X,Y,'ro',X,S1,'b-')

legend('用改进的欧拉公式计算dy/dx=2x+5y-3,y(0)=1在[0,1]上的数值解', 'dy/dx=2x+5y-3,y(0)=1在[0,1]上的精确解') juwY=S1-Y; xiwY=juwY./Y;

L=[P,S1,juwY,xiwY]

得出实验结果及图形为:

x =

h =

0.0078

y =

1

P =

1.0000 0 0 1.0000

2.0000 0.0078 0.0078 1.0160

3.0000 0.0131 0.0209 1.0444

4.0000 0.0182 0.0391 1.0878

5.0000 0.0223 0.0614 1.1476

6.0000 0.0250 0.0864 1.2244

7.0000 0.0264 0.1128 1.3177

8.0000 0.0266 0.1394 1.4267

9.0000 0.0261 0.1655 1.5502

10.0000 0.0252 0.1908 1.6872

11.0000 0.0242 0.2150 1.8371

12.0000 0.0231 0.2381 1.9995

13.0000 0.0221 0.2603 2.1745

14.0000 0.0212 0.2815 2.3625

15.0000 0.0204 0.3019 2.5640

16.0000 0.0197 0.3216 2.7800

17.0000 0.0191 0.3407 3.0113

18.0000 0.0186 0.3592 3.2591

19.0000 0.0181 0.3774 3.5247

20.0000 0.0177 0.3951 3.8096

21.0000 0.0174 0.4124 4.1152

22.0000 0.0171 0.4295 4.4431

23.0000 0.0168 0.4463 4.7951

24.0000 0.0166 0.4629 5.1731

25.0000 0.0164 0.4793 5.5791

26.0000 0.0162 0.4955 6.0152

27.0000 0.0160 0.5116 6.4839

28.0000 0.0159 0.5275 6.9875

29.0000 0.0158 0.5432 7.5288

30.0000 0.0157 0.5589 8.1106

31.0000 0.0156 0.5745 8.7360

32.0000 0.0155 0.5899 9.4084

33.0000 0.0154 0.6053 10.1313

34.0000 0.0153 0.6206 10.9086

35.0000 0.0152 0.6359 11.7443

36.0000 0.0152 0.6511 12.6429

37.0000 0.0151 0.6662 13.6092

38.0000 0.0151 0.6813 14.6482

39.0000 0.0150 0.6963 15.7656

40.0000 0.0150 0.7113 16.9672

41.0000 0.0150 0.7263 18.2594

42.0000 0.0149 0.7412 19.6490

43.0000 0.0149 0.7561 21.1434

44.0000 0.0149 0.7710 22.7505

45.0000 0.0148 0.7858 24.4789

46.0000 0.0148 0.8006 26.3378

47.0000 0.0148 0.8154 28.3369

48.0000 0.0148 0.8302 30.4869

49.0000 0.0148 0.8449 32.7991

50.0000 0.0147 0.8597 35.2860

51.0000 0.0147 0.8744 37.9605

52.0000 0.0147 0.8891 40.8370

53.0000 0.0147 0.9038 43.9307

54.0000 0.0147 0.9185 47.2580

55.0000 0.0147 0.9332 50.8365

56.0000 0.0147 0.9479 54.6852

57.0000 0.0147 0.9625 58.8246

58.0000 0.0147 0.9772 63.2766

59.0000 0.0146 0.9918 68.0649

60.0000 0.0082 1.0000 70.8969

H =

0.0078

0.0131

0.0182

0.0223

0.0250

0.0264

0.0266

0.0261

0.0252

0.0242

0.0231

0.0221

0.0212

0.0204

0.0197

0.0191

0.0186

0.0181

0.0177

0.0174

0.0171

0.0168

0.0166

0.0164

0.0162

0.0160

0.0159

0.0158

0.0157

0.0156

0.0155

0.0154 0.0153 0.0152 0.0152 0.0151 0.0151 0.0150 0.0150 0.0150 0.0149 0.0149 0.0149 0.0148 0.0148 0.0148 0.0148 0.0148 0.0147 0.0147 0.0147 0.0147 0.0147 0.0147 0.0147 0.0147 0.0147 0.0146 0.0082 X =

0 0.0078 0.0209 0.0391 0.0614

0.0864 0.1128 0.1394 0.1655 0.1908 0.2150 0.2381 0.2603 0.2815 0.3019 0.3216 0.3407 0.3592 0.3774 0.3951 0.4124 0.4295 0.4463 0.4629 0.4793 0.4955 0.5116 0.5275 0.5432 0.5589 0.5745 0.5899 0.6053 0.6206 0.6359 0.6511 0.6662 0.6813 0.6963 0.7113 0.7263 0.7412

0.7561 0.7710 0.7858 0.8006 0.8154 0.8302 0.8449 0.8597 0.8744 0.8891 0.9038 0.9185 0.9332 0.9479 0.9625 0.9772

0.9918

1.0000 Y =

1.0000 1.0160 1.0444 1.0878 1.1476 1.2244 1.3177 1.4267 1.5502 1.6872 1.8371

1.9995

2.1745 2.3625 2.5640

2.7800

3.0113 3.2591

3.5247

3.8096

4.1152 4.4431

4.7951

5.1731

5.5791

6.0152 6.4839

6.9875

7.5288

8.1106

8.7360

9.4084

10.1313

10.9086

11.7443

12.6429

13.6092

14.6482

15.7656

16.9672

18.2594

19.6490

21.1434

22.7505 24.4789 26.3378 28.3369 30.4869 32.7991 35.2860 37.9605 40.8370 43.9307 47.2580 50.8365

54.6852

58.8246

63.2766

68.0649

70.8969

k =

60

h =

0.0099

P =

1.0000 0 0 1.0000

2.0000 0.0078 0.0078 1.0160

3.0000 0.0131 0.0209 1.0444

4.0000 0.0182 0.0391 1.0878

5.0000 0.0223 0.0614 1.1476

6.0000 0.0250 0.0864 1.2244

7.0000 0.0264 0.1128 1.3177

8.0000 0.0266 0.1394 1.4267

9.0000 0.0261 0.1655 1.5502

10.0000 0.0252 0.1908 1.6872

11.0000 0.0242 0.2150 1.8371

12.0000 0.0231 0.2381 1.9995

13.0000 0.0221 0.2603 2.1745

14.0000 0.0212 0.2815 2.3625

15.0000 0.0204 0.3019 2.5640

16.0000 0.0197 0.3216 2.7800

17.0000 0.0191 0.3407 3.0113

18.0000 0.0186 0.3592 3.2591

19.0000 0.0181 0.3774 3.5247

20.0000 0.0177 0.3951 3.8096

21.0000 0.0174 0.4124 4.1152

22.0000 0.0171 0.4295 4.4431

23.0000 0.0168 0.4463 4.7951

24.0000 0.0166 0.4629 5.1731

25.0000 0.0164 0.4793 5.5791

26.0000 0.0162 0.4955 6.0152

27.0000 0.0160 0.5116 6.4839

28.0000 0.0159 0.5275 6.9875

29.0000 0.0158 0.5432 7.5288

30.0000 0.0157 0.5589 8.1106

31.0000 0.0156 0.5745 8.7360

32.0000 0.0155 0.5899 9.4084

33.0000 0.0154 0.6053 10.1313

34.0000 0.0153 0.6206 10.9086

35.0000 0.0152 0.6359 11.7443

36.0000 0.0152 0.6511 12.6429

37.0000 0.0151 0.6662 13.6092

38.0000 0.0151 0.6813 14.6482

39.0000 0.0150 0.6963 15.7656

40.0000 0.0150 0.7113 16.9672

41.0000 0.0150 0.7263 18.2594

42.0000 0.0149 0.7412 19.6490

43.0000 0.0149 0.7561 21.1434

44.0000 0.0149 0.7710 22.7505

45.0000 0.0148 0.7858 24.4789

46.0000 0.0148 0.8006 26.3378

47.0000 0.0148 0.8154 28.3369

48.0000 0.0148 0.8302 30.4869

49.0000 0.0148 0.8449 32.7991

50.0000 0.0147 0.8597 35.2860

51.0000 0.0147 0.8744 37.9605

52.0000 0.0147 0.8891 40.8370

53.0000 0.0147 0.9038 43.9307

54.0000 0.0147 0.9185 47.2580

55.0000 0.0147 0.9332 50.8365

56.0000 0.0147 0.9479 54.6852

57.0000 0.0147 0.9625 58.8246

58.0000 0.0147 0.9772 63.2766

59.0000 0.0146 0.9918 68.0649

60.0000 0.0082 1.0000 70.8969 S1 =

1.0000

1.0160

1.0444

1.0879 1.1479 1.2249 1.3186 1.4280 1.5521 1.6897

1.8403

2.0035 2.1794 2.3682 2.5707

2.7877

3.0201 3.2692 3.5362

3.8224

4.1296 4.4592

4.8130

5.1930

5.6011

6.0396

6.5108

7.0172

7.5614

8.1465

8.7755

9.4517

10.1788

10.9605

11.8012

12.7051

13.6772

14.7226

15.8468 17.0558

18.3560

19.7544

21.2583

22.8758

24.6154

26.4864

28.4987

30.6631

32.9909

35.4946

38.1875

41.0839

44.1991

47.5498

51.1537

55.0300

59.1992

63.6837

68.5070

71.3583

L =

Columns 1 through 4

1.0000 0 0 1.0000

2.0000 0.0078 0.0078 1.0160

3.0000 0.0131 0.0209 1.0444

4.0000 0.0182 0.0391 1.0878

5.0000 0.0223 0.0614 1.1476

6.0000 0.0250 0.0864 1.2244

7.0000 0.0264 0.1128 1.3177

8.0000 0.0266 0.1394 1.4267

9.0000 0.0261 0.1655 1.5502

10.0000 0.0252 0.1908 1.6872

11.0000 0.0242 0.2150 1.8371

12.0000 0.0231 0.2381 1.9995

13.0000 0.0221 0.2603 2.1745

14.0000 0.0212 0.2815 2.3625

15.0000 0.0204 0.3019 2.5640

三轮DES差分分析实验报告-刘杰

DES 差分分析实验报告 四大队四队五班 刘杰 一、实验目的 差分密码分析是一种选择明文攻击,是现代分组密码分析的重要方法之一,也是理论分析密码算法和算法抗攻击测试的重要依据之一。本实验通过3轮DES 简化算法的差分分析来达到加深学员对差分分析方法原理的理解和利用该原理分析实际问题的操作能力。 二、实验内容 (1)3轮DES 简化算法的差分分析; (2)通过三组明密文对(每组两个相关明文和相应密文),利用差分原理提取密钥。 明 文 密 文 748502CD38451097 03C70306D8A09F10 3874756438451097 78560A0960E6D4CB 486911026ACDFF31 45FA285BE5ADC730 375BD31F6ACDFF31 134F7915AC253457 357418DA013FEC86 D8A31B2F28BBC5CF 12549847013FEC86 0F317AC2B23CB944 三、实验原理 设DES 两个明密文对:=00m L R ***=00m L R =33c L R *** =33c L R 计算过程: (,)(,)(,)(,)=⊕=⊕=⊕⊕322312300123R L f R k R f R k L f R k f R k

(,)(,)****=⊕⊕300123R L f R k f R k 令:*'=⊕000L L L (,)(,)(,)(* **''=⊕=⊕⊕⊕⊕333001012323R R R L f R k f R k f R k f R k 观察得:在本次实验原始数据中,明文对*=00R R ,即* '=⊕=00000000000R R R 则(,)(,)** ''=⊕=⊕⊕33302323R R R L f R k f R k 同时有:=00m L R ***=00m L R =23R L ** =23R L 则可计算出:*'=⊕000L L L *'=⊕333R R R (,)(,)* ''⊕=⊕232330f R k f R k R L 则可得出: S 盒输入差:(())(())()()* *⊕⊕⊕=⊕232333E R k E R k E L E L S 盒输出差:()*-''⊕=⊕13 0D D P R L 分析过程: 令:()()*⊕=3312345678E L E L B B B B B B B B ()-''⊕=13 012345678P R L C C C C C C C C ()=312345678E L A A A A A A A A =312345678 k J J J J J J J J ()⊕=3312345678E L k X X X X X X X X *()⊕=3312345678E L k Y Y Y Y Y Y Y Y 基本思路:(分别计算12345678J J J J J J J J ) {|,()()∈=⊕⊕=⊕=i i i i i i i J T e s t x A x y B S x S y C ,,,,,,,=12345678i 对于本次实验的3个具有明文差(*,0)的明密文对,则可构造上面的3个 Test 集合,显然 ()()( )∈12 i i i i J Test Test Test t ,,,,,,,=12345678i 一种确定Ji 的直接方法: 1.建立26=64长度的数组J[64]={0}; 2.对Testi(r),r = 1,2,…,t ,若a ∈Testi(r),则 J[a] = J[a] + 1。 3.若J[b] =3,则6比特串b 就是可能的密钥比特 Ji 。 四、实验环境 Microsoft visual c++ 五、实验步骤 (1)计算简化算法第3轮S 盒输入差

数值分析实验报告1

实验一误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 其中ε(1.1)和(1.221,,,a a 的输出b ”和“poly ε。 (1(2 (3)写成展 关于α solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。 实验过程: 程序: a=poly(1:20); rr=roots(a); forn=2:21 n form=1:9 ess=10^(-6-m);

ve=zeros(1,21); ve(n)=ess; r=roots(a+ve); -6-m s=max(abs(r-rr)) end end 利用符号函数:(思考题一)a=poly(1:20); y=poly2sym(a); rr=solve(y) n

很容易的得出对一个多次的代数多项式的其中某一项进行很小的扰动,对其多项式的根会有一定的扰动的,所以对于这类病态问题可以借助于MATLAB来进行问题的分析。 学号:06450210 姓名:万轩 实验二插值法

有限差分法实验报告

工程电磁场 实验报告 ——有限差分法

用超松弛迭代法求解 接地金属槽内电位的分布 一、实验要求 按对称场差分格式求解电位的分布 已知: 给定边值:如图1-7示 图1-7接地金属槽内半场域的网格 给定初值)()(.1j 40 100 1j p 1 2j i -= --= ??? 误范围差: 510-=ε 计算:迭代次数N ,j i ,?,将计算结果保存到文件中 二、实验思想 有限差分法 有限差分法(Finite Differential Method )是基于差分原理的一种数值计算法。其基本思想:将场域离散为许多小网格,应用差分原理,将求解连续函数?的泊松方程的问题转换为求解网格节点上? =?= V 100 ? 0 =?0 =?

的差分方程组的问题。 泊松方程的五点差分格式 )(4 1 4243210204321Fh Fh -+++=?=-+++?????????? 当场域中,0=ρ得到拉普拉斯方程的五点差分格式 )(4 1 044321004321??????????+++=?=-+++ 差分方程组的求解方法(1) 高斯——赛德尔迭代法 ][)(,)(,)(,)(,)(,2 k 1j i k j 1i 1k 1j i 1k j 1i 1k j i Fh 4 1 -+++=+++-+-+????? (1-14) 式中:??????=??????=,2,1,0,2,1,k j i , ? 迭代顺序可按先行后列,或先列后行进行。 ? 迭代过程遇到边界节点时,代入边界值或边界差分 格式,直到所有节点电位满足ε??<-+)(,)(,k j i l k j i 为止。 (2)超松弛迭代法 ][) (,)(,)(,)(,)(,)(,)(,k j i 2k 1j i k j 1i 1k 1j i 1k j 1i k j i 1k j i 4Fh 4 ?????α??--++++=+++-+-+ (1-15) 式中:α——加速收敛因子)21(<<α 可见:迭代收敛的速度与α有明显关系 三、程序源代码 #include #include #include double A[5][5]; void main(void) { double BJ[5][5];//数组B 用于比较电势 int s[100];//用于储存迭代次数 图1-4 高斯——赛德尔迭代法

数值分析实验报告

数值分析实验报告 姓名:周茹 学号: 912113850115 专业:数学与应用数学 指导老师:李建良

线性方程组的数值实验 一、课题名字:求解双对角线性方程组 二、问题描述 考虑一种特殊的对角线元素不为零的双对角线性方程组(以n=7为例) ?????????? ?????? ? ???? ?d a d a d a d a d a d a d 766 55 44 3 32 211??????????????????????x x x x x x x 7654321=?????????? ? ???????????b b b b b b b 7654321 写出一般的n (奇数)阶方程组程序(不要用消元法,因为不用它可以十分方便的解出这个方程组) 。 三、摘要 本文提出解三对角矩阵的一种十分简便的方法——追赶法,该算法适用于任意三对角方程组的求解。 四、引言 对于一般给定的d Ax =,我们可以用高斯消去法求解。但是高斯消去法过程复杂繁琐。对于特殊的三对角矩阵,如果A 是不可约的弱对角占优矩阵,可以将A 分解为UL ,再运用追赶法求解。

五、计算公式(数学模型) 对于形如????? ?? ????? ??? ?---b a c b a c b a c b n n n n n 111 2 2 2 11... ... ...的三对角矩阵UL A =,容易验证U 、L 具有如下形式: ??????? ????? ??? ?=u a u a u a u n n U ...... 3 3 22 1 , ?? ????? ? ?? ??????=1 (1) 1132 1l l l L 比较UL A =两边元素,可以得到 ? ?? ??-== = l a b u u c l b u i i i i i i 111 i=2, 3, ... ,n 考虑三对角线系数矩阵的线性方程组 f Ax = 这里()T n x x x x ... 2 1 = ,()T n f f f f ... 2 1 = 令y Lx =,则有 f Uy = 于是有 ()?????-== --u y a f y u f y i i i i i 1 1 11 1 * i=2, 3, ... ,n 再根据y Lx =可得到

数值计算实验报告

(此文档为word格式,下载后您可任意编辑修改!) 2012级6班###(学号)计算机数值方法 实验报告成绩册 姓名:宋元台 学号: 成绩:

数值计算方法与算法实验报告 学期: 2014 至 2015 第 1 学期 2014年 12月1日课程名称: 数值计算方法与算法专业:信息与计算科学班级 12级5班 实验编号: 1实验项目Neton插值多项式指导教师:孙峪怀 姓名:宋元台学号:实验成绩: 一、实验目的及要求 实验目的: 掌握Newton插值多项式的算法,理解Newton插值多项式构造过程中基函数的继承特点,掌握差商表的计算特点。 实验要求: 1. 给出Newton插值算法 2. 用C语言实现算法 二、实验内容 三、实验步骤(该部分不够填写.请填写附页)

1.算法分析: 下面用伪码描述Newton插值多项式的算法: Step1 输入插值节点数n,插值点序列{x(i),f(i)},i=1,2,……,n,要计算的插值点x. Step2 形成差商表 for i=0 to n for j=n to i f(j)=((f(j)-f(j-1)(x(j)-x(j-1-i)); Step3 置初始值temp=1,newton=f(0) Step4 for i=1 to n temp=(x-x(i-1))*temp*由temp(k)=(x-x(k-1))*temp(k-1)形成 (x-x(0).....(x-x(i-1)* Newton=newton+temp*f(i); Step5 输出f(x)的近似数值newton(x)=newton. 2.用C语言实现算法的程序代码 #includeMAX_N) { printf("the input n is larger than MAX_N,please redefine the MAX_N.\n"); return 1; } if(n<=0) { printf("please input a number between 1 and %d.\n",MAX_N); return 1; } printf("now input the (x_i,y_i)i=0,...%d\n",n); for(i=0;i<=n;i++) { printf("please input x(%d) y(%d)\n",i,i);

差分编译码实验报告

实验十三差分编译码实验 一、实验目的 掌握差分编码/译码原理 二、实验内容 1、学习差分编译码原理 2、用示波器观察差分编码结果和译码结果 三、基本原理 差分码是一种把符号‘0’和‘1’反映在相邻码元的相对变化上的波形。比如,若以相邻码元的电位改变表示符号‘1’,而以电位不改变表示符号‘0’,如图13-1所示。当然,上述规定也可以反过来。由图可见,这种码波形在形式上与单极性或双极性码波形相同,但它代表的信息符号与码元本身电位或极性无关,而仅与相邻码元的电位变化有关。差分波形也称相对码波形,而相应地称单极性或双极性波形为绝对码波形。差分码波形常在相位调制系统的码变换器中使用。 图13-1差分码波形 组成模块如下图所示: cclk d_out 端口说明: CCLK:编码时钟输入端 DIN:编码数据输入端 Diff-OUT:差分编码结果输出端 DCLK:译码时钟输入端

Diff-IN:差分译码数据输入端 DOUT:译码结果输出端 四、实验步骤 1、实验所用模块:数字编解码模块、数字时钟信号源模块。 实验连线: CCLK:从数字时钟信号源模块引入一高频时钟,如512K。 DIN:从数字时钟信号源模块引入一低频时钟,如16K。 DIFF-OUT与DIFF-IN短接。 DCLK与CCLK短接。 2、用示波器两探头同时观测DIN与DIFF-OUT端,分析差分编码规则。 3、用示波器两探头同时观测DIN与DOUT端,分析差分译码结果。 五、实验报告要求 设信息代码为1001101,码速率为128K,差分码的编码时钟为码速率的四倍,根据实验观察得到的规律,画出差分码波形。

数值分析实验报告1

实验一 误差分析 实验(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对()中19x 的系数作一个小的扰动。我们希望比较()和()根的差别,从而分析方程()的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b =

的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve = ))20:1((ve poly roots + 上述简单的Matlab 程序便得到()的全部根,程序中的“ess ”即是()中的ε。 实验要求: (1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。 如果扰动项的系数ε很小,我们自然感觉()和()的解应当相差很小。计算中你有什么出乎意料的发现表明有些解关于如此的扰动敏感性如何 (2)将方程()中的扰动项改成18x ε或其它形式,实验中又有怎样的现象 出现 (3)(选作部分)请从理论上分析产生这一问题的根源。注意我们可以将 方程()写成展开的形式, ) 3.1(0 ),(1920=+-= x x x p αα 同时将方程的解x 看成是系数α的函数,考察方程的某个解关于α的扰动是否敏感,与研究它关于α的导数的大小有何关系为什么你发现了什么现象,哪些根关于α的变化更敏感 思考题一:(上述实验的改进) 在上述实验中我们会发现用roots 函数求解多项式方程的精度不高,为此你可以考虑用符号函数solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。

(完整版)哈工大-数值分析上机实验报告

实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。 前言:(目的和意义) 掌握二分法与Newton法的基本原理和应用。 数学原理: 对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。 对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b)<0,且f(x)在[a,b]内仅有一个实根x*,取区间中点c,若,则c恰为其根,否则根据f(a)f(c)<0是否成立判断根在区间[a,c]和[c,b]中的哪一个,从而得出新区间,仍称为[a,b]。重复运行计算,直至满足精度为止。这就是二分法的计算思想。

Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式 产生逼近解x*的迭代数列{x k},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 其中r为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下 function y=f(x); y=-x*x-sin(x); 写成如上形式即可,下面给出主程序。 二分法源程序: clear %%%给定求解区间 b=1.5; a=0;

%%%误差 R=1; k=0;%迭代次数初值 while (R>5e-6) ; c=(a+b)/2; if f12(a)*f12(c)>0; a=c; else b=c; end R=b-a;%求出误差 k=k+1; end x=c%给出解 Newton法及改进的Newton法源程序:clear %%%% 输入函数 f=input('请输入需要求解函数>>','s') %%%求解f(x)的导数 df=diff(f);

差分方法实验报告

实验报告 课程名称:计算方法 院系:数学科学系 专业班级:数应1001 学号:1031110139 学生姓名:姚海保 指导教师:沈林 开课时间:2012至2013学年第一学期

一、学生撰写要求 按照实验课程培养方案的要求,每门实验课程中的每一个实验项目完成后,每位参加实验的学生均须在实验教师规定的时间内独立完成一份实验报告,不得抄袭,不得缺交。 学生撰写实验报告时应严格按照本实验报告规定的内容和要求填写。字迹工整,文字简练,数据齐全,图表规范,计算正确,分析充分、具体、定量。 二、教师评阅与装订要求 1.实验报告批改要深入细致,批改过程中要发现和纠正学生实验报告中的问题,给出评语和实验报告成绩,签名并注明批改日期。实验报告批改完成后,应采用适当的形式将学生实验报告中存在的问题及时反馈给学生。 2.实验报告成绩用百分制评定,并给出成绩评定的依据或评分标准(附于实验报告成绩登记表后)。对迟交实验报告的学生要酌情扣分,对缺交和抄袭实验报告的学生应及时批评教育,并对该次实验报告的分数以零分处理。对单独设课的实验课程,如学生抄袭或缺交实验报告达该课程全学期实验报告总次数三分之一以上,不得同意其参加本课程的考核。 3.各实验项目的实验报告成绩登记在实验报告成绩登记表中。本学期实验项目全部完成后,给定实验报告综合成绩。 4.实验报告综合成绩应按课程教学大纲规定比例(一般为10-15%)计入实验课总评成绩;实验总评成绩原则上应包括考勤、实验报告、考核(操作、理论)等多方面成绩; 5.实验教师每学期负责对拟存档的学生实验报告按课程、学生收齐并装订,按如下顺序装订成册:实验报告封面、实验报告成绩登记表、实验报告成绩评定依据、实验报告(按教学进度表规定的实验项目顺序排序)。装订时统一靠左侧按“两钉三等分”原则装订。

数值分析实验报告模板

数值分析实验报告模板 篇一:数值分析实验报告(一)(完整) 数值分析实验报告 1 2 3 4 5 篇二:数值分析实验报告 实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。利用二分法求解给定非线性方程的根,在给定的范围内,假设f(x,y)在[a,b]上连续,f(a)xf(b) 直接影响迭代的次数甚至迭代的收敛与发散。即若x0 偏离所求根较远,Newton法可能发散的结论。并且本实验中还利用利用改进的Newton法求解同样的方程,且将结果与Newton法的结果比较分析。 前言:(目的和意义) 掌握二分法与Newton法的基本原理和应用。掌握二分法的原理,验证二分法,在选对有根区间的前提下,必是收

敛,但精度不够。熟悉Matlab语言编程,学习编程要点。体会Newton使用时的优点,和局部收敛性,而在初值选取不当时,会发散。 数学原理: 对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。 对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b) Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式xk?1?xk?f(xk) f'(xk) 产生逼近解x*的迭代数列{xk},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 xk?1?xk?rf(xk) 'f(xk) 其中r为要求的方程的根的重数,这就是改进的Newton 法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下 function y=f(x);

数值分析实验报告

实验一、误差分析 一、实验目的 1.通过上机编程,复习巩固以前所学程序设计语言及上机操作指令; 2.通过上机计算,了解误差、绝对误差、误差界、相对误差界的有关概念; 3.通过上机计算,了解舍入误差所引起的数值不稳定性。 二.实验原理 误差问题是数值分析的基础,又是数值分析中一个困难的课题。在实际计算中,如果选用了不同的算法,由于舍入误差的影响,将会得到截然不同的结果。因此,选取算法时注重分析舍入误差的影响,在实际计算中是十分重要的。同时,由于在数值求解过程中用有限的过程代替无限的过程会产生截断误差,因此算法的好坏会影响到数值结果的精度。 三.实验内容 对20,,2,1,0 =n ,计算定积分 ?+=10 5dx x x y n n . 算法1:利用递推公式 151--=n n y n y , 20,,2,1 =n , 取 ?≈-=+=1 00182322.05ln 6ln 51dx x y . 算法2:利用递推公式 n n y n y 51511-= - 1,,19,20 =n . 注意到 ???=≤+≤=10 10202010201051515611261dx x dx x x dx x , 取 008730.0)12611051(20120≈+≈y .: 四.实验程序及运行结果 程序一: t=log(6)-log(5);

n=1; y(1)=t; for k=2:1:20 y(k)=1/k-5*y(k-1); n=n+1; end y y =0.0884 y =0.0581 y =0.0431 y =0.0346 y =0.0271 y =0.0313 y =-0.0134 y =0.1920 y =-0.8487 y =4.3436 y =-21.6268 y =108.2176 y =-541.0110 y =2.7051e+003 y =-1.3526e+004 y =6.7628e+004 y =-3.3814e+005 y =1.6907e+006 y =-8.4535e+006 y =4.2267e+007 程序2: y=zeros(20,1); n=1; y1=(1/105+1/126)/2;y(20)=y1; for k=20:-1:2 y(k-1)=1/(5*k)-(1/5)*y(k); n=n+1; end 运行结果:y = 0.0884 0.0580 0.0431 0.0343 0.0285 0.0212 0.0188 0.0169

数值分析2016上机实验报告

序言 数值分析是计算数学的范畴,有时也称它为计算数学、计算方法、数值方法等,其研究对象是各种数学问题的数值方法的设计、分析及其有关的数学理论和具体实现的一门学科,它是一个数学分支。是科学与工程计算(科学计算)的理论支持。许多科学与工程实际问题(核武器的研制、导弹的发射、气象预报)的解决都离不开科学计算。目前,试验、理论、计算已成为人类进行科学活动的三大方法。 数值分析是计算数学的一个主要部分,计算数学是数学科学的一个分支,它研究用计算机求解各种数学问题的数值计算方法及其理论与软件实现。现在面向数值分析问题的计算机软件有:C,C++,MATLAB,Python,Fortran等。 MATLAB是matrix laboratory的英文缩写,它是由美国Mathwork公司于1967年推出的适合用于不同规格计算机和各种操纵系统的数学软件包,现已发展成为一种功能强大的计算机语言,特别适合用于科学和工程计算。目前,MATLAB应用非常广泛,主要用于算法开发、数据可视化、数值计算和数据分析等,除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。 本实验报告使用了MATLAB软件。对不动点迭代,函数逼近(lagrange插值,三次样条插值,最小二乘拟合),追赶法求解矩阵的解,4RungeKutta方法求解,欧拉法及改进欧拉法等算法做了简单的计算模拟实践。并比较了各种算法的优劣性,得到了对数值分析这们学科良好的理解,对以后的科研数值分析能力有了极大的提高。

目录 序言 (1) 问题一非线性方程数值解法 (3) 1.1 计算题目 (3) 1.2 迭代法分析 (3) 1.3计算结果分析及结论 (4) 问题二追赶法解三对角矩阵 (5) 2.1 问题 (5) 2.2 问题分析(追赶法) (6) 2.3 计算结果 (7) 问题三函数拟合 (7) 3.1 计算题目 (7) 3.2 题目分析 (7) 3.3 结果比较 (12) 问题四欧拉法解微分方程 (14) 4.1 计算题目 (14) 4.2.1 方程的准确解 (14) 4.2.2 Euler方法求解 (14) 4.2.3改进欧拉方法 (16) 问题五四阶龙格-库塔计算常微分方程初值问题 (17) 5.1 计算题目 (17) 5.2 四阶龙格-库塔方法分析 (18) 5.3 程序流程图 (18) 5.4 标准四阶Runge-Kutta法Matlab实现 (19) 5.5 计算结果及比较 (20) 问题六舍入误差观察 (22) 6.1 计算题目 (22) 6.2 计算结果 (22) 6.3 结论 (23) 7 总结 (24) 附录

一维波动方程的有限差分法

学生实验报告实验课程名称偏微分方程数值解 开课实验室数统学院 学院数统年级2013 专业班信计02班 学生姓名______________ 学号 开课时间2015 至2016 学年第 2 学期

数学与统计学院制 开课学院、实验室:数统学院实验时间:2016年6月20日

1、三层显格式建立 由于题中h 0.1, 0.1h,x 0,1 ,t 0,2,取N 10, M 200,故令网比r 0.1,h X j j h, j 0,1,2,L 10,t k k ,k O,1L ,200 ,在内网个点处,利用二阶中心差商得到如下格式: k 1 k U J 2U J 2- k 1 U j k k U j 1 2U j h2 k U j 1 o h2 略去误差项得到: k 1 U j 其中j 1,2丄9,k 对于初始条件 2 k r U J1 1,2,L ,199,局部截断误差为 U x,0 sin U J k U j k r U j 2 o k 1 U J h2。 (3) 对于初始条件-u x,0 t x,建立差分格式为: sin x j sin Jh , J 利用中心差商,建立差分格式为: 0,1,2,L 10 (4) 对于边界条件将差分格式延拓使综上(3 )、 (4 )、 k 1 u j 其中r山o.1 1 U J 2 1 U j 0,即U1二U j1, J 0,1,2,L 10 (5) 0,t 0,2 ,建立差分格式为: U N 0,k 0,1,L ,200 k 0为内点,代入(3)得到的式子再与(5)联立消去 1 1 2 0 ’ 2 0 1 5 r U, 1 1 r U, r J 2 J J 2 (7 )得到三层显格式如下: U 0,t U 1,t k U0 (6 ) 、 2 k r U j 1 2 1 r2k 2 k U J r U J 1 k 1? U j , J U j (6) 1后整理得到: U j 1 (7) (局部截断误差为 1,2,L 9,k 1,2,L ,199 h2) 1 U j U J sin 1 2 0 2r U J 1 k U o X j k U N sin 2 0 r U j 0,k 0,1,2,L 10 Jh ,J 1 2r2u01, J 1,2,L 9 0,1L ,200 (8) 四?实验环境(所用软件、硬件等)及实验数据文件Matlab

数值分析实验报告资料

机电工程学院 机械工程 陈星星 6720150109 《数值分析》课程设计实验报告 实验一 函数插值方法 一、问题提出 对于给定的一元函数)(x f y =的n+1个节点值(),0,1,,j j y f x j n ==。试用Lagrange 公式求其插值多项式或分段二次Lagrange 插值多项式。 数据如下: (1 求五次Lagrange 多项式5L ()x ,计算(0.596)f ,(0.99)f 的值。(提示:结果为(0.596)0.625732f ≈, (0.99) 1.05423f ≈) 实验步骤: 第一步:先在matlab 中定义lagran 的M 文件为拉格朗日函数 代码为: function[c,l]=lagran(x,y) w=length(x); n=w-1; l=zeros(w,w); for k=1:n+1 v=1; for j=1:n+1 if(k~=j) v=conv(v,poly(x(j)))/(x(k)-x(j)); end end l(k,:)=v; end c=y*l; end

第二步:然后在matlab命令窗口输入: >>>> x=[0.4 0.55 0.65 0.80,0.95 1.05];y=[0.41075 0.57815 0.69675 0.90 1.00 1.25382]; >>p = lagran(x,y) 回车得到: P = 121.6264 -422.7503 572.5667 -377.2549 121.9718 -15.0845 由此得出所求拉格朗日多项式为 p(x)=121.6264x5-422.7503x4+572.5667x3-377.2549x2+121.9718x-15.0845 第三步:在编辑窗口输入如下命令: >> x=[0.4 0.55 0.65 0.80,0.95 1.05]; >> y=121.6264*x.^5-422.7503*x.^4+572.5667*x.^3-377.2549*x.^2+121.9718 *x-15.0845; >> plot(x,y) 命令执行后得到如下图所示图形,然后 >> x=0.596; >> y=121.6264*x.^5-422.7503*x.^4+572.5667*x.^3-377.2549*x.^2+121.9718 *x-15.084 y =0.6257 得到f(0.596)=0.6257 同理得到f(0.99)=1.0542

(完整word版)差分放大器设计的实验报告

设计课题 设计一个具有恒流偏置的单端输入-单端输出差分放大器。 学校:延安大学

一: 已知条件 正负电源电压V V V V EE cc 12,12-=-+=+;负载Ω=k R L 20;输入差 模信号mV V id 20=。 二:性能指标要求 差模输入电阻Ω>k R id 10;差模电压增益15≥vd A ;共模抑制 比dB K CMR 50>。 三:方案设计及论证 方案一:

方案二

方案论证: 在放大电路中,任何元件参数的变化,都将产生输出电压的漂移,由温度变化所引起的半导体参数的变化是产生零点漂移的主要原因。采用特性相同的管子使它们产生的温漂相互抵消,故构成差分放大电路。差分放大电路的基本性能是放大差模信号,抑制共模信号好,采用恒流源代替稳流电阻,从而尽可能的提高共模抑制比。 论证方案一:用电阻R6来抑制温漂 ?优点:R6 越大抑制温漂的能力越强; ?缺点:<1>在集成电路中难以制作大电阻; <2> R6的增大也会导致Vee的增大(实际中Vee不

可能随意变化) 论证方案二 优点:(1)引入恒流源来代替R6,理想的恒流源内阻趋于无穷,直流压降不会太高,符合实际情况; (2)电路中恒流源部分增加了两个电位器,其中47R的用来调整电路对称性,10K的用来控制Ic的大小,从而调节静态工作点。 通过分析最终选择方案二。 四:实验工作原理及元器件参数确定 ?静态分析:当输入信号为0时, ?I EQ≈(Vee-U BEQ)/2Re ?I BQ= I EQ /(1+β) ?U CEQ=U CQ-U EQ≈Vcc-I CQ Rc+U BEQ 动态分析 ?已知:R1=R4,R2=R3

数值分析实验报告总结

数值分析实验报告总结 随着电子计算机的普及与发展,科学计算已成为现代科 学的重要组成部分,因而数值计算方法的内容也愈来愈广泛和丰富。通过本学期的学习,主要掌握了一些数值方法的基本原理、具体算法,并通过编程在计算机上来实现这些算法。 算法算法是指由基本算术运算及运算顺序的规定构成的完 整的解题步骤。算法可以使用框图、算法语言、数学语言、自然语言来进行描述。具有的特征:正确性、有穷性、适用范围广、运算工作量少、使用资源少、逻辑结构简单、便于实现、计算结果可靠。 误差 计算机的计算结果通常是近似的,因此算法必有误差, 并且应能估计误差。误差是指近似值与真正值之差。绝对误差是指近似值与真正值之差或差的绝对值;相对误差:是指近似值与真正值之比或比的绝对值。误差来源见表 第三章泛函分析泛函分析概要 泛函分析是研究“函数的函数”、函数空间和它们之间 变换的一门较新的数学分支,隶属分析数学。它以各种学科

如果 a 是相容范数,且任何满足 为具体背景,在集合的基础上,把客观世界中的研究对象抽 范数 范数,是具有“长度”概念的函数。在线性代数、泛函 分析及相关的数学领域,泛函是一个函数,其为矢量空间内 的所有矢量赋予非零的正长度或大小。这里以 Cn 空间为例, Rn 空间类似。最常用的范数就是 P-范数。那么 当P 取1, 2 ,s 的时候分别是以下几种最简单的情形: 其中2-范数就是通常意义下的距离。 对于这些范数有以下不等式: 1 < n1/2 另外,若p 和q 是赫德尔共轭指标,即 1/p+1/q=1 么有赫德尔不等式: II = ||xH*y| 当p=q=2时就是柯西-许瓦兹不等式 般来讲矩阵范数除了正定性,齐次性和三角不等式之 矩阵范数通常也称为相容范数。 象为元素和空间。女口:距离空间,赋范线性空间, 内积空间。 1-范数: 1= x1 + x2 +?+ xn 2-范数: x 2=1/2 8 -范数: 8 =max oo ,那 外,还规定其必须满足相容性: 所以

数值分析实验报告1

实验一 误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对(1.1)中19x 的系数作一个小的扰动。我们希望比较(1.1)和(1.2)根的差别,从而分析方程(1.1)的解对扰动的敏感性。 实验容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b = 的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve =

数值分析实验报告

学生实验报告实验课程名称 开课实验室 学院年级专业班 学生姓名学号 开课时间至学年学期

if(A(m,k)~=0) if(m~=k) A([k m],:)=A([m k],:); %换行 end A(k+1:n, k:c)=A(k+1:n, k:c)-(A(k+1:n,k)/ A(k,k))*A(k, k:c); %消去end end x=zeros(length(b),1); %回代求解 x(n)=A(n,c)/A(n,n); for k=n-1:-1:1 x(k)=(A(k,c)-A(k,k+1:n)*x(k+1:n))/A(k,k); end y=x; format short;%设置为默认格式显示,显示5位 (2)建立MATLAB界面 利用MA TLAB的GUI建立如下界面求解线性方程组: 详见程序。 五、计算实例、数据、结果、分析 下面我们对以上的结果进行测试,求解:

? ? ? ? ? ? ? ? ? ? ? ? - = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - - - - - - 7 2 5 10 13 9 14 4 4 3 2 1 13 12 4 3 3 10 2 4 3 2 1 x x x x 输入数据后点击和,得到如下结果: 更改以上数据进行测试,求解如下方程组: 1 2 3 4 43211 34321 23431 12341 x x x x ?? ???? ?? ???? ?? ???? = ?? ???? - ?? ???? - ???? ?? 得到如下结果:

数值分析实验报告

实验五 解线性方程组的直接方法 实验5.1 (主元的选取与算法的稳定性) 问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss 消去法作为数值算法的稳定性呢?Gauss 消去法从理论算法到数值算法,其关键是主元的选择。主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。 实验内容:考虑线性方程组 编制一个能自动选取主元,又能手动选取主元的求解线性方程组的Gauss 消去过程。 实验要求: (1)取矩阵?? ? ?? ?? ?????????=????????????????=1415157,6816816816 b A ,则方程有解T x )1,,1,1(* =。取n=10计算矩阵的 条件数。让程序自动选取主元,结果如何? (2)现选择程序中手动选取主元的功能。每步消去过程总选取按模最小或按模尽可能小的元素作为主元,观察并记录计算结果。若每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。 (3)取矩阵阶数n=20或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。 (4)选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。重复上述实验,观察记录并分析实验结果。 思考题一:(Vadermonde 矩阵)设 ?? ??????????????????????=? ? ? ?????????????=∑∑∑∑====n i i n n i i n i i n i i n n n n n n n x x x x b x x x x x x x x x x x x A 0020 10022222121102001111 ,, 其中,n k k x k ,,1,0,1.01 =+=, (1)对n=2,5,8,计算A 的条件数;随n 增大,矩阵性态如何变化? (2)对n=5,解方程组Ax=b ;设A 的最后一个元素有扰动10-4,再求解Ax=b (3)计算(2)扰动相对误差与解的相对偏差,分析它们与条件数的关系。 (4)你能由此解释为什么不用插值函数存在定理直接求插值函数而要用拉格朗日或牛顿插值法的原因吗? 相关MATLAB 函数提示: zeros(m,n) 生成m 行,n 列的零矩阵 ones(m,n) 生成m 行,n 列的元素全为1的矩阵 eye(n) 生成n 阶单位矩阵 rand(m,n) 生成m 行,n 列(0,1)上均匀分布的随机矩阵 diag(x) 返回由向量x 的元素构成的对角矩阵 tril(A) 提取矩阵A 的下三角部分生成下三角矩阵

相关主题
文本预览
相关文档 最新文档