文档库 最新最全的文档下载
当前位置:文档库 › 数值代数实验报告(1)绝对经典

数值代数实验报告(1)绝对经典

数值代数实验报告(1)绝对经典
数值代数实验报告(1)绝对经典

数值代数实验报告Numerical Linear Algebra And Its

Applications

学生所在学院:理学院

学生所在班级:计算数学10-1

学生姓名:戈东潮

指导教师:于春肖

教务处

2012年12月

实验一

实验名称: Poisson 方程边值问题的五点差分格式 实验时间: 2012年12月13日 星期四 实验成绩: 一、实验目的:

通过上机利用Matlab 数学软件实现Poisson 方程的边值问题的五点差分格式的线性代数方程组来认真解读Poisson 方程边值问题的具体思想与方法,使我们掌握得更加深刻,并且做到学习与使用并存,增加学习的实际动手性,不再让学习局限于书本和纸上,而是利用计算机学习来增加我们的学习兴趣。

二、实验内容:

利用Poisson 方程来解下列问题:

??

????∈=∈=??+??-ΩΩ),(,),(),(,sin sin )(y x y x u y x y x y u x u 0222222πππ 其中}{的边界是ΩΩ?<<∈Ω,1,0),(y x y x 。 边值问题的解释是y x y x u ππsin sin ),(=

(1)用例题中模型问题的方法取N=5,10(也可以取N=20)列出五点差分格式的线性代数方程组

三、实验过程:

系数矩阵A 的Matlab 实现函数如下:

%文件名:poisson.m function T=poisson(N) for i=1:N a(i)=4; end b=diag(a); for j=1:N-1

b(j,j+1)=-1;

end

for j=2:N

b(j,j-1)=-1;

end

for i=1:N

I(i)=-1;

end

I=diag(I);

for i=1:N:N*N

for j=1:N

T(i+j-1,i:i+N-1)=b(j,:);

end

end

for i=1:N:N*N-N

for j=1:N

T(i+j-1,i+N:i+N-1+N)=I(j,:);

end

end

for i=1+N:N:N*N

for j=1:N

T(i+j-1,i-N:i-1)=I(j,:);

end

end

求解常数项b的Matlab实现函数如下:%函数名:constant.m

function b=constant(N)

n=N+1;

h=1/n;

i=1;

for y=1/n:1/n:N/n

for x=1/n:1/n:N/n

f(i)=2*pi*pi*sin(pi*x)*sin(pi*y);

i=i+1;

end

end

b=h*h*f;

b=b';

四、实验结果(总结/方案)

在Matlab运行窗口输入

>>A=poisson(5) Enter

输出结果

A =

Columns 1 through 11

4 -1 0 0 0 -1 0 0 0 0 0

-1 4 -1 0 0 0 -1 0 0 0 0

0 -1 4 -1 0 0 0 -1 0 0 0

0 0 -1 4 -1 0 0 0 -1 0 0

0 0 0 -1 4 0 0 0 0 -1 0

-1 0 0 0 0 4 -1 0 0 0 -1

0 -1 0 0 0 -1 4 -1 0 0 0

0 0 -1 0 0 0 -1 4 -1 0 0

0 0 0 -1 0 0 0 -1 4 -1 0

0 0 0 0 -1 0 0 0 -1 4 0

0 0 0 0 0 -1 0 0 0 0 4

0 0 0 0 0 0 -1 0 0 0 -1

0 0 0 0 0 0 0 -1 0 0 0

0 0 0 0 0 0 0 0 -1 0 0

0 0 0 0 0 0 0 0 0 -1 0

0 0 0 0 0 0 0 0 0 0 -1

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 Columns 12 through 22

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0

0 -1 0 0 0 0 0 0 0 0 0

0 0 -1 0 0 0 0 0 0 0 0

0 0 0 -1 0 0 0 0 0 0 0 -1 0 0 0 -1 0 0 0 0 0 0

4 -1 0 0 0 -1 0 0 0 0 0 -1 4 -1 0 0 0 -1 0 0 0 0

0 -1 4 -1 0 0 0 -1 0 0 0

0 0 -1 4 0 0 0 0 -1 0 0

0 0 0 0 4 -1 0 0 0 -1 0 -1 0 0 0 -1 4 -1 0 0 0 -1

0 -1 0 0 0 -1 4 -1 0 0 0

0 0 -1 0 0 0 -1 4 -1 0 0

0 0 0 -1 0 0 0 -1 4 0 0

0 0 0 0 -1 0 0 0 0 4 -1

0 0 0 0 0 -1 0 0 0 -1 4

0 0 0 0 0 0 -1 0 0 0 -1

0 0 0 0 0 0 0 -1 0 0 0

0 0 0 0 0 0 0 0 -1 0 0 Columns 23 through 25

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 -1 0 0 0 -1 0 0 0 -1 0 0 4 -1 0 -1 4 -1

0 -1 4 在运行窗口输入 >>b=constant(5) Enter 常数项的输出结果

b =[ 0.1371 0.2374 0.2742 0.2374 0.1371 0.2374 0.4112 0.4749 0.4112 0.2374 0.2742 0.4749 0.5483 0.4749 0.2742 0.2374 0.4112 0.4749 0.4112 0.2374 0.1371 0.2374 0.2742 0.2374 0.1371]T

所以A*u=b 的五点差分格式为

j i j i j i j i j i j i f h u u u u u ,,,,,,2

11114=-----+-+ (i,j=1,2……)

实验二

实验名称: 用Jacobi 迭代法和SOR 迭代法求解方程组 实验时间: 2012年12月13日 星期四 实验成绩: 一、实验目的:

通过上机利用Matlab 数学软件采用Jacobi 迭代法和SOR 迭代法来求解方程组,求解过程中了解两种迭代方法的基本思想与迭代过程,并分析两种迭代方法的

收敛性和实用用以及他们的异同点。并且熟悉Matlab 软件的实用方法,并且做到学习与使用并存,增加学习的实际动手性,不再让学习局限于书本和纸上,而是利用计算机学习来增加我们的学习兴趣。

二、实验背景:

考虑线性方程组Ax =b 时,一般当A 为低阶稠密矩阵时,用主元消去法解此方程组是有效方法。但是,对于由工程技术中产生的大型稀疏矩阵方程组(A 的阶数很高,但零元素较多,例如求某些偏微分方程数值解所产生的线性方程组),利用迭代法求解此方程组就是合适的,在计算机内存和运算两方面,迭代法通常都可利用A 中有大量零元素的特点。雅克比迭代法就是众多迭代法中比较早且较简单的一种,其命名也是为纪念普鲁士著名数学家雅可比。

三、实验内容:

??

???Ω?∈=Ω∈=??+??-),(,0),(),(,sin sin 2)(22222y x y x u y x y x y u x u πππ 其中}{的边界是ΩΩ?<<∈Ω,1,0),(y x y x 。 边值问题的解释是y x y x u ππsin sin ),(= (1)取初始向量)

0(u

各分量均为1,分别用Jacobi 迭代法和SOR 迭代法

(w=1,1.25,1.5,1.75)解方程组,迭代至时结束,s u

u k k 6

)

1()

(10

-∞

-<-给

出各种情形的迭代次数,和∞

-u

u *

其中*u 是迭代至最后的结果,u 是解函数

u (x ,y )在()i i y x ,上的值作为分量的向量,对数值结果进行分析(G-S )

四、实验过程:

Matlab 主函数如下: %主函数start.m %start.m function start(N) clc w=N*N; i=1;

x0=ones(w,1);

disp('方程的系数矩阵为:')

T=poisson(N)

disp('常数项为:')

b=constant(N)

disp('雅克比迭代后的解和迭代次数为:')

[x1 k1]=jacobi(T,b,x0)

for w=1:0.25:1.75

disp('超松弛迭代的解和迭代次数为:')

[x2 k2(i)]=ESOR(T,b,x0,w)

i=i+1;

end

disp('精确解为')

x=exact(N)

disp('雅克比迭代后的解与准确解的误差为')

w=max(abs(x1-x))

for t=1:3

w(t)=max(abs(x1-x))

end

disp('超松弛迭代后的解与准确解的误差分别为') w

表示矩阵A的Matlab函数如下:

%生成N阶的系数矩阵poisson.m

function T=poisson(N)

for i=1:N

a(i)=4;

end

b=diag(a);

for j=1:N-1

b(j,j+1)=-1;

end

for j=2:N

b(j,j-1)=-1;

end

for i=1:N

I(i)=-1;

end

I=diag(I);

for i=1:N:N*N

for j=1:N

T(i+j-1,i:i+N-1)=b(j,:);

end

end

for i=1:N:N*N-N

for j=1:N

T(i+j-1,i+N:i+N-1+N)=I(j,:);

end

end

for i=1+N:N:N*N

for j=1:N

T(i+j-1,i-N:i-1)=I(j,:);

end

end

●常数b的Matlab实现函数如下:

%方程常数项实现函数constant.m

function b=constant(N)

n=N+1;

h=1/n;

i=1;

for y=1/n:1/n:N/n

for x=1/n:1/n:N/n

f(i)=2*pi*pi*sin(pi*x)*sin(pi*y);

i=i+1;

end

end

b=h*h*f;

b=b';

●超松弛迭代法(SOR)的Matlab实现函数如下:

%函数名:ESOR.m

function [x k]=ESOR(A,b,x0,omiga,eps)

%超松弛(SOR,Successive Over-Relaxation)迭代法求解线性方程组Ax=b %[x k]=ESOR(A,b,x0,eps)

%x:解向量,列向量

%k:迭代次数

%A: 系数矩阵

%b:列向量

%x0:迭代初始值,列向量

%omiga:松弛因子,可缺省,缺省值为1,即为GS迭代法

%eps:误差限,可缺省,缺省值为0.5e-6

%应用举例:

%A=[4 3 0;3 4 -1;0 -1 4];b=[24;30;-24];x0=[1;1;1];omiga=1.25; %[x k]=ESOR(A,b,x0,omiga,0.5e-6)

%x=ESOR(A,b,x0)

if nargin==4

eps=0.5e-6;

end

if nargin==3

omiga=1;

eps=0.5e-6;

end

%检查输入参数

n=length(b);

if size(A,1) ~= n || n ~= length(x0)

disp('输入参数有误!');

x=' ';

k=' ';

return;

end

%迭代求解

k=0;

x=zeros(n,1);

while 1

k=k+1;

for i=1:n

z=0;

for j=1:i-1

z=z+A(i,j)*x(j);

end

for j=i+1:n

z=z+A(i,j)*x0(j);

end

x(i)=(1-omiga)*x0(i)+omiga*(b(i)-z)/A(i,i);

end

if norm(x-x0)<=eps || k==30

break;

end

x0=x;

end

if k==50

disp('迭代次数太多!')

x=' ';

end

return;

●Jacobi迭代法的Matlab实现函数如下:

%函数名:jacobi.m

function [x,n]=jacobi(A,b,x0,eps,varargin)

if nargin==3

eps=1.0e-6;

M=200;

elseif nargin<3

error

return

elseif nargin==5

M=varargin{1};

end

D=diag(diag(A));

L=-tril(A,-1);

U=-triu(A,1);

B=D\(L+U);

f=D\b;

x=B*x0+f;

n=1;

while norm(x-x0)>=eps

x0=x;

x=B*x0+f;

n=n+1;

if(n>=M)

disp('warming:迭代次数太多,可能不收敛!');

return

end

end

●准确值matlab实现函数

%函数名:exect.m

function b=exact(N)

n=N+1;

h=1/n;

i=1;

for y=1/n:1/n:N/n

for x=1/n:1/n:N/n

f(i)=sin(pi*x)*sin(pi*y);

i=i+1;

end

end

b=f;

b=b';

五、实验结果(总结/方案)

1、在运行窗口输入

>>start(5) Enter

(1)Jacobi迭代后的输出结果

x1 =[ 0.2558 0.4430 0.5116 0.4430 0.2558 0.4430 0.7674 0.8861 0.7674 0.4430 0.5116 0.8861 1.0232 0.8861 0.5116 0.4430 0.7674 0.8861 0.7674 0.4430 0.2558 0.4430 0.5116 0.4430 0.2558]T

k1 =87

(2)超松弛迭代法(SOR)的输出结果

ω=1 时

x2 =[0.2558 0.4431 0.5117 0.4431 0.2558 0.4431 0.7675 0.8862 0.7675 0.4431 0.5117 0.8862 1.0233 0.8862 0.5116 0.4431 0.7675 0.8862 0.7674 0.4431 0.2558 0.4431 0.5116 0.4431 0.2558]T

k2 = 30

ω=1.25时

x2 =[0.2558 0.4430 0.5116 0.4430 0.2558 0.4430 0.7674 0.8861 0.7674 0.4430 0.5116 0.8861 1.0232 0.8861 0.5116 0.4430 0.7674 0.8861 0.7674 0.4430 0.2558 0.4430 0.5116 0.4430 0.2558]T

k2 = 28

ω=1.5时

x2 =[0.2558 0.4430 0.5116 0.4430 0.2558 0.4430 0.7674 0.8861 0.7674 0.4430 0.5116 0.8861 1.0232 0.8861 0.5116 0.4430 0.7674 0.8861 0.7674 0.4430 0.2558 0.4430 0.5116 0.4430 0.2558]T

k2 = 25

ω=1.75时

x2 =[0.2557 0.4430 0.5116 0.4429 0.2559 0.4430 0.7673 0.8860 0.7674 0.4430 0.5116 0.8860 1.0232 0.8860 0.5116 0.4429 0.7674 0.8860 0.7673 0.4430 0.2559 0.4430 0.5116 0.4430 0.2558]T

k2 = 30

(3)误差计算

雅克比迭代后的解与准确解的误差为

w = 0.0232

超松弛迭代后的解与准确解的误差分别为

w = 0.0232 0.0232 0.0232

1、在运行窗口输入

>>start(10) Enter

(1)Jacobi迭代后的输出结果

x1 = [0.0799 0.1534 0.2144 0.2581 0.2808 0.2808 0.2581 0.2144 0.1534 0.0799 0.1534 0.2943 0.4114 0.4952 0.5389 0.5389 0.4952 0.4114 0.2943 0.1534 0.2144 0.4114 0.5751 0.6923 0.7533 0.7533 0.6923 0.5751 0.4114 0.2144 0.2581 0.4952 0.6923 0.8332 0.9067 0.9067 0.8332 0.6923 0.4952 0.2581 0.2808

0.5389 0.7533 0.9067 0.9866 0.9866 0.9067 0.7533 0.5389 0.2808 0.2808 0.5389 0.7533 0.9067 0.9866 0.9866 0.9067 0.7533 0.5389 0.2808 0.2581 0.4952 0.6923 0.8332 0.9067 0.9067 0.8332 0.6923 0.4952 0.2581 0.2144 0.4114 0.5751 0.6923 0.7533 0.7533 0.6923 0.5751 0.4114 0.2144 0.1534 0.2943 0.4114 0.4952 0.5389 0.5389 0.4952 0.4114 0.2943 0.1534 0.0799 0.1534 0.2144 0.2581 0.2808 0.2808 0.2581 0.2144 0.1534 0.0799]T

k1 = 200

(2)超松弛迭代法(SOR)的输出结果

ω=1 时

x2 =[ 0.0855 0.1638 0.2286 0.2746 0.2983 0.2978 0.2732 0.2265 0.1617 0.0841 0.1638 0.3137 0.4377 0.5259 0.5713 0.5703 0.5231 0.4338 0.3098 0.1611 0.2286 0.4377 0.6107 0.7337 0.7970 0.7956 0.7299 0.6053 0.4322 0.2248 0.2746 0.5259 0.7337 0.8815 0.9576 0.9559 0.8769 0.7273 0.5194 0.2702 0.2983 0.5713 0.7970 0.9576 1.0402 1.0384 0.9526 0.7901

0.5642 0.2935 0.2978 0.5703 0.7956 0.9559 1.0384

1.0366 0.9510 0.7888 0.5633 0.2930 0.2732 0.5231 0.7299 0.8769 0.9526 0.9510 0.8725 0.7237 0.5168 0.2689 0.2265 0.4338 0.6053 0.7273 0.7901 0.7888 0.7237 0.6003 0.4287 0.2230 0.1617 0.3098 0.4322 0.5194 0.5642 0.5633 0.5168 0.4287 0.3062 0.1593 0.0841 0.1611 0.2248 0.2702 0.2935 0.2930 0.2689 0.2230 0.1593 0.0829]T

ω=1.25时

x2=[ 0.0855 0.1638 0.2286 0.2746 0.2983 0.2978 0.2732 0.2265 0.1617 0.0841 0.1638 0.3137 0.4377 0.5259 0.5713 0.5703 0.5231 0.4338 0.3098 0.1611 0.2286 0.4377 0.6107 0.7337 0.7970 0.7956 0.7299 0.6053 0.4322 0.2248 0.2746 0.5259 0.7337 0.8815 0.9576 0.9559 0.8769 0.7273 0.5194 0.2702 0.2983 0.5713 0.7970 0.9576 1.0402 1.0384 0.9526 0.7901 0.5642 0.2935 0.2978 0.5703 0.7956 0.9559 1.0384

1.0366 0.9510 0.7888 0.5633 0.2930 0.2732 0.5231 0.7299 0.8769 0.9526 0.9510 0.8725 0.7237 0.5168 0.2689 0.2265 0.4338 0.6053 0.7273 0.7901 0.7888 0.7237 0.6003 0.4287 0.2230 0.1617 0.3098 0.4322 0.5194 0.5642 0.5633 0.5168 0.4287 0.3062 0.1593 0.0841 0.1611 0.2248 0.2702 0.2935 0.2930 0.2689 0.2230 0.1593 0.0829]T

k2 = 30

ω=1.5时

x2=[0.0814 0.1560 0.2178 0.2619 0.2847 0.2844 0.2611 0.2168 0.1550 0.0807 0.1560 0.2990 0.4175 0.5020 0.5457 0.5453 0.5007 0.4157 0.2971 0.1547 0.2178 0.4175 0.5830 0.7011 0.7622 0.7616 0.6994 0.5806 0.4151 0.2162 0.2619 0.5020 0.7011 0.8431 0.9167 0.9160 0.8412 0.6984 0.4993 0.2600 0.2847 0.5457 0.7622 0.9167 0.9967 0.9960 0.9147 0.7595 0.5430 0.2828 0.2844 0.5453 0.7616 0.9160 0.9960 0.9954 0.9142 0.7591 0.5427 0.2827 0.2611 0.5007 0.6994 0.8412 0.9147 0.9142 0.8396 0.6972 0.4985 0.2597 0.2168 0.4157 0.5806 0.6984 0.7595 0.7591 0.6972 0.5790 0.4140 0.2156 0.1550 0.2971 0.4151 0.4993 0.5430 0.5427 0.4985 0.4140 0.2960 0.1542 0.0807 0.1547 0.2162 0.2600 0.2828 0.2827 0.2597 0.2156 0.1542 0.0803]T

k2 = 30

ω=1.75时

x2= [0.0798 0.1531 0.2143 0.2579 0.2807 0.2807 0.2581 0.2145 0.1534 0.0800 0.1531 0.2941 0.4114 0.4952 0.5389 0.5389 0.4954 0.4116 0.2945 0.1535 0.2143 0.4114 0.5751 0.6923 0.7533 0.7534 0.6924 0.5752 0.4115 0.2143 0.2579 0.4952 0.6923 0.8333 0.9067 0.9067 0.8333 0.6922 0.4951 0.2581 0.2807 0.5389 0.7533 0.9067 0.9866 0.9866 0.9066 0.7531 0.5389 0.2808 0.2807 0.5389 0.7534 0.9067 0.9866 0.9866 0.9065 0.7533 0.5389 0.2808 0.2581 0.4954 0.6924 0.8333 0.9066 0.9065 0.8333 0.6922 0.4952 0.2580 0.2145 0.4116 0.5752 0.6922 0.7531 0.7533

0.6922 0.5751 0.4114 0.2144 0.1534 0.2945 0.4115 0.4951 0.5389 0.5389 0.4952 0.4114 0.2943 0.1534 0.0800 0.1535 0.2143 0.2581 0.2808 0.2808 0.2580 0.2144 0.1534 0.0799]T

k=30

(3)误差计算

雅克比迭代后的解与准确解的误差为

w =0.0068

超松弛迭代后的解与准确解的误差分别为

w = 0.0068 0.0068 0.0068

总结:在两种迭代方法中,当SOR所选取的W值有所变化的时候迭代次数也有所变化,但是都要比Jacobi迭代要低,当N取5的时候,Jacobi迭代次数为87次,而当用SOR 迭代的时候W取1、1.25、1.5、1.75不同值的时候迭代次数分别为30、28、25、30次,在精度要求相同的情况下相对于Jacobi迭代要对很多,因此在本次试验中的SOR迭代收敛速度要比Jacobi迭代要快。而且误差都一样。说明这两种方法只是在收敛速度上有所不同,最后的迭代结果的精确度还是相同的。

实验二

实验名称:用Jacobi迭代法和SOR迭代法求解方程组

实验时间: 2012年12月13日星期四实验成绩:

一、实验目的:

熟悉Jacobi迭代法求矩阵特征值问题的思想和一般步骤,并且利用matlab实现。

二、实验内容:

利用Jacobi迭代方法求解矩阵A=[1 2 3;2 2 4;3 4 3];

的特征值及相应的特征向量

三、实验过程:

编写MA TLAB程序如下:

function [k,Bk,V,D,Wc]=jacobite(A,jd,max1)

[n,n]=size(A);Vk=eye(n);Bk=A;state=1;k=0;P0=eye(n);

Aij=abs(Bk-diag(diag(Bk)));[m1 i]=max(Aij);

[m2 j]=max(m1);i=i(j);

while ((k<=max1)&(state==1))

k=k+1,aij=abs(Bk-diag(diag(Bk)));[m1 i]=max(abs(aij));

[m2 j]=max(m1);i=i(j),j,Aij=(Bk-diag(diag(Bk)));

mk=m2*sign(Aij(i,j)),

Wc=m2,Dk=diag(diag(Bk));Pk=P0;

c=(Bk(j,j)-Bk(i,i))/(2*Bk(i,j)),

t=sign(c)/(abs(c)+sqrt(1+c^2)),

pii=1/( sqrt(1+t^2)), pij=t/( sqrt(1+t^2)),

Pk(i,i)=pii;Pk(i,j)=pij;

Pk(j,j)=pii; Pk(j,i)=-pij;

Pk,B1=Pk'*Bk;B2=B1*Pk; Vk=Vk*Pk,Bk=B2,

if(Wc>jd)

state=1;

else

return

end

Pk;Vk;Bk=B2;Wc;

end

if(k>max1)

disp('请注意迭代次数k已经达到最大迭代次数max1,迭代次数k,对称矩阵Bk,以特征向量为列向量的矩阵V,特征值为对角元的对角矩阵D如下:')

else

disp('请注意迭代次数k,对称矩阵Bk,以特征向量为列向量的矩阵V,特征值为对角元的对角矩阵D如下:')

end

Wc;k=k; V=Vk;Bk=B2;D=diag(diag(Bk));[V1,D1] =eig(A,'nobalance')

输入以下程序

>> A=[8 3 1;3 4 7;1 7 2];

>> [k,B,V,D,Wc]=jacobite(A,0.001,100)

运行最后一次迭代结果的:

k =

7

i =

3

j =

2

mk =

3.2007e-005 Wc =

3.2007e-005

c =

2.5561e+005 t =

1.9561e-006 pii =

1.0000

pij =

1.9561e-006

Pk =

1.0000 0 0

0 1.0000 -0.0000

0 0.0000 1.0000

Vk =

0.8065 0.5821 0.1037

-0.3774 0.6418 -0.6676

-0.4552 0.4992 0.7373

Bk =

6.0318 0.0000 -0.0000

0.0000 12.1655 -0.0000

-0.0000 0.0000 -4.1973

由结果可看出迭代7次后主对角线以外的元素变为了0.

故原矩阵的特征值为v=[6.0318 12.16554 -4.1973]

相应的特征向量为x1=[0.8065 -0.3774 -0.4552]

x2=[0.5821 0.6418 0.4992]

x3=[0.1037 -0.6676 0.7373]

五、总结

利用雅可比迭代法求矩阵特征值的一般思想为:

选取非对角线上最大的元素,利用变换矩阵将其变为0,之后再选取变换后的矩阵中非对角线中最大值,再将其变为0,如此迭代下去,知道非对角线元素平方和小于设定的精度,这样所得到的矩阵主对角线元素即为特征值,而所有变换矩阵的转置相乘所得矩阵的每列向量即为相对应的特征向量。

数值代数实验报告

1.谈谈你对该算法的理解:(简单谈一下你是如何理解该算法的?) 先对84阶矩阵进行LU分解,通过Gauss消元法 对下三角形方程组利用前代法解出y,在对上三角方程组 用回代法解出x…. 2.实验内容 function [ L,U ] = LUfac( A ) for k=1:n-1 A(k+1:n,k)=A(k+1:n,k)/A(k,k); A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n); end L=tril(A,0); for i=1:n L(i,i)=1; end U=triu(A,0); End //进行LU分解 function [ b ] = TSL( L,b ) n=size(L,1); for j=1:n-1 b(j)=b(j)/L(j,j); b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j); end b(n)=b(n)/L(n,n); end //利用前代法解出y function [ b ] = TSU( U,b ) n=size(U,1); for j=n:-1:2 b(j)=b(j)/U(j,j); b(1:j-1)=b(1:j-1)-b(j)*U(1:j-1,j); end b(1)=b(1)/U(1,1); end //利用回代法解出x

主函数程序 A=eye(84); A=6*A; for i=2:84 A(i,i-1)=8; A(i-1,i)=1; End //生成84阶的矩阵A b=ones(84,1); b=b*15; b(1)=7; b(84)=14; [L,U]=LUfac(A);//调用函数LUfac对矩阵A进行分解 y=TSL(L,b);//调用函数TSL求解y x=TSU(U,y); //调用函数TSU求解X 经过matlab…有 x’ ans = 1.0e+008 * Columns 1 through 7 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 8 through 14 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 15 through 21 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 22 through 28 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 29 through 35 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 36 through 42 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 43 through 49 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 50 through 56 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 Columns 57 through 63

计算方法上机实验报告

《计算方法》上机实验报告 班级: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 四、运行结果: 实验二:

网络数据库实训报告(一)

网络数据库应用实训报告 日期:2016年3月18日班级:物联1411 一、实训目的和要求 1、掌握采用界面方式创建、修改、删除数据库; 2、掌握采用T-SQL 语句创建、修改、删除数据库; 二、实训所需仪器、设备 硬件:计算机软件:操作系统Windows7、SQLServer2008 三、实训内容 1)在管理平台中管理数据库。 (1)创建数据库“studentsdb”。 (2)查看studentsdb数据库的属性。 (3)修改数据文件大小为2MB,指定“最大文件大小”为5MB。日志文件的大小在每次填满时自动递增5%。 (4)将studentsdb数据库的名称更改为student_db。 2)使用T-SQL 语句管理数据库 (1)使用CREATE DATABASE 创建studb数据库,然后通过系统存储过程sp_helpdb查看系统中的数据库信息。 (2)使用ALTER DATABASE 修改studb数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小为1MB。(3)

为studb数据库增加一个日志文件,命名为studb_Log2,大小为5MB,最大文件大小为10MB。 (4)将studb数据库的名称更改为my_studb。 (5)使用DROP DATABASE 删除my_studb数据库。 四、实训步骤 (内容说明:1.大致的操作步骤;2.参数设置) 1)在管理平台中管理数据库。 (1)数据库右击→新建数据库→数据库名称“studentsdb”; (2)数据文件→初始大小→2MB (3)数据文件→点击自动增长下的→最大文件大小→限制文件大小→5MB; (4)日志文件→点击自动增长下的→文件增长→按百分比→5% (5) studentsdb右击→属性; (6) studentsdb右击→重命名→student_db; 2)使用T-SQL 语句管理数据库 命令如下: CREATEDATABASE studb on PRIMARY ( NAME='student_db', FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA', size=4MB, MAXSIZE=20MB, FILEGROWTH=1 ) log on ( NAME='stusb_log2', FILENAME='C:\Program Files\Microsoft SQL

数值代数上机实验报告

数值代数课程设计实验报告 姓名: 班级: 学号: 实验日期: 一、实验名称 代数的数值解法 二、实验环境 MATLAB7.0 实验一、平方根法与改进平方根法 一、实验要求: 用熟悉的计算机语言将不选主元和列主元Gasuss 消元法编写成通用的子程序,然后用编写的程序求解下列方程组 ?????????? ????????????=????????????????????????? ? ? ? ? ? ? ?? ?????? ???? ?--?1415151515768 168 168 168 1681612321 n n n n n x x x x x x 用所编的程序分别求解40、84、120阶方程组的解。 二、算法描述及实验步骤 GAuss 程序如下: (1)求A 的三角分解:LU A =; (2)求解b y =L 得y ; (3)求解y x =U 得x ; 列主元Gasuss 消元法程序如下: 1求A 的列主元分解:LU PA =; 2求解b y P L =得y ; 3求解y x =U 得x ;

三、调试过程及实验结果: %----------------方程系数---------------- >> A1=Sanduijiaozhen(8,6,1,40); >> A2=Sanduijiaozhen(8,6,1,84); >> A3=Sanduijiaozhen(8,6,1,120); >> b1(1)=7;b2(1)=7;b3(1)=7; >> for i=2:39 b1(i)=15; end >> b1(40)=14; >> for i=2:83 b2(i)=15; end >> b2(40)=14; >> for i=2:119 b1(i)=15; end >> b3(120)=14; %----------------方程解---------------- >> x11=GAuss(A1,b1') >> x12=GAuss Zhu(A1,b1') >> x21=GAuss(A2,b2') >> x22=GAuss Zhu(A3,b3') >> x31=GAuss(A3,b3') >> x32=GAuss Zhu(A3,b3') 运行结果:(n=40) GAuss消元法的解即为 x11 = 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 列主元GAuss消元法的解即为x12 =

数据库实验报告

. . 《数据库原理与技术》实验报告 实验一、数据定义及更新语句练习 一、实验容 建立如下mySPJ数据库,包括S,P,J,和SPJ四个基本表(《数据库系统概论》第二章习题5中的四个表),要现关系的三类完整性。 S(SNO,SNAME,STATUS,CITY); P(PNO,PNAME,COLOR,WEIGHT); J(JNO,JNAME,CITY); SPJ(SNO,PNO,JNO,QTY); 二、完成情况

附上按照实验容编写的程序代码。(小四号字,宋体) 三、实验结果 1、插入一条记录 2、①将p表中的所有红色零件的重量增加5。 ②将spj表中所有供应商的QTY属性值减少10。用子查询。

3.利用Delete语句删除p表中的所有红色零件的记录。 附上各个步骤所用的实验用例与结果显示(小四号字,宋体) 四、问题与解决 (小四号字,宋体) 1 .实验中遇到的问题及解决过程 2 .实验中产生的错误及原因分析 首先写出执行语句不成功的时候系统报告的错误信息。然后分析错误原因,并给出解决办法。

实验二简单查询和连接查询 一、实验容 (一)完成下面的简单查询: ①查询所有“”的供应商明细; ②查询所有“红色”的14公斤以上的零件。 ③查询工程名称中含有“厂”字的工程明细。 (二)完成下面的连接查询: ①等值连接:求s表和j表的相同城市的等值连接。 ②自然连接:查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。 ③笛卡尔积:求s和p表的笛卡尔积。 ④左连接:求j表和spj表的左连接。 ⑤右连接:求spj表和j表的右连接。 二、完成情况 (一)完成下面的简单查询: ①查询所有“”的供应商明细; ②查询所有“红色”的14公斤以上的零件。

数学实验1

中国海洋大学本科生课程大纲 课程属性:公共基础/通识教育/学科基础/专业知识/工作技能,课程性质:必修、选修 一、课程介绍 1.课程描述: 数学实验是由于计算机技术和科学计算软件的迅猛发展应运而生的一门较新的数学课程,它改变了数学只靠纸和笔的传统形象,将实验的手段引入到数学的学习和研究中。 本课程为大学二年级数学院的学生开设。它不是讲授新的数学知识,而是让学生利用已有的数学知识去解决一些经简化的实际问题。大多数实验的一般过程是:对于给出的实际问题,建立数学模型、选择适当的数学方法、用科学计算软件MATLAB编程计算、对运算结果进行分析、给出结论。 本课程以MATLAB软件为主要的实验工具,采用以学生动手动脑为主,教师讲授和点评、小组讨论、报告为辅的教学方式。 通过本课程的学习,学生用数学解决实际问题的意识和能力可以得到强化和提高,更切实地体会到数学的用处,增加学习兴趣,提高创造力。 2.设计思路: 本课程旨在训练用数学解决实际问题的能力。实验内容的选取是基于学生具备MATLAB语言的初步编程能力、并学习了数学分析、高等代数、解析几何、运筹学基础(初步)、数学实验基础、常微分方程、数值分析或计算方法、概率论等数学课程的基础之上。课程共分七个基础实验和一个综合实验依次进行。七个基础实验是:MATLAB 基础知识复习、常微分方程(组)、数据建模——插值与拟合、古典密码学、图与网络 - 6 -

优化、动态规划、遗传算法。 基础实验涉及的数学内容较为单一、数学模型和求解方法较简单,是对“用数学”能力的基本训练。 综合实验以三人为一组进行,所涉及到的数学知识范围更广,建模和求解的难度更大。综合实验的题目可以小组自拟或在任课教师拟定的题目中选择。任课教师拟定的题目将于综合实验开始前一周给出。各小组在实验前要上交一份“开题报告”:写出问题的重述、模型建立和求解的思路、可能遇到的主要困难及解决方案。通过认真完成综合实验,“用数学”的能力可以有一个较大的提升。 3.课程与其他课程的关系: 先修课程:高等代数I、高等代数II、空间解析几何、数学分析I、数学分析II、数学实验基础;常微分方程;计算方法(或数值分析、数值代数); 并行课程:概率论等; 后置课程:数学模型;数学建模实践 二、课程目标 本课程的目标是为大二数学类专业学生提供用数学知识解决实际问题的系统训练。 到课程结束时,学生应能: (1)对简单的实际问题建立数学模型; (2)采用适当的数学方法,用MA TLAB软件求解模型,并根据计算结果对模型进行评价和改进; (3)具备初步的科研写作能力:学会如何将问题、模型、解决思路、求解方法、计算结果和结论简洁、清晰、严谨地呈现; (4)针对难度较高的实际问题通过小组成员的独立思考、相互合作与激励,共同解决。提高沟通交流能力,促进相互学习,加深对有关数学知识的理解,进一步提升用数学知识和MATLAB软件解决实际问题的能力。 三、学习要求 要完成所有的课程任务,学生必须: (1)按时上课,认真听讲,积极参与课堂讨论、随堂练习和测试; - 6 -

计算方法第二章方程求根上机报告

实验报告名称 班级:学号:姓名:成绩: 1实验目的 1)通过对二分法与牛顿迭代法作编程练习与上级运算,进一步体会二分法与牛顿迭代法的不同特点。 2)编写割线迭代法的程序,求非线性迭代法的解,并与牛顿迭代法。 2 实验内容 用牛顿法和割线法求下列方程的根 x^2-e^x=0; x*e^x-1=0; lgx+x-2=0; 3实验步骤 1)根据二分法和牛顿迭代法,割线法的算法编写相应的求根函数; 2)将题中所给参数带入二分法函数,确定大致区间; 3)用牛顿迭代法和割线法分别对方程进行求解; 3 程序设计 牛顿迭代法x0=1.0; N=100; k=0; eps=5e-6; delta=1e-6; while(1) x1=x0-fc1(x0)/fc2(x0); k=k+1; if k>N disp('Newmethod failed')

break end if(abs(x1-x0)=delta) c=x1; x1=cutnext(x0,x1); x0=c; %x0 x1μYí?μ?μ?x1 x2 è?è?±£′??úx0 x1 end k=k+1; if k>N disp('Cutline method failed') break; end if(abs(x1-x0)

西北工业大学数据库实验报告

1.利用图形用户界面创建,备份,删除和还原数据库和数据表(50分,每小题5分) ●数据库和表的要求(第五版教材第二章习题 6 要求的数据库) 数据库名:SPJ,其中包含四张表:S表, P表, J表, SPJ表 ●完成以下具体操作: (1)创建SPJ数据库,初始大小为 10MB,最大为50MB,数据库自动增长,增长方 式是按5%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。 数据库的逻辑文件名和物理文件名均采用默认值。 (2)在SPJ数据库中创建如图2.1-图2.4的四张表(只输入一部分数据示意即可)。 S表: P表: J表: SPJ表:

(3)备份数据库SPJ(第一种方法):备份成一个扩展名为bak的文件。(提示: 最好先删除系统默认的备份文件名,然后添加自己指定的备份文件名) (4)备份数据库SPJ(第二种方法):将SPJ数据库定义时使用的文件(扩展名为 mdf,ldf的数据文件、日志文件等)复制到其他文件夹进行备份。 原位置: 新的位置: (5)删除已经创建的工程项目表(J表)。 (6)删除SPJ数据库。(可以在系统默认的数据存储文件夹下查看此时SPJ数据 库对应的mdf,ldf文件是否存在) 删除过后文件不存在 (7)利用备份过的bak备份文件还原刚才删除的SPJ数据库。(还原数据库)

(8)利用备份过的mdf,ldf的备份文件还原刚才删除的SPJ数据库。(附加) (9)将SPJ数据库的文件大小修改为100MB。 (10)修改S表,增加一个联系电话的字段sPhoneNo,数据类型为字符串类 型。 2.利用SQL语言创建和删除数据库和数据表(50分,每小题5分) ●数据库和表的要求 数据库名:Student,其中包含三个表:S:学生基本信息表;C:课程基本信息表;SC:学生选课信息表。 ●完成以下具体操作: (1)用SQL语句创建如图2.5-图2.7要求的数据库Student,初始大小为20MB, 最大为100MB,数据库自动增长,增长方式是按10M兆字节增长;日志文件初

偏微分方程数值解课程的思索

科技信息 SCIENCE &TECHNOLOGY INFORMATION 2012年第9期偏微分方程(PDE )是众多描述物理,化学和生物现象的数学模型的基础,其最新应用已经扩展到经济,金融预测,图像处理等很多领域。要通过PDE 模型研究这些问题,就需要求解PDE 方程,但是绝大多数微分方程特别是偏微分方程,很难得到其解析形式的解。我们希望能够借助于计算机采用数值方法求得偏微分方程的近似解,这就是《偏微分方程数值解》课程的主要内容。 《偏微分方程数值解》是信息与计算科学专业的一门专业课,它与《数值代数》,《数值逼近》一起构成信息与计算科学专业信息与计算方向的核心课程,在专业培养中占有非常重要的地位。随着计算机技术的飞速发展,偏微分方程数值解得到了前所未有的发展和应用,与此同时也暴露了《偏微分方程数值解》课程传统教学中的很多不足之处,这使得该门课程在教学上有很多地方需要调整。 笔者长年教授《偏微分方程数值解》课程,在该门课程的教学改革方面做了一些思索和尝试,主要包括改革教学方法,更新教学模式,加强介绍背景知识,融入数学建模思想,教学与科研相结合,教学与计算软件相结合,增设实验课,改革考核方式等。 1改革教学方法,更新教学模式 由于数学课程大多理论性较强,趣味性较弱,为了激发学生学习兴趣,在教学过程中,我们采用启发式、讨论式等多种教学方法,营造良好的课堂气氛,加强师生之间的交流,引导学生独立思考,强化科学思维的训练。在教学内容方面,不光教授公式推导,定理证明,同时注重算法思想的讲解和程序设计的讲解,同时安排一定课时的习题课,讲解典型习题和对每章进行总结。 由于《偏微分方程数值解》涉及较多的概念、公式和定理,大多数老师仍以传统的课堂教学为主,而少数年轻教师则喜欢用多媒体课件教学。传统的教学方法,虽然受到的批评最多,但也是用得最多,最能让大家普遍接受的一种方法,在算法推导、理论分析等方面,采用传统的板书讲解能更好地引导学生去感受和思考数学逻辑的过程以及创造性的思维过程,加深对数学理论的理解和认识,培养学生的逻辑和思维能力。而在讲述背景知识,算法的应用,算法的程序实现时候最好用多媒体课件进行演示。多媒体课件可以让学生更直观,更全面的理解算法的应用,另外使用多媒体课件还可以节省大段公式的板书时间,图示清楚、准确。但是如果全部使用多媒体课件上课,容易加快教学速度,淡化数学公式的推导以及定理的证明过程,不利于培养学生的数学思维能力。所以,我们认为需要将传统的教学方法和现代的教学手段结合起来,充分发挥各自的优势,在传统教学中穿插多媒体课件,根据教学内容选择合适的教学手段。 2加强知识背景的介绍,融入数学建模思想 《偏微分方程数值解》是理论知识与实际应用之间的桥梁,为学生使用计算机解决科学与工程中的实际问题打下良好的理论基础和应用基础。传统教学以分析,证明,推导为主,重理论,轻应用,缺少偏微分方程产生的实际背景的介绍和应用数值解的方法解决实际问题的实例。因此,我们在教授该课程的时候,注重与数学建模思想相结合,从实际问题出发,建立相应的偏微分方程模型,这样,学生就知道为什么要研究偏微分方程,偏微分方程能解决什么样的实际问题。 例如,我们考虑有衰减的扩散问题:有一个扩散源,某物质从此扩散源向四周扩散,沿x,y,z 三个方向的扩散系数分别为常数,衰减使质量的减少与浓度成正比,扩散前周围空间此物质的浓度为0,估计物质的分布。我们引导学生运用所学过的微积分的思想以及相应的物理知识,对这一问题进行建模,可以得到如下的模型: 鄣u =a 2鄣2 u 鄣x +b 2鄣2 u 鄣y +c 2鄣2 u 鄣z -k 2u 上述方程是常系数线性抛物型方程,它就是有衰减的扩散过程的数学模型。有了这样的铺垫,学生知道了扩散问题的数学模型就是抛物型方程,当然类似的环境污染,疾病流行等与扩散有关的实际问题可以用抛物型方程来描述,很自然的,接下来的问题就是如何求解上面的抛物型方程,学生的学习热情自然就提高了。 3教学与科研相结合 随着计算技术和计算机科学的发展,偏微分方程数值解法的内涵也在不断扩大,我们在讲授《偏微分方程数值解》课程中引进近年来最新的理论和最新的方法,这样可以开阔学生的视野,激发学生的学习情趣,锻炼学生的自学能力。例如我们除了介绍有限差分法,有限元法,有限体积法等经典的具有一般性的方法,还介绍了多重网格法。由于近些年来,人们将辛方法应用于哈密顿常微分方程系统以及推广应用于微分方程的兴趣日益增长,我们也简单介绍了这一主题,并且用这个思想去分析逼近波动方程的交错蛙跳格式。在讲授方法的同时,还注意介绍这些方法的发展历史,设计思想和理论依据,并给出了相当丰富的参考文献,让基础好的同学自己去挖掘感兴趣的问题。承担课题的老师,可以把自己课题中与此课程相关的小问题拿出来供有兴趣的同学琢磨,有助于锻炼学生的科研能力。 4教学与计算软件相结合 由Mathworks 公司推出的MATLAB 软件,现在已经发展成功能强大,适合科学和工程计算的软件,使用MATLAB 编程,语言简洁,数据处理方便,具有强大的数值计算功能和图形展示功能,因此,将MATLAB 融入偏微分方程数值解的教学,更能与时俱进,更有效地提高教学质量。 MATLAB 采用有限元的方法求解各种PDE ,它提供了两种方法解决PDE 问题,一是pdepe 函数,它可以求解一般的PDEs ,具有较大的通用性,但只支持命令行形式的调用。二是PDE 工具箱,可以求解特殊PDE 问题,但有较大的局限性。只能求解二阶PDE 问题,不能求解偏微分方程组。PDE 工具箱支持命令行形式求解,但需要记住大量命令及其调用格式。不过好在它提供了GUI 界面,可以把我们从复杂的编程中解脱出来,还有很好的动画演示功能,尤其适合刚入门的学生。 我们在授课过程中精选与生活,生产密切相关的应用实例,鼓励学生自己动手建立模型,应用数学软件和所学的知识求解模型。例如考虑一个带有矩形孔的金属板上的热传导问题。板的左边保持在100℃,板的右边热量从板向环境空气定常流动,其他边及内孔边界保持绝缘。初始t=t 0时板的温度为0。对于这样的一个实际问题,我们先应用所学的数学分析和数学建模知识,对原问题建立如下偏微分方程模型: 鄣u 鄣t -△u =0,u =100, 鄣u =-1,鄣u =0,u|t=t 0 =0△△△△△△△△△△△△△△ △. 不妨设界顶点坐标为(-0.5,-0.8),(0.5,-0.8),(0.5,0.8),(-0.5,0.8)。内边界顶点坐标为(-0.005,-0.4),(0.05,-0.4),(0.05,0.4),(-0.05,0.4)。对于这样的一个抛物型方程,我们设计其数值计算方法,然后分别用 偏微分方程数值解课程的思索 邹永魁 (吉林大学数学与科学学院吉林 长春 130012) 【摘要】探讨《偏微分方程数值解》课程教学改革的思考与体会,主要包括教学方法和教学模式的改革,加强背景知识的介绍,将科研前沿带入课堂,将MATLAB 融入教学以及考核方式的改革等。 【关键词】偏微分方程数值解;教学改革;MATLAB ;综合评价体系○高校讲坛○200

数值分析上机实验报告

数值分析上机实验报告

《数值分析》上机实验报告 1.用Newton 法求方程 X 7-X 4+14=0 在(0.1,1.9)中的近似根(初始近似值取为区间端点,迭代6次或误差小于0.00001)。 1.1 理论依据: 设函数在有限区间[a ,b]上二阶导数存在,且满足条件 {}α?上的惟一解在区间平方收敛于方程所生的迭代序列 迭代过程由则对任意初始近似值达到的一个中使是其中上不变号 在区间],[0)(3,2,1,0,) (') ()(],,[x |))(),((|,|,)(||)(|.4;0)(.3],[)(.20 )()(.110......b a x f x k x f x f x x x Newton b a b f a f mir b a c x f a b c f x f b a x f b f x f k k k k k k ==- ==∈≤-≠>+ 令 )9.1()9.1(0)8(4233642)(0)16(71127)(0)9.1(,0)1.0(,1428)(3 2 2 5 333647>?''<-=-=''<-=-='<>+-=f f x x x x x f x x x x x f f f x x x f 故以1.9为起点 ?? ?? ? ='- =+9.1)()(01x x f x f x x k k k k 如此一次一次的迭代,逼近x 的真实根。当前后两个的差<=ε时,就认为求出了近似的根。本程序用Newton 法求代数方程(最高次数不大于10)在(a,b )区间的根。

1.2 C语言程序原代码: #include #include main() {double x2,f,f1; double x1=1.9; //取初值为1.9 do {x2=x1; f=pow(x2,7)-28*pow(x2,4)+14; f1=7*pow(x2,6)-4*28*pow(x2,3); x1=x2-f/f1;} while(fabs(x1-x2)>=0.00001||x1<0.1); //限制循环次数printf("计算结果:x=%f\n",x1);} 1.3 运行结果: 1.4 MATLAB上机程序 function y=Newton(f,df,x0,eps,M) d=0; for k=1:M if feval(df,x0)==0 d=2;break else x1=x0-feval(f,x0)/feval(df,x0); end e=abs(x1-x0); x0=x1; if e<=eps&&abs(feval(f,x1))<=eps d=1;break end end

数据库实验报告1

《数据库系统原理》实验报告 专业:___信息安全____ 班号:_______ 学号:______ 姓名:________ 实验日期:_________ 上机地点:_________ 实验环境: 报告日期:2012年 4月26日

一、实验内容、过程及完成情况(必须有所用的SQL 语句、语句执行效果) 1、第三章习题3(P127):用SQL语句建立第二章习题5 (P74)中四个表,创建的基本表应考虑数据完整性 (1)打开cmd,进入mysql.exe文件所在的文件夹。 然后以用户名root密码123456登录。 如下图所示 图1 (2)执行创建数据库语句:create database mytest1; 然后执行语句:show databases查看库,发现mytest1库建立成功。 如下图所示 图2

(3)选择数据库mytest1,然后执行创建表S的语句:CREATE TABLE S ( SNO CHAR(2), SNAME VARCHAR(8), STATUS SMALLINT, CITY VARCHAR(8), PRIMARY KEY (SNO) ); 如下图所示 图3 (4)执行语句describe S; 显示表S的结构。如下图所示 图4 (5)在mytest1中,执行创建表P的语句: CREATE TABLE P( PNO CHAR(2), PNAME VARCHAR(8), COLOR CHAR(2), WEIGHT SMALLINT, PRIMARY KEY (PNO) ); 如下图所示

图5 (6)显示表P的结构,如下图所示 图6 (7)在mytest1中,执行创建表J的语句:CREATE TABLE J( JNO CHAR(2), JNAME VARCHAR(8), CITY VARCHAR(8), PRIMARY KEY (JNO) ); 如下图所示 图7 (8)显示表J的结构,如下图所示

数据库实验报告1

1.使用系统存储过程(sp_rename)将视图“V_SPJ”更名为“V_SPJ_三建”。(5分) exec sp_rename v_spj, v_spj_三建; 2.针对SPJ数据库,创建并执行如下的存储过程:(共计35分) (1)创建一个带参数的存储过程—jsearch。该存储过程的作用是:当任意输入一个工 程代号时,将返回供应该工程零件的供应商的名称(SNAME)和零件的名称(PNAME) 以及工程的名称(JNAME)。执行jsearch存储过程,查询“J1”对应的信息。(10 分) create proc jsearch @jno char(2) as select sname, pname, jname from s,p,j,spj where s.sno=spj.sno and p.pno=spj.pno and j.jno=spj.jno and spj.jno=@jno; 执行: exec jsearch 'J1'

(2)使用S表,为其创建一个加密的存储过程—jmsearch。该存储过程的作用是:当执 行该存储过程时,将返回北京供应商的所有信息。(10分) 创建加密存储过程: create proc jmsearch with encryption as select * from s where s.city='北京'; sp_helptext jmsearch; (3)使用系统存储过程sp_helptext查看jsearch, jmsearch的文本信息。(5分) 用系统存储过程sp_helptext查看jsearch: exec sp_help jsearch; exec sp_helptext jsearch;

数值线性代数二版徐树方高立张平文上机习题第三章实验报告

- 1 - 第三章上机习题 用你所熟悉的的计算机语言编制利用QR 分解求解线性方程组和线性最小二乘问题的 通用子程序,并用你编制的子程序完成下面的计算任务: (1)求解第一章上机习题中的三个线性方程组,并将所得的计算结果与前面的结果相比较,说明各方法的优劣; (2)求一个二次多项式+bt+c y=at 2 ,使得在残向量的2范数下最小的意义下拟合表3.2中的数据; (3)在房产估价的线性模型 111122110x a x a x a x y ++++= 中,1121,,,a a a 分别表示税、浴室数目、占地面积、车库数目、房屋数目、居室数目、房龄、建筑类型、户型及壁炉数目,y 代表房屋价格。现根据表3.3和表3.4给出的28组数据,求出模型中参数的最小二乘结果。 (表3.3和表3.4见课本P99-100) 解 分析: (1)计算一个Householder 变换H : 由于T T vv I ww I H β-=-=2,则计算一个Householder 变换H 等价于计算相应的v 、β。其中)/(2,||||12v v e x x v T =-=β。 在实际计算中, 为避免出现两个相近的数出现的情形,当01>x 时,令2 12221||||) (-x x x x v n +++= ; 为便于储存,将v 规格化为1/v v v =,相应的,β变为)/(221v v v T =β 为防止溢出现象,用∞||||/x x 代替 (2)QR 分解: 利用Householder 变换逐步将n m A n m ≥?,转化为上三角矩阵A H H H n n 11 -=Λ,则有

?? ? ???=0R Q A ,其中n H H H Q 21=,:),:1(n R Λ=。 在实际计算中,从n j :1=,若m j <,依次计算)),:((j m j A x =对应的)1()1()~ (+-?+-k m k m j H 即对应的j v ,j β,将)1:2(+-j m v j 储存到),:1(j m j A +,j β储存到)(j d ,迭代结束 后再次计算Q ,有??? ? ?? ??=-~001 j j j H I H ,n H H H Q 21=(m n =时1-21n H H H Q =) (3)求解线性方程组b Ax =或最小二乘问题的步骤为 i 计算A 的QR 分解; ii 计算b Q c T 11=,其中):1(:,1n Q Q = iii 利用回代法求解上三角方程组1c Rx = (4)对第一章第一个线性方程组,由于R 的结果最后一行为零,故使用前代法时不计最后一行,而用运行结果计算84x 。 运算matlab 程序为 1 计算Householder 变换 [v,belta]=house(x) function [v,belta]=house(x) n=length(x); x=x/norm(x,inf); sigma=x(2:n)'*x(2:n); v=zeros(n,1); v(2:n,1)=x(2:n); if sigma==0 belta=0; else alpha=sqrt(x(1)^2+sigma); if x(1)<=0 v(1)=x(1)-alpha; else v(1)=-sigma/(x(1)+alpha); end belta=2*v(1)^2/(sigma+v(1)^2); v=v/v(1,1); end end

计算方法上机实习题大作业(实验报告).

计算方法实验报告 班级: 学号: 姓名: 成绩: 1 舍入误差及稳定性 一、实验目的 (1)通过上机编程,复习巩固以前所学程序设计语言及上机操作指令; (2)通过上机计算,了解舍入误差所引起的数值不稳定性 二、实验内容 1、用两种不同的顺序计算10000 21n n -=∑,分析其误差的变化 2、已知连分数() 1 01223//(.../)n n a f b b a b a a b =+ +++,利用下面的算法计算f : 1 1 ,i n n i i i a d b d b d ++==+ (1,2,...,0 i n n =-- 0f d = 写一程序,读入011,,,...,,,...,,n n n b b b a a 计算并打印f 3、给出一个有效的算法和一个无效的算法计算积分 1 041 n n x y dx x =+? (0,1,...,1 n = 4、设2 2 11N N j S j == -∑ ,已知其精确值为1311221N N ?? -- ?+?? (1)编制按从大到小的顺序计算N S 的程序 (2)编制按从小到大的顺序计算N S 的程序 (3)按两种顺序分别计算10001000030000,,,S S S 并指出有效位数 三、实验步骤、程序设计、实验结果及分析 1、用两种不同的顺序计算10000 2 1n n -=∑,分析其误差的变化 (1)实验步骤: 分别从1~10000和从10000~1两种顺序进行计算,应包含的头文件有stdio.h 和math.h (2)程序设计: a.顺序计算

#include #include void main() { double sum=0; int n=1; while(1) { sum=sum+(1/pow(n,2)); if(n%1000==0)printf("sun[%d]=%-30f",n,sum); if(n>=10000)break; n++; } printf("sum[%d]=%f\n",n,sum); } b.逆序计算 #include #include void main() { double sum=0; int n=10000; while(1) { sum=sum+(1/pow(n,2)); if(n%1000==0) printf("sum[%d]=%-30f",n,sum); if(n<=1)break; n--; } printf("sum[%d]=%f\n",n,sum); } (3)实验结果及分析: 程序运行结果: a.顺序计算

数据库实验报告

数据库实验报告 集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

课程名称:数据库原理与应用 实验内容:数据库安全性管理 作者所在系部:网络工程系 作者所在专业:网络工程 作者所在班级: B13521 作者姓名:李文阳 作者学号: 指导教师姓名:王振夺 北华航天工业学院教务处制 实验四数据库安全性管理 一、实验目的 1、理解数据库的安全性机制; 2、掌握SQL Server 2005的验证模式、登录管理、用户管理、角色 管理以及权限管理; 二、实验内容 (一)附加上次实验所创建的数据库“db_Library”,并回顾该库的数据表信息。 (二)设置SQL Server的安全验证模式,并以两种方式尝试登录。

(三)登录账户管理 1、以管理员身份登录SQL Server,修改sa的密码。 2、使用SQL语句创建一个SQL Server登录账户,账户名为你的名字拼音,密码自定义。创建完成后,以该账户来进行登录。 3、使用SQL语句来修改上述登录账户的密码。 4、禁用上述登录账户连接SQL Server,并进行验证。 (四)数据库用户管理 1、使用SQL语句添加db_Library数据库用户User2,其登录账户为上题所创建的SQL Server登录账户,使用默认dbo架构,并赋予该用户能够运行Select语句的权限。 (五)权限管理 1、使用SSMS将创建数据表和创建视图的权限授予User2。 2、使用SQL语句将对db_Library数据库中图书信息表的查询、插入、以及对书名和作者列的修改权限授予用户User2。 3、使用SSMS收回User2创建数据表和创建视图的权限。 4、使用SQL语句收回User2修改书名和作者列的权限。 (六)删除上述所建立的数据库用户以及登录账户。 三、实验步骤 主要实现的SQL语句。 使用T-SQL语句创建一个SQL Server登录账户,账户名为你的名字拼音,密码自定义。创建完成后,以该账户来进行登录。

(完整word版)数据库实验报告8

. 西安科技大学 《数据库原理及应用》课程设计报告 题目:寄宿学校管理信息系统的设计与实现 学院:计算机科学与技术学院 专业及班级:软件工程1202及1203班 学号:1208010206 1208010207 1208010303 姓名:李倩魏楠楠王青枝 日期:2014年7月9日

目录 1课程设计目的及意义 (2) 2设计内容及人员分工 (2) 3 需求分析 (2) 3.1 需求陈述 (2) 3.2 功能需求 (2) 3.3 数据需求 (3) 3.4 其它需求 (3) 4 数据库设计 (3) 4.1概念结构设计 (3) 4.2逻辑结构设计 (4) 4.3数据表结构设计 (4) 5 系统功能设计 (6) 6 系统实现 6.1 开发环境 (7) 6.2 数据库的创建与连接技术 (7) 4.3 主要功能的运行结果及代码 (9)

7 总结 (13) 参考文献 (13) 1、课程设计的目的和意义 课程设计目的:通过本课程设计,培养学生具有C/S模式的数据库应用软件系统的 设计和开发能力;熟练掌握SQL Server数据库的使用,熟练掌握使用VC、VB或其它开发工具开发数据库应用的能力;为毕业设计打下坚实的基础。学生根据所学的数据库原理与程序设计的知识, 通过对一个实际问题的分析,设计与实现,将原理与应用相结合,使学生学会如何把书本上学到的知识用于解决实际问题,培养学生的动手能力;另一方面,使学生能深入理解和灵活掌握教学内容。 课程设计的意义:通过对这个系统的设计,让我们更加熟悉SQL Sever 2008的相关操 作,也巩固了这学期学习的数据库的一些知识,让我们更懂得数据库的重要性无论是在生活中,还是在软件的设计和制作过程中。让我们学会了数据库的设计,经历了数据库设计的几个阶段,比如需求分析,概念结构设计,逻辑结构的设计,都让我们努力的去想,去做,懂得数据库的优化,想想怎么做才是最好的。做出一个比较满意的数据库设计。 2、设计内容及人员分工 魏楠楠:数据库的需求分析,概念设计 王青枝:数据库逻辑设计,表结构设计 李倩:数据库触发器创建实现 3、需求分析 3.1 需求陈述: 某寄宿学校需要开发一个信息管理系统,通过该管理系统可以对学生的日常事务进行管理: 校长助理:可以对学生的档案进行管理,可以进行新增、删除、查询、修改等操作。 财务人员:进行每月的收费和退费工作,每个学生的每月费用包括住宿费,伙食费220,在6-8月收取空调费20,在11-2月收取取暖费20,每个学期的开学初(3月、9月)收取书本费(不定)。住宿费分三种情况:双职工的子女为60,单职工的子女80元,父母均不在本单位工作为100元。每个班的老师在每天要申报本班学生的出勤表,由校长助理完成

相关文档
相关文档 最新文档