数值线性代数实验报告

合集下载

迭代法解线性方程组数值分析实验报告

迭代法解线性方程组数值分析实验报告

迭代法解线性方程组数值分析实验报告一、实验目的本次实验旨在深入研究和掌握迭代法求解线性方程组的基本原理和方法,并通过数值实验分析其性能和特点。

具体目标包括:1、理解迭代法的基本思想和迭代公式的推导过程。

2、掌握雅克比(Jacobi)迭代法、高斯赛德尔(GaussSeidel)迭代法和超松弛(SOR)迭代法的算法实现。

3、通过实验比较不同迭代法在求解不同类型线性方程组时的收敛速度和精度。

4、分析迭代法的收敛性条件和影响收敛速度的因素。

二、实验原理1、线性方程组的一般形式对于线性方程组$Ax = b$,其中$A$ 是$n×n$ 的系数矩阵,$x$ 是$n$ 维未知向量,$b$ 是$n$ 维常向量。

2、迭代法的基本思想迭代法是从一个初始向量$x^{(0)}$出发,按照某种迭代公式逐步生成近似解序列$\{x^{(k)}\}$,当迭代次数$k$ 足够大时,$x^{(k)}$逼近方程组的精确解。

3、雅克比迭代法将系数矩阵$A$ 分解为$A = D L U$,其中$D$ 是对角矩阵,$L$ 和$U$ 分别是下三角矩阵和上三角矩阵。

雅克比迭代公式为:$x^{(k+1)}= D^{-1}(b +(L + U)x^{(k)})$。

4、高斯赛德尔迭代法在雅克比迭代法的基础上,每次计算新的分量时立即使用刚得到的最新值,迭代公式为:$x_i^{(k+1)}=(b_i \sum_{j=1}^{i-1}a_{ij}x_j^{(k+1)}\sum_{j=i+1}^{n}a_{ij}x_j^{(k)})/a_{ii}$。

5、超松弛迭代法在高斯赛德尔迭代法的基础上引入松弛因子$\omega$,迭代公式为:$x_i^{(k+1)}= x_i^{(k)}+\omega((b_i \sum_{j=1}^{i-1}a_{ij}x_j^{(k+1)}\sum_{j=i}^{n}a_{ij}x_j^{(k)})/ a_{ii} x_i^{(k)})$。

线性代数实验报告

线性代数实验报告

2.输入:for
n=20:80 p1(n)=prod(365-n+1:365)/365^n; p(n)=1-p1(n); end plot(p)
输出:

3: (1) (2) 输入: R = binornd(20,0.25,3,6) 输出: R= 9 8 3 4 6 6 6 3 4 5 6 2 5 6 6 4 7 4 (3)(4) R = binopdf([0:9],20,0.45) R= 0.0000 0.0001 0.0008 0.0040 0.0746 0.1221 0.1623 0.1771
0.0139
0.0365
4:输入: 1.在单元格 A1 中输入“样本数据” ,在单元格 B4 中输入“指标名称” ,在 单元格 C4 中输入“指标数值” ,并在单元格 A2:A21 中输入样本数据。 2.在单元格 B5 中输入“样本容量” ,在单元格 C5 中输入“20” 。 3.计算样本平均行驶里程。在单元格 B6 中输入“样本均值” ,在单元格 C6 中输入公式: “=AVERAGE(A2,A21), ” 4.计算样本标准差。在单元格 B7 中输入“样本标准差” ,在单元格 C7 中 输入公式: “=STDEV(A2,A21)” ,

输出:
5: 输入: R = normrnd(0.5,0.015) load 0.497,0.506 0.518
0.524
0.498
0.511
0.520
0.515
0.512
histfit(0.497 0.506 0.518 0.524 0.498 0.511 0.520 0.515 0.512 ); normplot(0.497 0.506 0.518 0.524 0.498 0.511 0.520 0.515 0.512 ); 输出: R = 0.5066

南京邮电大学数值代数实验

南京邮电大学数值代数实验

数值代数实验数值线性代数实验一一、实验名称:矩阵的LU分解.二、实验目的:用不选主元的LU分解和列主元LU分解求解线性方程组Ax=b, 并比较这两种方法.三、实验内容与要求(1)用所熟悉的计算机语言将不选主元和列主元LU分解编成通用的子程序,然后用编写的程序求解下面的84阶方程组将计算结果与方程组的精确解进行比较,并就此谈谈你对Gauss消去法的看法.(2)写出追赶法求解三对角方程组的过程,并编写程序求该实验中的方程组Gauss消去法:用消去法解方程组的基本思想是用逐次消去未知数的方法把原来方程组Ax=b化为与其等价的三角方程组,而求解三角方程组就容易了。

换句话说,上述过程就是用行的初等变换将原方程组系数矩阵化为简单形式,从而将求解原方程组的问题转化为求解简单方程组的问题。

利用Gauss消去法对线性方程组Ax=b进行求解。

用MATLAB建立m文件DelGauss.m,程序如下:function x=DelGauss(a,b)[n,m]=size(a);nb=length(b);det=1;x=zeros(n,1);for k=1:n-1for i=k+1:nif a(k,k)==0returnendm=a(i,k)/a(k,k);for j=k+1:na(i,j)=a(i,j)-m*a(k,j);endb(i)=b(i)-m*b(k);enddet=det*a(k,k);enddet=det*a(n,n);for k=n:-1:1for j=k+1:nb(k)=b(k)-a(k,j)*x(j);endx(k)=b(k)/a(k,k);End在matlab中输入如下:结果如下:方程组的精确解为x 1=x 2=…=x 84=1.0000,与Gauss 消去法求得的解差距很大,所得结果不够准确,计算简单但其消元过程有时不能进行到底而使求解出现解失真的情况。

数值线性代数实验二一、实验名称:实对称正定矩阵的A的Cholesky分解.二、实验目的:用平方根法和改进的平方根方法求解线性方程组Ax=b.三、实验内容与要求用所熟悉的计算机语言将Cholesky分解和改进的Cholesky分解编成通用的子程序,然后用编写的程序求解对称正定方程组Ax=b,其中(1)b随机的选取,系数矩阵为100阶矩阵(2)系数矩阵为40阶Hilbert矩阵,即系数矩阵A的第i行第j列元素为,向量b的第i个分量为(3)用实验一的程序求解这两个方程组,并比较所有的计算结果,然后评价各个方法的优劣。

数值线性代数_MathCAD实验

数值线性代数_MathCAD实验

算法
MathCAD代码
下 三 角 方
方程组
⎛ ⎜ ⎜⎜⎝
ll1211 ... ln1
l22 ... ln 2
... ...
lnn
⎞ ⎟ ⎟⎟⎠
⎛ ⎜ ⎜⎜⎝
yy12 ... yn
⎞ ⎟ ⎟⎟⎠
=
⎛ ⎜ ⎜⎜⎝
bb12 ... bn
⎞ ⎟ ⎟⎟⎠
解法:
程 (1) y1 = b1 / l11
∑ (前
代)
u x n
k=n+1 nk k
表示零。但MathCAD认为变量 k
=
n
+ 1, n
,由于U
是n
阶矩
阵, un,n+1 没有定义,计算出错。因此用MathCAD编写程序时,应特别注意循环变量的初值和终值。参
看以下代码:
Ub(U, b) := "求解上三角线性系统,下标1开始 n ← rows(U) ⊕ "正确程序"
n ← rows( A)
"先定义n-1个矩阵,存放Gauss变换 "
for i∈ 1 .. n − 1
Li ← identity(n) ⊕ "定义了n-1个单位矩阵"
for k ∈ 1 .. n − 1
for i∈ k + 1 .. n
( )Lk
i,k ←
−Ai , k Ak , k

"第k个Gauss变换阵"
⎛ a11 " a1,i-1 a1,i a1,i+1 " a1,n b1 ⎞

⎜ ⎜
0 0
%# " ai-1,i-1

数值代数qr方法实验报告

数值代数qr方法实验报告

一、引言很多情况下在工程中抽象出来的数学方程组是超定的,没有精确解,这样就需要找一个在某种意义下最接近精确解的解。

设A 是m*n 的实矩阵,22A (A )T x bQ x b -=-,这样2min A y b -就等价与2min (A )T Q x b -,为方便求解,需要A T Q 是上三角矩阵,这样引入QR 分解就比较求解方便。

二、豪斯霍尔德变换豪斯霍尔德变换(Householder transformation )又称初等反射(Elementary reflection ),最初由A.C Aitken 在1932年提出,Alston Scott Householder 在1958年指出了这一变换在数值线性代数上的意义。

这一变换将一个向量变换为由一个超平面反射的镜像,是一种线性变换。

其变换矩阵被称作豪斯霍尔德矩阵,在一般内积空间中的类比被称作豪斯霍尔德算子,超平面的法向量被称作豪斯霍尔德向量。

三、理论依据householder 变换:任意的一个向量x ,经过一个正交变换2**T H I W W =- 后总可以变为一个与之范数相等的另一个向量Hx 。

如上图中所示,记v Hx x =-,2/w v v =,2**TH I W W =-上述H 既为所要求的householder 变换。

具体操作时将需要变化的矩阵的每一列当做一个向量,第一列变为除了第一个元素都为0的向量…第i 列变为除了前i 个元素都为0的向量...为了保证在每次变化时不改变已经变好的0元素,第i 次只变化每列第i 个元素到第n 个元素,每个变化矩阵的形式是[I 0;0 H]。

算法如下:qr_Houserhoilder.m function [Q,R]=qr_Houserhoilder(A) [m,n]=size(A); Q=eye(n); for i=1:nu=house(A(i:m,i));P=eye(m-i+1)-2/(norm(u)^2)*u*u'; A(i:m,i:n)=P*A(i:m,i:n);PP=blkdiag(eye(i-1),P);Q=Q*PP;endR=triu(A);程序house.mfunction u=house(Ai)Ai(1)=Ai(1)+sign(Ai(1))*norm(Ai);u=Ai/norm(Ai);四、数值实验结果:为了保证在一定阶数下,所做的数值试验具有代表性,我们随机产生3个n阶矩阵,随着n的不断变化,得到如下一系列图:(1)A=rand(4,4)A =0.3027 0.7894 0.1793 0.39220.2364 0.7134 0.4350 0.39360.4690 0.0742 0.9747 0.11150.5381 0.6768 0.7245 0.8650[Q,R]=qr_Houserhoilder(A)Q =-0.3735 -0.5369 0.4602 0.6003-0.2916 -0.5439 -0.7840 -0.0668-0.5786 0.6445 -0.2679 0.4219-0.6639 -0.0208 0.3190 -0.6761R =-0.8106 -0.9951 -1.2387 -0.90010 -0.7781 0.2803 -0.37070 0 -0.2886 0.11800 0 0 -0.3286test_qr3err =1.0e-10 *0.1950 0.0120 0.0119 0.3029-111 1.52 2.53 3.54(2)A=rand(5,5)A =0.7575 0.7005 0.6420 0.8233 0.88770.6373 0.4698 0.5815 0.5290 0.37700.6643 0.3036 0.9458 0.7210 0.12950.1056 0.0254 0.3903 0.1048 0.30270.2813 0.3787 0.5302 0.0627 0.1156[Q,R]=qr_Houserhoilder(A)Q =-0.6161 0.4378 0.2968 -0.5805 -0.0598-0.5183 -0.0381 0.2932 0.7098 -0.3743-0.5403 -0.6729 -0.2440 -0.1030 0.4303-0.0859 -0.1847 -0.5513 -0.2507 -0.7693-0.2288 0.5657 -0.6801 0.2928 0.2817R =-1.2295 -0.9280 -1.3629 -1.1944 -0.86480 0.2940 -0.1496 -0.1288 0.29660 0 -0.4455 0.1231 0.09690 0 0 -0.1847 -0.30310 0 0 0 -0.3388test_qr3err =1.0e-10 *0.1722 0.0119 0.0120 0.4239-111 1.52 2.53 3.54(3)A=rand(6,6)A =0.5961 0.8422 0.4279 0.3473 0.2731 0.34860.1335 0.2860 0.2157 0.6181 0.6306 0.19300.4479 0.0467 0.3284 0.4588 0.4228 0.95480.9430 0.7296 0.7951 0.0920 0.0322 0.31140.7581 0.7811 0.4338 0.1512 0.6185 0.12710.8647 0.1359 0.1735 0.9036 0.4393 0.8964 [Q,R]=qr_Houserhoilder(A)Q =-0.3571 -0.5571 0.2402 0.2038 0.4576 0.5035-0.0800 -0.2530 -0.1880 0.8253 -0.1645 -0.4314-0.2684 0.3532 -0.4622 0.2419 -0.3487 0.6399-0.5650 -0.0874 -0.6012 -0.3372 0.2898 -0.3376-0.4542 -0.3266 0.3151 -0.2560 -0.7185 -0.0773-0.5181 0.6217 0.4823 0.1991 0.2045 -0.1760R =-1.6690 -1.1737 -0.9944 -0.8854 -0.7882 -1.09430 -0.7594 -0.2803 0.3166 -0.0940 0.58290 0 -0.3472 0.1832 0.1390 -0.10880 0 0 0.8020 0.5966 0.50220 0 0 0 -0.4714 -0.02290 0 0 0 0 0.4305test_qr3err =1.0e-10 *0.1518 0.0119 0.0120 0.2845-111 1.52 2.53 3.54五、总结与分析由上面的数值试验结果和绘图可知:比较之下,我自己写的houserhoilder程序误差是最大的,CGS与MGS的误差相差不大,系统自带的matlab软件速度是最快的,我自己写的houserhoilder程序还是最慢的。

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

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

数值代数实验报告Numerical Linear Algebra And ItsApplications学生所在学院:理学院学生所在班级:计算数学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-1b(j,j+1)=-1;endfor j=2:Nb(j,j-1)=-1;endfor i=1:NI(i)=-1;endI=diag(I);for i=1:N:N*Nfor j=1:NT(i+j-1,i:i+N-1)=b(j,:);endendfor i=1:N:N*N-Nfor j=1:NT(i+j-1,i+N:i+N-1+N)=I(j,:);endendfor i=1+N:N:N*Nfor j=1:NT(i+j-1,i-N:i-1)=I(j,:);endend求解常数项b的Matlab实现函数如下:%函数名:constant.mfunction b=constant(N)n=N+1;h=1/n;i=1;for y=1/n:1/n:N/nfor x=1/n:1/n:N/nf(i)=2*pi*pi*sin(pi*x)*sin(pi*y);i=i+1;endendb=h*h*f;b=b';四、实验结果(总结/方案)在Matlab运行窗口输入>>A=poisson(5) Enter输出结果A =Columns 1 through 114 -1 0 0 0 -1 0 0 0 0 0-1 4 -1 0 0 0 -1 0 0 0 00 -1 4 -1 0 0 0 -1 0 0 00 0 -1 4 -1 0 0 0 -1 0 00 0 0 -1 4 0 0 0 0 -1 0-1 0 0 0 0 4 -1 0 0 0 -10 -1 0 0 0 -1 4 -1 0 0 00 0 -1 0 0 0 -1 4 -1 0 00 0 0 -1 0 0 0 -1 4 -1 00 0 0 0 -1 0 0 0 -1 4 00 0 0 0 0 -1 0 0 0 0 40 0 0 0 0 0 -1 0 0 0 -10 0 0 0 0 0 0 -1 0 0 00 0 0 0 0 0 0 0 -1 0 00 0 0 0 0 0 0 0 0 -1 00 0 0 0 0 0 0 0 0 0 -10 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 Columns 12 through 220 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 00 -1 0 0 0 0 0 0 0 0 00 0 -1 0 0 0 0 0 0 0 00 0 0 -1 0 0 0 0 0 0 0 -1 0 0 0 -1 0 0 0 0 0 04 -1 0 0 0 -1 0 0 0 0 0 -1 4 -1 0 0 0 -1 0 0 0 00 -1 4 -1 0 0 0 -1 0 0 00 0 -1 4 0 0 0 0 -1 0 00 0 0 0 4 -1 0 0 0 -1 0 -1 0 0 0 -1 4 -1 0 0 0 -10 -1 0 0 0 -1 4 -1 0 0 00 0 -1 0 0 0 -1 4 -1 0 00 0 0 -1 0 0 0 -1 4 0 00 0 0 0 -1 0 0 0 0 4 -10 0 0 0 0 -1 0 0 0 -1 40 0 0 0 0 0 -1 0 0 0 -10 0 0 0 0 0 0 -1 0 0 00 0 0 0 0 0 0 0 -1 0 0 Columns 23 through 250 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 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 -10 -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 ,,,,,,211114=-----+-+ (i,j=1,2……)实验二实验名称: 用Jacobi 迭代法和SOR 迭代法求解方程组 实验时间: 2012年12月13日 星期四 实验成绩: 一、实验目的:通过上机利用Matlab 数学软件采用Jacobi 迭代法和SOR 迭代法来求解方程组,求解过程中了解两种迭代方法的基本思想与迭代过程,并分析两种迭代方法的收敛性和实用用以及他们的异同点。

线性代数实验报告汇总-知识归纳整理

线性代数实验报告汇总-知识归纳整理

数学实验报告题目第一次实验题目一、 实验目的1.熟悉MATLAB 的矩阵初等运算;2.掌握求矩阵的秩、逆、化最简阶梯形的命令; 3.会用MABLAB 求解线性方程组二、 问题求解和程序设计流程1. 已知⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=351503224A ,⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---=112302431B ,在MATLAB 命令窗口中建立A 、B矩阵并对其举行以下操作:(1) 计算矩阵A 的行列式的值det()?A = (2) 分别计算下列各式:B A -2 、 B A *和B A *.、 1-AB 、 B A 1-、 2A 、 T A解:(1) 编写程序如下:A=[4 -2 2;-3 0 5;1 5 3];B=[1 3 4;-2 0 -3;2 -1 1]; a=det(A) 运行结果: a = -158(2)编写程序如下: C=2*A-BD=A*B E=A.*B F=A/BG=A\B H=A*A K=A'运行结果:C =7 -7 0 -4 0 13知识归纳整理求知若饥,虚心若愚。

线性代数实验报告0 11 5D =12 10 247 -14 -7-3 0 -8E =4 -6 86 0 -152 -5 3F =0 0 2.0000-2.7143 -8.0000 -8.14292.42863.0000 2.2857G =0.4873 0.4114 1.00000.3671 -0.4304 0-0.1076 0.2468 0H =24 2 4-7 31 9-8 13 36K =4 -3 1-2 0 52 5 32.在MATLAB中分别利用矩阵的初等变换及函数rank、函数inv求下列矩阵的秩:线性代数实验报告(1) ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡----=4211104532361A 求 Rank(A)=? (2) 3501120010201202B ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦求?1=-B 解:(1)编写程如下:format ratA=[1 -6 3 2;3 -5 4 0;-1 -11 2 4]; rref(A) 运行结果: ans =1 0 0 -8/5 0 1 0 0 0 0 1 6/5 由A 经初等变换后得到的行最简型可知:A 的秩为3。

线性代数实验报告

线性代数实验报告

线性代数实验报告一、实验目的线性代数是一门重要的数学基础课程,它在工程、科学、计算机等领域都有着广泛的应用。

本次实验的目的是通过实际操作和计算,加深对线性代数基本概念和方法的理解,提高运用线性代数知识解决实际问题的能力。

二、实验环境本次实验使用了软件名称软件进行计算和绘图。

三、实验内容(一)矩阵的运算1、矩阵的加法和减法给定两个矩阵 A 和 B,计算它们的和 A + B 以及差 A B。

观察运算结果,验证矩阵加法和减法的规则。

2、矩阵的乘法给定两个矩阵 C 和 D,其中 C 的列数等于 D 的行数,计算它们的乘积 CD。

分析乘法运算的结果,理解矩阵乘法的意义和性质。

(二)行列式的计算1、二阶和三阶行列式的计算手动计算二阶和三阶行列式的值,熟悉行列式的展开法则。

使用软件验证计算结果的正确性。

2、高阶行列式的计算选取一个四阶或更高阶的行列式,利用软件计算其值。

观察行列式的值与矩阵元素之间的关系。

(三)线性方程组的求解1、用高斯消元法求解线性方程组给定一个线性方程组,将其增广矩阵通过初等行变换化为行阶梯形矩阵。

求解方程组的解,并验证解的正确性。

2、用矩阵的逆求解线性方程组对于系数矩阵可逆的线性方程组,计算系数矩阵的逆矩阵。

通过逆矩阵求解方程组,并与高斯消元法的结果进行比较。

(四)向量组的线性相关性1、判断向量组的线性相关性给定一组向量,计算它们的线性组合是否为零向量。

根据计算结果判断向量组的线性相关性。

2、求向量组的极大线性无关组对于给定的向量组,通过初等行变换找出极大线性无关组。

(五)特征值和特征向量的计算1、计算矩阵的特征值和特征向量给定一个矩阵,计算其特征值和对应的特征向量。

验证特征值和特征向量的定义和性质。

2、利用特征值和特征向量进行矩阵对角化对于可对角化的矩阵,将其化为对角矩阵。

四、实验步骤(一)矩阵的运算1、首先在软件中输入矩阵 A 和 B 的元素值。

2、然后使用软件提供的矩阵加法和减法功能,计算 A + B 和 A B 的结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.考虑线性方程 ,其中右端项为
而系数矩阵为 ,这里
矩阵 的元素是服从正态分布的随机数。
2.考虑对称正定线性方程组 ,其中向量 是随机生成的,其元素是服从区间 上均匀分布的随机数,矩阵 ,这里 是随机生成的一个下三角阵,其元素是服从区间 上均匀分布的随机数。
实验过程记录:
1.Guass消去法
#include <stdio.h>
}
p[k]=i;
for (p[k]!=k)
{
for(j=0;j<n;j++)
{
t=A[k][j];
A[k][j]=A[p[k]][j];
A[p[k]][j]=t;
}
}
if (!A[k][k])
return (error);
for(i=k+1;i<n:i++)
A[i][k]/=A[k][k];
{
for(i=k+1;j<n;j++)
ran=rand();
if(min>ran)min=ran;
if(max<ran)max=ran;
}
printf("min=%d\tmax=%d\n",min,max);
return(0);
}
#include <stdio.h>
#include <math.h>
#include "functions.h"
#include <math.h>
#include "fun s.h"
bool collu (double **A,int *p,int n)
{
int i,j,k;
double t;
for(k=0;k<n-1;k++)
{
p[k]=k;
for(i==k+1;i<n;i++)
if(fabs(A[i][k])>fabs(A[p[k]][k]))
思考与深入
通过本实验加深了解了线性方程组直接接法的两种方法。做实验要求我们把基础学扎实,上机实验让我又重新巩固了C语言知识,我的实验是线性方程组的直接解法,刚开始调试代码的时候有时候就是很小的错误导致整个程序不能运行,需要我们一步一步谨慎细致的进行,我们要熟练掌握编程语句,才能更快更准确且熟练地设计出程序。
L[i][j]-=L[j][k]*L[i][k];
}
L[n-1][n-1]=sqrt(L[n-1][n-1]);
}
void Lower(double**L,double*b,int n){
int k,i;
for(k=0;k<n-1;k++){
b[k]/=L[k][k];
for(i=k+1;i<n;i++)
数值线性代数实验报告
实验序号:日期:2014年4月8日
班级
信计二班
姓名
周慧娟
学号
1201214111
实验名称
线性方程组的直接解法
问题背景描述:
解方程组是常见的数学问题之一,也是众多应用领域中不可避免的问题之一。
目前还没有一般的解析方法来求解线性方程组,能够解出方程的近似解,则可以认为求解问题已基本解决,至少可以实际需求。
若 的顺序主子阵 ( =1,2,.....,n-1)均非奇异,则存在唯一的单位下三角阵 和上三角阵 ,使得 。
⒉平方根法
若 对称正定,则存在一个对角元均为正数的下三角阵 ,使得上式称为Cholesky分解,其中的 称作 的Cholesky因子。
实验所用软件及版本:window7下Vc++6.0
主要内容:
void Cholesky(double**L,int n){
int i,j,k;
for(k=0;k<n-1;k++){
L[k][k]=sqrt(L[k][k]);
for(i=k+1;i<n;i++)
L[i][k]/=L[k][k];
for(j=k+1;j<n;lt;n;i++)
for(int j=0;j<n;j++)
printf("%8.3f",x[j]);
printf("\n");
}
实验结果报告
Gauss消去法适用于求解中小规模线性方程组的求解,一般用于系数矩阵没有任何特殊结构的线性方程组。若系数矩阵具有某种特殊形式,则为了尽可能的减少计算量与储存量,需采用其他专门方法来求解。平方根法就是求解对称正定线性方程组最常用的的方法,对具有对称正定系数矩阵的线性方程组来说,平方根法要比高斯消去法快得多。
for(i=k+1;i<n;i++)
A[i][j]=A[k][j]*A[i][k];
}
return (ok);
}
2.平方根法
#include <stdio.h>
#include <stdlib.h>
int main(){
int min,max,ran;
min=max=rand();
for(int k=0;k<1000000;k++){
b[i]-=b[k]*L[i][k];
}
b[n-1]/=L[n-1][n-1];
}
void TLower(double**L,double*b,int n){
int i,k;
for(k=n-1;k>0;k--){
b[k]/=L[k][k];
for(i=0;i<k;i++)
b[i]-=b[k]*L[k][i];
实验目的:
本实验主要介绍一些有效的求解方程的数值方法:guass法和平方根法。同时要求大家学会如何利用Vc++6.0来求方程的近似解。
实验方法与原理:
1.Guass消去法
⑴主元 ( =1,2,....,k)均不为零的充分必要条件是 的 阶顺序主子阵 ( =1,2,.........,k)都是非奇异的。
}
b[0]/=L[0][0];
}
void showM(double**L,int n){
int i,j;
for(i=0;i<n;i++){
for(j=0;j<=i;j++)
printf("%8.3f",L[i][j]);
printf("\n");
}
}
void showV(double*x,int n){
相关文档
最新文档