数值分析第一次作业matlab实验报告
- 格式:doc
- 大小:50.00 KB
- 文档页数:5
实验一 数学模型的MatlAB 描述一、MatlAB 中数学模型的表示MatlAB 中数学模型的表示主要有三种基本形式:传递函数分子/分母多项式模型、传递函数零极点增益模型和状态空间模型。
它们各有特点,有时需在各种模型之间进行转换。
1. 传递函数分子/分母多项式模型当传递函数为nn n nm m m m a s a sa s ab s b sb sb s G ++++++++=----11101110)(时,在MatlAB 中,直接用分子、分母的系数表示,即],,,[10m b b b num = ],,,[10n a a a d e n = ),()(d e n num tf s G =例1:已知一系统的传递函数2432328()3842ss G s s s s s ++=++++,提取其分子和分母多项式,并绘制零极点图*。
>> num=[3 2 8]; den=[1 3 8 4 2]; G=tf(num,den) [tt,ff]=tfdata(G ,'v') pzmap(G)grid on 结果如下:2. 传递函数的零极点增益模型当传递函数为)())(()())(()(1010n m p s p s p s z s z s z s Ks G ------=时,在MatlAB 中,用[z,p,k]矢量组表示,即[][][]),,()(,,,,,1010k p z zpk s G K k p p p p z z z z n m ====例2:求一传递函数222328()(61)(24)s s G s s s s s ++=++++的零极点及其增益,并绘制零极点图。
>> num=[3 2 8];den=conv([1 6 12],[1 2 4]); G=tf(num,den) GG=zpk(G)[z,p,k]=zpkdata(G ,'v') pzmap(G) grid结果如下:3.状态空间模型当系统的数学模型为状态空间表达式{BuAXX+='+=DuCXY时,在MatlAB中,用[A、B、C、D]矩阵组表示,即系统表示为()DCBAss、、、实验3:已知两系统串联,其中2132265452s sGs s s++=+++,222712432s sGs s++=++,求此串联系统的总的传递函数。
数值分析matlab实验报告数值分析MATLAB实验报告引言:数值分析是一门研究利用计算机进行数值计算和解决数学问题的学科。
它在科学计算、工程技术、金融等领域中有着广泛的应用。
本实验旨在通过使用MATLAB软件,探索数值分析的基本概念和方法,并通过实际案例来验证其有效性。
一、插值与拟合插值和拟合是数值分析中常用的处理数据的方法。
插值是通过已知数据点之间的函数关系,来估计未知数据点的值。
拟合则是通过一个函数来逼近一组数据点的分布。
在MATLAB中,我们可以使用interp1函数进行插值计算。
例如,给定一组离散的数据点,我们可以使用线性插值、多项式插值或样条插值等方法,来估计在两个数据点之间的未知数据点的值。
拟合则可以使用polyfit函数来实现。
例如,给定一组数据点,我们可以通过最小二乘法拟合出一个多项式函数,来逼近这组数据的分布。
二、数值积分数值积分是数值分析中用于计算函数定积分的方法。
在实际问题中,往往无法通过解析的方式求得一个函数的积分。
这时,我们可以使用数值积分的方法来近似计算。
在MATLAB中,我们可以使用quad函数进行数值积分。
例如,给定一个函数和积分区间,我们可以使用quad函数来计算出该函数在给定区间上的定积分值。
quad函数使用自适应的方法,可以在给定的误差限下,自动调整步长,以保证积分结果的精度。
三、常微分方程数值解常微分方程数值解是数值分析中研究微分方程数值解法的一部分。
在科学和工程中,我们经常遇到各种各样的微分方程问题。
而解析求解微分方程往往是困难的,甚至是不可能的。
因此,我们需要使用数值方法来近似求解微分方程。
在MATLAB中,我们可以使用ode45函数进行常微分方程数值解。
例如,给定一个微分方程和初始条件,我们可以使用ode45函数来计算出在给定时间范围内的解。
ode45函数使用龙格-库塔方法,可以在给定的误差限下,自动调整步长,以保证数值解的精度。
结论:本实验通过使用MATLAB软件,探索了数值分析的基本概念和方法,并通过实际案例验证了其有效性。
数值分析matlab完整版实验报告范文运用matlab软件实现,数值分析中求解非线性方程的根,实验数据完整,格式完整《数值分析》报告运用Matlab求解非线性方程的根学院:专业:班级:姓名:学号:运用matlab软件实现,数值分析中求解非线性方程的根,实验数据完整,格式完整1.目的掌握非线性方程求根的方法,并选取实例运用MATLAB软件进行算法的实现,分别用牛顿法、弦截法和抛物线法求非线性方程的根。
2.报告选题报告选取《数值分析(第四版)》290页习题7作为研究对象,即求f(某)某33某10在某02附近的根。
根的准确值某某1.87938524...,要求结果准确到四位有效数字。
(1)用牛顿法;(2)用弦截法,取某02,某11.9;(3)用抛物线法,取某01,某13,某22。
3.理论基础(1)牛顿迭代法牛顿迭代法是一种特殊的不动点迭代法,其计算公式为f(某k),k0,1,2,...f'(某k)f(某)f'(某)其迭代函数为(某)某牛顿迭代法的收敛速度,当f(某某)0,f'(某某)0,f''(某某)0时,容易证明,f'(某某)0,''(某某)f''(某某)0f'(某某),牛顿迭代法是平方收敛的,且limek1f''(某某)ke22f'(某某)。
k(2)弦截法将牛顿迭代法中的f'(某k)用f(某)在某k1,某k处的一阶差商来代替,即可得弦截法f(某k)(某k某k1)f(某k)f(某k1)(3)抛物线法运用matlab软件实现,数值分析中求解非线性方程的根,实验数据完整,格式完整弦截法可以理解为用过(某k1,f(某k1)),(某kf(某k))两点的直线方程的根近似替f(某)0的根。
若已知f(某)0的三个近似根某k,某k1,某k2用过(某k,f(某某(f,k某)k)某,某的抛物线方程的根近似代替())f(某)0的k)),k11(2,(fk2根,所得的迭代法称为抛物线法,也称密勒(Muller)法。
matlab入门实验报告Matlab入门实验报告引言:Matlab是一种功能强大的数值计算和科学计算软件,广泛应用于工程、科学和金融等领域。
本实验报告旨在分享我在学习和使用Matlab过程中的一些经验和心得,希望对初学者有所帮助。
一、Matlab的基本操作Matlab的基本操作包括变量定义、运算符使用、矩阵操作等。
通过简单的例子,我们可以快速上手Matlab。
首先,我们可以定义一个变量并进行简单的运算。
例如,我们定义一个变量a,并赋值为5,然后进行加法运算。
a = 5;b = a + 3;disp(b);接下来,我们可以进行矩阵的操作。
例如,我们定义一个3x3的矩阵A,并对其进行转置操作。
A = [1 2 3; 4 5 6; 7 8 9];B = A';disp(B);二、Matlab的图形绘制功能Matlab具有强大的图形绘制功能,可以绘制各种类型的图形,如曲线图、散点图、柱状图等。
下面是一个简单的例子,展示了如何使用Matlab绘制曲线图。
首先,我们定义一个自变量x和一个因变量y,并生成一组数据。
x = linspace(0, 2*pi, 100);y = sin(x);然后,我们使用plot函数将数据绘制成曲线图。
plot(x, y);通过设置不同的参数,我们可以对图形进行进一步的美化和定制。
例如,我们可以设置x轴和y轴的标签,并添加图例。
xlabel('x');ylabel('y');legend('sin(x)');三、Matlab的数据分析功能Matlab提供了丰富的数据分析功能,可以进行数据的统计、拟合、回归等操作。
下面是一个简单的例子,展示了如何使用Matlab进行线性回归分析。
首先,我们生成一组随机数据,并假设其满足线性关系。
x = linspace(0, 10, 100);y = 2*x + 3 + randn(size(x));然后,我们使用polyfit函数进行线性回归分析,并得到拟合的系数。
数值分析matlab实验报告《数值分析MATLAB实验报告》摘要:本实验报告基于MATLAB软件进行了数值分析实验,通过对不同数学问题的数值计算和分析,验证了数值分析方法的有效性和准确性。
实验结果表明,MATLAB在数值分析领域具有较高的应用价值和实用性。
一、引言数值分析是一门研究利用计算机进行数值计算和分析的学科,其应用范围涵盖了数学、物理、工程等多个领域。
MATLAB是一种常用的数值计算软件,具有强大的数值分析功能,能够进行高效、准确的数值计算和分析,因此在科学研究和工程实践中得到了广泛的应用。
二、实验目的本实验旨在通过MATLAB软件对数值分析方法进行实验验证,探究其在不同数学问题上的应用效果和准确性,为数值分析方法的实际应用提供参考和指导。
三、实验内容1. 利用MATLAB进行方程求解实验在该实验中,利用MATLAB对给定的方程进行求解,比较数值解和解析解的差异,验证数值解的准确性和可靠性。
2. 利用MATLAB进行数值积分实验通过MATLAB对给定函数进行数值积分,比较数值积分结果和解析积分结果,验证数值积分的精度和稳定性。
3. 利用MATLAB进行常微分方程数值解实验通过MATLAB对给定的常微分方程进行数值解,比较数值解和解析解的差异,验证数值解的准确性和可靠性。
四、实验结果与分析通过对以上实验内容的实际操作和分析,得出以下结论:1. 在方程求解实验中,MATLAB给出的数值解与解析解基本吻合,验证了MATLAB在方程求解方面的高准确性和可靠性。
2. 在数值积分实验中,MATLAB给出的数值积分结果与解析积分结果基本吻合,验证了MATLAB在数值积分方面的高精度和稳定性。
3. 在常微分方程数值解实验中,MATLAB给出的数值解与解析解基本吻合,验证了MATLAB在常微分方程数值解方面的高准确性和可靠性。
五、结论与展望本实验通过MATLAB软件对数值分析方法进行了实验验证,得出了数值分析方法在不同数学问题上的高准确性和可靠性。
数值分析实验报告matlab数值分析实验报告引言:数值分析是一门研究利用计算机数值方法解决数学问题的学科,它在科学计算、工程设计、金融分析等领域具有重要的应用价值。
本实验报告旨在通过使用MATLAB软件,探索数值分析的基本原理和方法,并通过实际案例加深对数值分析的理解。
一、误差分析在数值计算中,误差是无法避免的。
误差分析是数值分析中的重要一环,它帮助我们了解数值计算的准确性和稳定性。
在实验中,我们通过计算机模拟了一个简单的数学问题,并分别计算了绝对误差和相对误差。
通过比较不同算法的误差大小,我们可以选择最适合的算法来解决实际问题。
二、插值与拟合插值和拟合是数值分析中常用的方法,它们可以通过已知的数据点来推导出未知数据点的近似值。
在本实验中,我们通过MATLAB的插值函数和拟合函数,分别进行了插值和拟合的实验。
通过比较不同插值和拟合方法的结果,我们可以选择最适合的方法来处理实际问题。
三、数值积分数值积分是数值分析中的重要内容,它可以用来计算曲线下的面积或函数的积分值。
在实验中,我们通过MATLAB的数值积分函数,对一些简单的函数进行了积分计算。
通过比较数值积分和解析积分的结果,我们可以评估数值积分的准确性和稳定性,并选择最适合的积分方法来解决实际问题。
四、常微分方程的数值解法常微分方程是数值分析中的重要内容,它可以用来描述许多自然现象和工程问题。
在实验中,我们通过MATLAB的常微分方程求解函数,对一些简单的微分方程进行了数值解法的计算。
通过比较数值解和解析解的结果,我们可以评估数值解法的准确性和稳定性,并选择最适合的数值解法来解决实际问题。
五、线性方程组的数值解法线性方程组是数值分析中的经典问题,它在科学计算和工程设计中广泛应用。
在实验中,我们通过MATLAB的线性方程组求解函数,对一些简单的线性方程组进行了数值解法的计算。
通过比较数值解和解析解的结果,我们可以评估数值解法的准确性和稳定性,并选择最适合的数值解法来解决实际问题。
WORD格式整理数学实验报告姓名:班级:学号:第一次实验任务过程: a=1+3i; b=2-i; 结果: a+b =3.0000 + 2.0000ia-b =-1.0000 + 4.0000i a*b = 5.0000 + 5.0000i a/b = -0.2000 + 1.4000i过程: x=-4.5*pi/180; y=7.6*pi/180;结果: sin(abs(x)+y)/sqrt(cos(abs(x+y))) =0.2098 心得:对于matlab 中的角度计算应转为弧度。
(1)过程: x=0:0.01:2*pi; y1=sin(x); y2=cos(x); y3=exp(x); y4=log(x);plot(x,y1,x,y2,x,y3,x,y4) plot(x,y1,x,y2,x,y3,x,y4)./,,,,2,311b a b a b a b a i b i a ⨯-+-=+=计算、设有两个复数6,7,5.4)cos()sin(2=-=++y x y x y x ,其中、计算的图形。
下分别绘制)同一页面四个坐标系)同一坐标系下(、在(x y e y x y x y x ln ,,cos ,sin 213====结果:(2)过程:>> subplot(2,2,1) >> plot(x,y1)>> subplot(2,2,2)>> plot(x,y2)>> subplot(2,2,3)>> plot(x,y3)>> subplot(2.2.4)>> subplot(2,2,4)>> plot(x,y4)结果:心得:在matlab中,用subplot能够实现在同一页面输出多个坐标系的图像,应注意将它与hold on进行区别,后者为在同一坐标系中划出多条曲线。
5、随机生成一个3x3矩阵A及3x2矩阵B,计算(1)AB,(2)对B中每个元素平方后得到的矩阵C,(3)sinB,(4)A的行列式,(5)判断A是否可逆,若可逆,计算A的逆矩阵,(6)解矩阵方程AX=B,(7)矩阵A中第二行元素加1,其余元素不变,得到矩阵D,计算D。
学生实验报告实验课程名称数值分析开课实验室数学与统计学院实验室学院2010 年级数学与应用数学专业班01班学生姓名学号开课时间2012 至2013 学年第一学期end y=x;format short ;% 设置为默认格式显示,显示5位(2) 建立MATLAB 界面利用MA TLAB 的GUI 建立如下界面求解线性方程组:详见程序。
五、 计算实例、数据、结果、分析下面我们对以上的结果进行测试,求解:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡------725101391444321131243301024321x x x x 输入数据后点击和,得到如下结果:更改以上数据进行测试,求解如下方程组:123443211343212343112341x x x x ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦⎣⎦得到如下结果:六、 实验中遇到的问题及解决办法在本实验中,遇到的问题主要有两个:(1) 如何将上述的Gauss 消元法的算法在MA TLAB 中实现针对此问题我借鉴了网上以及 课本上的算法的MATLAB 实现的程序;(2) 如何将建立界面使得可以随意输入想要求解的相关矩阵后就可以直接求解针对此问题,我通过网上的一些关于MA TLAB 的GUI 设计的相关资料,总结经验完成了此项任务。
七、 实验结论通过以上的测试,我们发现以上算法和程序能够求出线性方程组的比较精确解。
八、 参考文献[1]杨大地,王开荣 .2006.数值分析.北京:科学出版社[2]何光辉.2008. 数值分析实验. 重庆大学数理学院数学实验教学中心 [3]百度文库,百度知道教师签名年 月 日详见程序。
五、计算实例、数据、结果、分析下面我们对以上的问题进行测试:输入数据:计算结果如下:当x=2.101时,x=4.234时,同理可以测试(4)中的5的值。
六、实验中遇到的问题及解决办法在本实验中,遇到的问题主要有两个:(3)如何将上述的插值的算法在MA TLAB中实现针对此问题我借鉴了网上以及课本上的算法的MATLAB实现的程序;(4)如何将建立界面使得可以随意输入想要求解的相关矩阵后就可以直接求解针对此问题,我通过网上的一些关于MA TLAB的GUI设计的相关资料,总结经验完成了此项任务。
matlab实验报告实验报告:Matlab实验分析1. 实验目的本实验旨在通过Matlab软件完成一系列数值计算和数据分析的任务,包括绘制曲线、解方程、矩阵运算等,以加深对Matlab软件的理解和掌握。
2. 实验内容2.1 绘制函数曲线首先,我们通过在Matlab中输入函数的表达式来绘制函数曲线。
例如,我们可以输入y = sin(x)来绘制正弦函数的曲线。
另外,我们还可以设置曲线的颜色、线型和坐标轴范围等。
2.2 解方程接下来,我们使用Matlab来解方程。
对于一元方程,我们可以使用solve函数来求出方程的解。
例如,我们输入syms x; solve(x^2 - 2*x - 8)来解方程x^2 - 2x - 8 = 0。
而对于多元方程组,我们可以使用solve函数的向量输入形式来求解。
例如,我们输入syms x y; solve(x^2 + y^2 - 1, x - y - 1)来求解方程组x^2 + y^2 - 1 = 0和x - y - 1 = 0的解。
2.3 矩阵运算Matlab也可以进行矩阵运算。
我们可以使用矩阵相乘、相加和取逆等运算。
例如,我们可以输入A = [1 2; 3 4]和B = [5 6;7 8]来定义两个矩阵,然后使用A * B来计算它们的乘积。
3. 实验结果与分析在本实验中,我们成功完成了绘制函数曲线、解方程和矩阵运算等任务。
通过Matlab软件,我们可以快速、准确地进行数值计算和数据分析。
使用Matlab的高级函数和工具箱,我们可以更方便地处理复杂的数值计算和数据分析问题。
4. 实验总结通过本次实验,我们进一步加深了对Matlab软件的理解和掌握。
Matlab提供了丰富的函数库和工具箱,适用于各种不同的数值计算和数据分析任务。
在日常科研和工程实践中,Matlab是一个非常强大和方便的工具,可以帮助我们更高效地完成任务。
几种线性方程组迭代算法的MATLAB 实现和性能比较用有限差分方法(五点差分格式)求解正方形域上的Poisson 方程边值问题用MA TLAB 语言编写算法程序求解线性方程组f Au =的算法程序,采用下列方法,比较计算结果和算法性能,对计算结果给出讨论。
一、算法实现解:由差分格式可得:2,1,1,,1,10,1,,0,14 (1,)0(0,)i j i j i j i j i j ij j N j i i N u u u u u h f i j N u u u u i j N -+-+++----=≤≤====≤≤,写成矩阵形式:Au=f11112222......,,...........NN N N A Iv b I A v b A v b I IA v b -⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥===⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦其中:4114....,.....114N N ii ii A A R ⨯-⎡⎤⎢⎥-⎢⎥⎢⎥=∈⎢⎥⎢⎥⎢⎥-⎢⎥-⎣⎦其中:11,12,1,121,22,2,21,2,,2211,12,1,121,22,2,221,2,,(,,...,),(,,...,),......,(,,...,)(,,...,),(,,...,),......,(,,...,)T T N N TN N N N N T T N N TN N N N N v u u u v u u u v u u u b h f f f b h f f f b h f f f ======(1)用Jacobi 迭代法求解线性方程组f Au = function[u,k,er,t]=xsgs(n) % Jacobi 迭代法⎪⎩⎪⎨⎧====<<==⎪⎪⎭⎫⎝⎛∂∂+∂∂-0)1,()0,(),1(),0(1,0,2),(2222x u x u y u y u y x y x f y u x u % U 表示方程组的解;h 表示步长;A 表示迭代矩阵;k 表示迭代次数;n 表示非边界点数% f 表示线性方程组A*U=f的右端矩阵f ;e 表示允许误差界;er 表示迭代误差% t 表示计算时间tic;b(2:n+1,2:n+1)=(n+1)^(-2)*2;u=zeros(n+2,n+2);e=10^(-9);for k=1:1000 %迭代求解er=0;ub=u;for j=2:n+1for i=2:n+1u(i,j)=(ub(i-1,j)+ub(i+1,j)+ub(i,j-1)+ub(i,j+1)+b(i,j))/4;er=er+abs(u(i,j)-ub(i,j)); %估计当前误差endender=er/n^2;if er<e,break;end %判断是否达到计算精度,如果达到则退出循环endtoc;t=toc;end计算结果:u =0 0 0 0 0 0 0 0 0 0 00 0.0256 0.0413 0.0508 0.0560 0.0577 0.0560 0.0508 0.0413 0.0256 00 0.0413 0.0686 0.0859 0.0955 0.0986 0.0955 0.0859 0.0686 0.0413 00 0.0508 0.0859 0.1088 0.1216 0.1258 0.1216 0.1088 0.0859 0.0508 00 0.0560 0.0955 0.1216 0.1364 0.1412 0.1364 0.1216 0.0955 0.0560 00 0.0577 0.0986 0.1258 0.1412 0.1462 0.1412 0.1258 0.0986 0.0577 00 0.0560 0.0955 0.1216 0.1364 0.1412 0.1364 0.1216 0.0955 0.0560 00 0.0508 0.0859 0.1088 0.1216 0.1258 0.1216 0.1088 0.0859 0.0508 00 0.0413 0.0686 0.0859 0.0955 0.0986 0.0955 0.0859 0.0686 0.0413 00 0.0256 0.0413 0.0508 0.0560 0.0577 0.0560 0.0508 0.0413 0.0256 00 0 0 0 0 0 0 0 0 0 0k = 304er = 9.7771e-10t = 0.0140Au(2)用块Jacobi迭代法求解线性方程组ffunction [ u,k ,er,t] = xsbgs( n )%块Jacobi迭代法% u 表示方程组的解h 表示步长;k 表示迭代次数;n 表示非边界点数;% f 表示线性方程组A*u=f的右端矩阵f;q 表示n+2维向量;a 表示方程组系数矩阵的下对角线元素% b 表示方程组系数矩阵的主对角线元素;c 表示方程组系数矩阵的上对角线元素;d 表示追赶法所求方程的右端向量% e 表示允许误差界;er 表示迭代误差;l 表示系数矩阵A所分解成的下三角阵L中的下对角线元素l(i);z 表示系数矩阵A所分解成的上三角阵U中的主对角线元素z(i)tic;f=2*1/(n+1)^2*ones(n+2,n+2);a=-1*ones(1,n);b=4*ones(1,n);c=-1*ones(1,n);u=zeros(n+2,n+2);e=10^(-9);for k=1:1000 %迭代求解er=0;ub=u;for j=2:n+1d(1:n)=f(2:n+1,j)+ub(2:n+1,j-1)+ub(2:n+1,j+1);x=zg(a,b,c,d); %用追赶法求解u(2:n+1,j)=x';er=er+norm(ub(:,j)-u(:,j),1);ender=er/n^2;if er<e,break;end %判断是否达到计算精度,如果达到则退出循环endtoc;t=toc;end计算结果:u =0 0 0 0 0 0 0 0 0 0 00 0.0256 0.0413 0.0508 0.0560 0.0577 0.0560 0.0508 0.0413 0.0256 00 0.0413 0.0686 0.0859 0.0955 0.0986 0.0955 0.0859 0.0686 0.0413 00 0.0508 0.0859 0.1088 0.1216 0.1258 0.1216 0.1088 0.0859 0.0508 00 0.0560 0.0955 0.1216 0.1364 0.1412 0.1364 0.1216 0.0955 0.0560 00 0.0577 0.0986 0.1258 0.1412 0.1462 0.1412 0.1258 0.0986 0.0577 00 0.0560 0.0955 0.1216 0.1364 0.1412 0.1364 0.1216 0.0955 0.0560 00 0.0508 0.0859 0.1088 0.1216 0.1258 0.1216 0.1088 0.0859 0.0508 00 0.0413 0.0686 0.0859 0.0955 0.0986 0.0955 0.0859 0.0686 0.0413 00 0.0256 0.0413 0.0508 0.0560 0.0577 0.0560 0.0508 0.0413 0.0256 00 0 0 0 0 0 0 0 0 0 0k = 163er =9.5903e-10t = 0.4118Au (3)用共轭斜量法求解线性方程组f function [x,k,t] = cg( n )%共轭向量法求解线性方程组a=zeros(n^2);for i=1:n^2 %储存A矩阵a(i,i)=4;if i+n<n^2+1a(i,i+n)=-1;a(i+n,i)=a(i,i+n);endif mod(i,n)~=0a(i,i+1)=-1;a(i+1,i)=a(i,i+1);endendfor i=1:n^2 %储存b和初始解b(i,1)=0.02;x(i,1)=0;endk=0;r=b-a*x;p=r;q0=r'*r;tic;while q0>1e-9k=k+1;w=a*p;t=q0/(p'*w);%求迭代步长x=x+t*p;r=r-t*w;q=r'*r;s=q/q0;p=r+s*p;%新的搜索方向q0=q;endtoc;t=toc;x=reshape(x,9,9);endx =0.0256 0.0413 0.0508 0.0560 0.0577 0.0560 0.0508 0.0413 0.02560.0413 0.0686 0.0859 0.0955 0.0986 0.0955 0.0859 0.0686 0.04130.0508 0.0859 0.1088 0.1216 0.1258 0.1216 0.1088 0.0859 0.05080.0560 0.0955 0.1216 0.1364 0.1412 0.1364 0.1216 0.0955 0.05600.0577 0.0986 0.1258 0.1412 0.1462 0.1412 0.1258 0.0986 0.05770.0560 0.0955 0.1216 0.1364 0.1412 0.1364 0.1216 0.0955 0.05600.0508 0.0859 0.1088 0.1216 0.1258 0.1216 0.1088 0.0859 0.05080.0413 0.0686 0.0859 0.0955 0.0986 0.0955 0.0859 0.0686 0.04130.0256 0.0413 0.0508 0.0560 0.0577 0.0560 0.0508 0.0413 0.0256k=12;t =0.0035二、结果分析和总结1、在相同的精度要求下,块Jacobi迭代法迭代次数与点块Jacobi迭代法相比明显要少。
这是由于求解的方程组规模比点迭代法小得多,所以速度较快,迭代次数较少。
2、在相同的精度要求下,共轭向量法与两种Jacobi迭代法相比更加迅速,迭代次数大大减少,从算法时间复杂度和空间复杂度来看都是非常简单的算法。