实验2追赶法算法设计及MATLAB实现
matlab追赶法解常微分方程
![matlab追赶法解常微分方程](https://img.taocdn.com/s3/m/14ceb5c203d276a20029bd64783e0912a3167c10.png)
研究领域:数学、计算机科学文章标题:深入探讨matlab追赶法解常微分方程在数学和计算机科学领域中,常微分方程是一个重要且广泛应用的课题。
而matlab追赶法作为常微分方程的求解方法,在实际应用中具有重要意义。
本文将以深度和广度兼具的方式,对matlab追赶法解常微分方程这一主题展开全面评估,并撰写一篇有价值的文章,同时结合个人观点和理解,为读者提供深刻的思考。
一、matlab追赶法解常微分方程简介1.1 matlab追赶法基本原理matlab追赶法,又称托马斯算法,是一种用于求解三对角线性方程组的方法。
在常微分方程的数值解法中,常常会遇到需要求解三对角线性方程组的情况,而matlab追赶法正是针对这一问题而提出的高效算法。
1.2 追赶法在常微分方程求解中的应用常微分方程在实际问题中有着广泛的应用,而求解常微分方程的过程中往往需要用到追赶法。
追赶法不仅可以提高计算效率,还可以有效地解决数值稳定性和精度的问题,因此在工程和科学计算中得到了广泛的应用。
二、深入探讨matlab追赶法解常微分方程2.1 算法实现及优化matlab追赶法的实现涉及到矩阵运算、追赶过程和追赶系数的求解等关键步骤。
如何针对不同类型的方程组进行算法优化,是一个需要深入探讨的问题。
通过优化算法,可以提高追赶法的计算效率和数值稳定性,使其在常微分方程求解中发挥更大的作用。
2.2 算法的数值分析通过数值分析,可以更加深入地了解matlab追赶法在解常微分方程过程中的数值特性。
包括收敛性、稳定性、误差分析等方面,这些都是影响算法性能和应用效果的重要因素,需要进行深入的研究和分析。
三、对matlab追赶法解常微分方程的个人观点和理解3.1 算法的优势与局限性matlab追赶法作为一种高效的求解算法,具有较好的稳定性和精度,特别适合于大规模的常微分方程求解。
但在某些特定问题上,追赶法的适用性和效率仍然存在局限性,需要进行合理的选择和应用。
四人追击matlab课程设计
![四人追击matlab课程设计](https://img.taocdn.com/s3/m/db037796f71fb7360b4c2e3f5727a5e9846a2776.png)
四人追击matlab课程设计一、课程目标知识目标:1. 理解并掌握MATLAB软件的基本操作和界面功能。
2. 学习使用MATLAB进行基础编程,包括变量定义、数据类型、运算符和流程控制。
3. 掌握运用MATLAB解决追击问题的数学模型,包括坐标转换和速度时间关系的计算。
技能目标:1. 能够运用MATLAB编写程序,模拟并解决四人追击问题,展示问题解决的动态过程。
2. 培养学生运用MATLAB软件进行数据分析和处理的能力,特别是解决实际问题的能力。
3. 增强学生团队协作和问题解决能力,通过小组讨论和实践操作,优化解决方案。
情感态度价值观目标:1. 培养学生对计算机编程和数学建模的兴趣,激发他们探究科学问题的热情。
2. 增强学生面对复杂问题时的耐心和毅力,培养他们积极向上的学习态度。
3. 通过团队协作,强化学生的集体荣誉感,树立正确的合作与竞争意识。
课程性质:本课程设计属于应用实践类课程,注重将理论知识与实践操作相结合,通过解决具体的追击问题,深化对数学和编程知识的理解和应用。
学生特点:假设学生为高中二年级学生,具备一定的数学基础和逻辑思维能力,对计算机编程有初步了解,好奇心强,喜欢探索和解决实际问题。
教学要求:教师需提供明确的学习指导,引导学生通过小组合作完成课程任务,注重过程评价和成果评价相结合,确保学生达到预定的学习目标。
二、教学内容本课程教学内容紧密围绕课程目标,选取以下内容进行组织:1. MATLAB软件操作与界面功能介绍:使学生熟悉软件环境,掌握基本操作。
- 教材章节:第一章 MATLAB入门2. MATLAB基础编程:讲解变量定义、数据类型、运算符和流程控制等。
- 教材章节:第二章 MATLAB编程基础3. 数学建模:建立追击问题的数学模型,包括坐标转换和速度时间关系计算。
- 教材章节:第三章 数学建模与仿真4. 编程实践:分组进行MATLAB编程,解决四人追击问题。
- 教材章节:第四章 程序设计与调试5. 团队协作与问题解决:培养学生团队协作能力,共同优化解决方案。
追赶法构造过程
![追赶法构造过程](https://img.taocdn.com/s3/m/e7bfa34be45c3b3567ec8bd4.png)
追赶法构造过程追赶法仍然保持LU 分解特性,它是一种特殊的LU 分解。
追赶法充分利用了系数矩阵的三对角特点,而且使之分解更简单,得到对三对角线性方程组的快速解法。
解出。
及可由时,当,表示,则三对角方程的矩阵若记的计算公式,为:和的及的元素于是得计算,,,有:由矩阵乘法及相等定义y Ux d Ly LU A d Ax d d d d p b q n k c q a p b q q U p L n k c b p q a q p b q T n k k k k k k k k k i i i k k k k k k k k k =====-========+==--------),,,(),,3,2(),,3,2(21111111111111 γγγγγ⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡----n n nn n n n n q q q p p p b a c b a c b a c b Doolittle 1221132111222111111γγγ 分解形式矩阵2) 追赶法算法1.输入变量个数n 、系数矩阵对应的三个向量a,b,c 、常数项b2. For k=2,3,…,n2.1 如果b k-1=0,则输出“追赶法失败”提示并终止2.2 a k ⇐ a k /b k-12.3 b k ⇐b k - a k *c k-12.4 d k ⇐d k - a k *d k-13.For k=n,n-1,…,13.1 x k ⇐ (d k - c k *x k+1)/b k时不能进行。
消元法的缺点,即当在消元法,因此也存来源于空间,但是因为追赶法节省了计算时间和存贮程,。
追赶法的特殊求解过法次数仅有较简单,计算量、乘除追赶法。
组的方法亦称为追赶法用这组公式解线性方程,,,分解的计算公式:综合以上,求解出计算公式为:0451,,1)(,,3,21,,2,1)(,,3,2111111111111=-⎪⎪⎪⎩⎪⎪⎪⎨⎧-=-==-==-====--=-===-==+---+-k k k k k k n n n k k k kk k k k k k k k k k k k nn n k k k k q Gauss Gauss n n k q x c y x q y x y p d y n k c p b q q a p d y b q Doolittle n n k q x c y x q y x nk y p d y d y注:因为三对角矩阵的非零元素都集中在三条对角线上,因此只用三个向量a,b,c来存储系数矩阵,这样可以把二维数据的存储变为一维数据存储。
Matlab中的多目标追踪算法
![Matlab中的多目标追踪算法](https://img.taocdn.com/s3/m/ecfd4be2cf2f0066f5335a8102d276a201296068.png)
Matlab中的多目标追踪算法1. 引言多目标追踪是计算机视觉和机器学习领域的一个重要问题,它涉及到在一系列图像帧中同时跟踪多个目标的位置和行为。
在实际应用中,多目标追踪算法被广泛应用于视频监控、自动驾驶、智能交通等领域。
Matlab作为一种强大的科学计算软件,提供了丰富的图像处理和计算机视觉工具箱,可用于开发和实现多目标追踪算法。
本文将重点介绍Matlab中的多目标追踪算法的基本原理和应用。
2. 目标检测与跟踪在多目标追踪中,首先需要进行目标的检测,即在图像帧中找到感兴趣的目标区域。
常用的目标检测算法包括基于颜色、纹理、形状和深度等特征的方法。
在Matlab中,可以利用图像处理工具箱中的函数实现目标检测,如使用颜色滤波和边缘检测等操作。
当检测到目标后,接下来需要进行目标的跟踪,即在连续的图像帧中更新目标的位置和运动。
传统的目标跟踪算法包括基于模板匹配、卡尔曼滤波和粒子滤波等方法。
在Matlab中,可以使用计算机视觉工具箱中的函数,如CamShift跟踪算法和Kalman滤波器等实现目标跟踪。
3. 多目标跟踪算法传统的目标跟踪算法往往只能追踪一个目标,而多目标追踪算法则要求同时追踪多个目标。
在Matlab中,可以使用基于随机有限集(RFS)的多目标追踪算法实现此目的。
RFS是一种用于建模多目标追踪问题的数学框架,它可以描述目标之间的关系和动态变化。
常用的RFS模型包括基于贝叶斯滤波的多目标追踪算法和基于粒子滤波的多目标追踪算法。
在Matlab中,可以使用多目标跟踪工具箱(MOT)实现RFS模型的建模和求解,实现多目标的同时跟踪和预测。
4. 多目标追踪的应用多目标追踪算法在各种应用中具有广泛的应用前景。
以视频监控为例,通过多目标追踪算法可以实现对场景中多个目标的实时监控和预警,提高安全性和效率。
在自动驾驶领域,多目标追踪算法可以用于识别和跟踪车辆、行人等交通参与者,实现智能辅助驾驶和避免事故。
在智能交通系统中,多目标追踪算法可以用于车流量统计和拥堵检测,优化交通信号和路况管理。
追赶法解线性方程组报告
![追赶法解线性方程组报告](https://img.taocdn.com/s3/m/c96ac0978762caaedd33d4f1.png)
a[6][5]=0;
a[6][6]=a[6][6]-i6*a[5][6];
a[6][7]=a[6][7]-i6*a[5][7];
a[6][10]=a[6][10]-i6*a[5][10];
i7=a[7][6]/a[6][6];
a[7][6]=0;
a[7][7]=a[7][7]-i7*a[6][7];
#include<iomanip.h>
void main(void)
{
double i=0,j=0,k=0,x1,x2,x3,x4;
double a[4][5];
cout<<"请输入对应的增广矩阵:"<<endl;
for(int z=0;z<4;z++)
{
for(int w=0;w<5;w++)
{
cin>>setw(12)>>a[z][w];
i3=a[3][2]/a[2][2];
a[3][2]=0;
a[3][3]=a[3][3]-i3*a[2][3];
a[3][4]=a[3][4]-i3*a[2][4];
a[3][10]=a[3][10]-i3*a[3][10];
i4=a[4][3]/a[3][3];
a[4][3]=0;
a[4][4]=a[4][4]-i4*a[3][4];
a[1][2]=a[1][2]-i1*a[0][2];
a[1][10]=a[1][10]-i1*a[0][10];
i2=a[2][1]/a[1][1];
a[2][1]=0;
a[2][2]=a[2][2]-i2*a[1][2];
matlab追赶法解101阶三对角方程组
![matlab追赶法解101阶三对角方程组](https://img.taocdn.com/s3/m/21e07d995122aaea998fcc22bcd126fff7055dc4.png)
在探讨MATLAB追赶法解101阶三对角方程组之前,我们首先需要了解什么是追赶法和什么是三对角方程组。
追赶法又称托马斯算法,是一种用于求解带状矩阵(即只有主对角线和两条相邻的对角线上有非零元素的矩阵)的线性方程组的方法。
而三对角矩阵就是只有主对角线和两条相邻的对角线上有非零元素的矩阵。
在实际应用中,求解带状矩阵的线性方程组是非常常见的,特别是在数值计算和科学工程领域。
现在,让我们深入探讨MATLAB追赶法解101阶三对角方程组的方法和具体步骤。
一、MATLAB追赶法解101阶三对角方程组1. 概念介绍101阶三对角方程组是一个非常大的线性方程组,通常使用传统的高斯消元法来求解会耗费大量的时间和计算资源。
而MATLAB追赶法通过利用三对角矩阵的特殊性质,可以有效地简化计算过程,并且节省大量的内存和计算资源。
2. 追赶法步骤(1)将原方程组化为追赶法所需的形式;(2)利用追赶法求解三对角线性方程组。
二、追赶法求解101阶三对角方程组的实现过程1. 将原方程组化为追赶法所需的形式对于101阶三对角方程组,我们首先需要将其化为追赶法所需的形式。
这个过程涉及到选取合适的追赶元和追赶子以及对原方程组的变形,将其化为追赶法能够直接处理的形式。
2. 利用追赶法求解线性方程组一旦将原方程组化为追赶法所需的形式,我们就可以利用追赶法对其进行求解。
追赶法的核心是通过追赶子的迭代计算,逐步求得线性方程组的解。
在MATLAB中,可以使用内置的追赶法求解函数,也可以编写自定义的追赶法算法来实现对101阶三对角方程组的求解。
三、个人观点和理解在实际工程和科学计算中,追赶法是一种非常有效的求解带状矩阵线性方程组的方法。
对于大规模的三对角方程组,特别是高阶的情况,传统的直接求解方法往往会遇到内存和计算资源的限制,而追赶法能够通过精巧的迭代计算,在保证解的精度的显著提高计算效率。
在MATLAB中,通过调用内置的追赶法函数,可以快速地求解大规模的三对角方程组,极大地方便了工程实践中的数值计算工作。
追赶法,高斯消元法,逆矩阵法,迭代法——解线性方程组精仪学院马金玉
![追赶法,高斯消元法,逆矩阵法,迭代法——解线性方程组精仪学院马金玉](https://img.taocdn.com/s3/m/05385004a31614791711cc7931b765ce05087a4d.png)
追赶法,高斯消元法,逆矩阵法,迭代法 —— 解线性方程组精仪学院 马金玉 1012202030本文主要详细介绍了追赶法,高斯法,逆矩阵法的方法原理,运用这三种方法分别进行线性方程的求解举例,给出MATLAB 相应程序,最后做结果分析,比较说明追赶法和高斯法的特点。
最后对三种典型迭代方法Jacobi 迭代,Gauss-Seidel 迭代,SOR 迭代进行简单的分析比较。
1. 追赶法1.1).追赶法方法介绍追赶法用于求解以下形式的方程组(三对角方程组)d Ax =其中 1[,,]T n d d =d ,系数矩阵(三对角矩阵)11222111n n n n n b c a bc a b c a b ---⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦A系数矩阵A 的元素满足1100 0 (2,,1)0i i i i i n n b c b a c a c i n b a ⎧>>⎪≥+>≠=-⎨⎪>>⎩第一步:实现A=LU 的分解,按照递推公式1111//()i i i i i c b c b a βββ-=⎧⎨=-⎩ 计算 123,,...........βββ:第二步:求解方程组LY=f,相应的递推公式 11111/()/()i i i i i i i y f b y f a y b a β--=⎧⎨=--⎩ 第三部:求解方程组UX=Y ,相应的递推公式1()n nii i i x y x y x β-=⎧⎨=-⎩ 求得x因为计算1231......n ββββ-→→→→ 及 1231......n y y y y -→→→→的过程是追赶的过程,结出结果X 。
1.2).追赶法解线性方程组的matlab实例解线性方程组第一步:编写M文件如下:function [x,y,beta]=zhuiganfa(a,b,c,f)%a,b,c是三对角阵的对角线上的元素,f是自由项.n=length(b);beta(1)=c(1)/b(1);for i=2:nbeta(i)=c(i)/(b(i)-a(i)*beta(i-1));endy(1)=f(1)/b(1);for i=2:ny(i)=(f(i)-a(i)*y(i-1))/(b(i)-a(i)*beta(i-1));endx(n)=y(n);for i=n-1:-1:1x(i)=y(i)-beta(i)*x(i+1);enddisp(sprintf('k x(k) y(k) beta(k)')); for i=0:n-1disp(sprintf('%d %15.4f %15.4f %15.4f',i,x(i+1),y(i+1),beta(i+1))); end追赶法M文件程序截图如图1所示图1 追赶法M文件程序截图第二步:根据所求方程,在命令窗口中输入如下命令,并按ENTER 键确认。
matlab追赶法
![matlab追赶法](https://img.taocdn.com/s3/m/9c12d9c4951ea76e58fafab069dc5022abea4676.png)
Matlab追赶法1. 简介追赶法是一种求解特殊线性方程组的数值计算方法。
在Matlab中,我们可以利用追赶法求解带有追赶矩阵的线性方程组,该方法在某些情况下比直接使用高斯消元法更加高效。
2. 追赶法原理追赶法是基于矩阵的三对角性质进行求解的。
三对角矩阵是指除主对角线外,只有上对角线和下对角线上存在非零元素的矩阵。
对于一个n阶的三对角矩阵A,我们有以下形式的线性方程组:A * x = b其中,A是一个n阶的三对角矩阵,x是未知向量,b是已知向量。
3. 算法步骤追赶法的求解过程可以分为以下步骤:3.1. 利用追赶法将矩阵化为上三角矩阵追赶法的第一步是将三对角矩阵A转化为上三角矩阵U。
这可以通过以下迭代公式实现:u[i] = a[i] (i = 1)u[i] = a[i] - c[i-1]*b[i-1]/u[i-1] (i = 2, 3, ..., n-1)3.2. 求解中间向量利用上一步得到的上三角矩阵U,我们可以通过以下迭代公式求解中间向量y:y[i] = b[i] - c[i-1]*y[i-1]/u[i-1] (i = 2, 3, ..., n)3.3. 求解未知向量最后一步是通过回代求解未知向量x。
根据回代公式,我们可以得到:x[n] = y[n]/u[n]x[i] = (y[i] - b[i]*x[i+1])/u[i] (i = n-1, n-2, ..., 1)4. Matlab代码示例以下是使用Matlab实现追赶法的示例代码:function x = tridiag_solver(a, b, c, d)n = length(d);u = zeros(n, 1);y = zeros(n, 1);x = zeros(n, 1);u(1) = a(1);for i = 2:nu(i) = a(i) - c(i-1)*b(i-1)/u(i-1);endy(1) = d(1);for i = 2:ny(i) = d(i) - c(i-1)*y(i-1)/u(i-1);endx(n) = y(n)/u(n);for i = n-1:-1:1x(i) = (y(i) - b(i)*x(i+1))/u(i);endend5. 总结追赶法是一种求解特殊线性方程组的有效方法,特别适用于三对角矩阵。
MATLAB-追赶法求解三对角方程组的算法原理例题与程序
![MATLAB-追赶法求解三对角方程组的算法原理例题与程序](https://img.taocdn.com/s3/m/c82a3b15effdc8d376eeaeaad1f34693daef107e.png)
MATLAB-追赶法求解三对角方程组的算法原理例题与程序3)三对角形线性方程组1234567891041000000001410000000014100000000141000 0000014100000000141000000001410000000014100000000141 0000000014x x x x x x x x x x -----????----------???--??-7513261214455-??=??-??-??-??*(2,1,3,0,1,2,3,0,1,1)Tx =---二、数学原理设系数矩阵为三对角矩阵1122233111000000000000000n n n nn b c a b c a b A a b c a b ---?? ? ? ?=则方程组Ax=f 称为三对角方程组。
设矩阵A 非奇异,A 有Crout 分解A=LU ,其中L 为下三角矩阵,U 为单位上三角矩阵,记1122233110000100000001000000100,00000000000001n n nn b L U γαβγββγβ--???? ?==可先依次求出L ,U 中的元素后,令Ux=y ,先求解下三角方程组Ly=f 得出y ,再求解上三角方程组Ux=y 。
事实上,求解三对角方程组的2追赶法将矩阵三角分解的计算与求解两个三角方程组的计算放在一起,使算法更为紧凑。
其计算公式为:1111,1111,111,2,3,,,1,2,,1ii i i i i i i ii i i i i n ni i i i c f b y i n c a b a f y y x y i n n x y x βγββαβγγβαβγ--+?===??=??==-=-?=??=??=--?=-??对对(*)三、程序设计function x=chase(a,b,c,f)%求解线性方程组Ax=f,其中A 是三对角阵%a 是矩阵A 的下对角线元素a(1)=0 %b 是矩阵A 的对角线元素%c 是矩阵A 的上对角线元素c(n)=0 %f 是方程组的右端向量n=length(f);x=zeros(1,n);y=zeros(1,n); d=zeros(1,n);u= zeros(1,n); %预处理 d(1)=b(1); for i=1:n-1 u(i)=c(i)/d(i);d(i+1)=b(i+1)-a(i+1)*u(i); end%追的过程y(1)=f(1)/d(1); for i=2:ny(i)=(f(i)-a(i)*y(i-1))/d(i); end%赶的过程 x(n)=y(n); for i=n-1:-1:1x(i)=y(i)-u(i)*x(i+1); end。
MATLAB-追赶法求解三对角方程组的算法原理例题与程序
![MATLAB-追赶法求解三对角方程组的算法原理例题与程序](https://img.taocdn.com/s3/m/d094a7975022aaea998f0f6a.png)
3)三对角形线性方程组123456789104100000000141000000001410000000014100000000141000000001410000000014100000000141000000001410000000014x x x x x x x x x x -⎡⎤⎡⎤⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎥⎢⎥--⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎥⎢⎥--⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎥⎢⎥--⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎢⎥--⎢⎢⎥⎢⎢⎥-⎣⎦⎣⎦7513261214455⎡⎤⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥=⎢⎥-⎢⎥⎢⎥⎢⎥-⎢⎥⎥⎢⎥⎥⎢⎥⎥⎢⎥-⎣⎦*(2,1,3,0,1,2,3,0,1,1)T x =--- 二、数学原理设系数矩阵为三对角矩阵112223311100000000000000000n n n n n b c a b c a b A a b c a b ---⎛⎫ ⎪⎪ ⎪=⎪ ⎪ ⎪⎪⎪⎝⎭L L L M M MM M M L L则方程组Ax=f 称为三对角方程组。
设矩阵A 非奇异,A 有Crout 分解A=LU ,其中L 为下三角矩阵,U 为单位上三角矩阵,记11222331100001000000010000000100,00000000000001n n nn b L U γαβγββγβ--⎛⎫⎛⎫⎪ ⎪⎪ ⎪ ⎪ ⎪∂==⎪⎪ ⎪ ⎪ ⎪ ⎪⎪ ⎪⎪ ⎪∂⎝⎭⎝⎭L L L LL L M M M MM M M MM M L L LLL可先依次求出L ,U 中的元素后,令Ux=y ,先求解下三角方程组Ly=f 得出y ,再求解上三角方程组Ux=y 。
事实上,求解三对角方程组的2追赶法将矩阵三角分解的计算与求解两个三角方程组的计算放在一起,使算法更为紧凑。
其计算公式为:1111,1111,111,2,3,,,1,2,,1ii i i i i i i ii i i i i n ni i i i c f b y i n c a b a f y y x y i n n x y x βγββαβγγβαβγ--+⎧===⎪⎪=⎪⎪⎪==-=⎪⎪⎨-⎪=⎪⎪=⎪⎪=--⎪=-⎪⎩L L 对对(*)三、程序设计function x=chase(a,b,c,f)%求解线性方程组Ax=f,其中A 是三对角阵 %a 是矩阵A 的下对角线元素a(1)=0 %b 是矩阵A 的对角线元素%c 是矩阵A 的上对角线元素c(n)=0 %f 是方程组的右端向量 n=length(f);x=zeros(1,n);y=zeros(1,n); d=zeros(1,n);u= zeros(1,n); %预处理 d(1)=b(1); for i=1:n-1 u(i)=c(i)/d(i);d(i+1)=b(i+1)-a(i+1)*u(i); end%追的过程y(1)=f(1)/d(1); for i=2:ny(i)=(f(i)-a(i)*y(i-1))/d(i); end%赶的过程 x(n)=y(n); for i=n-1:-1:1x(i)=y(i)-u(i)*x(i+1); end>> a=[0,-1,-1,-1,-1,-1,-1,-1,-1,-1];>> b=[4,4,4,4,4,4,4,4,4,4];>> c=[-1,-1,-1,-1,-1,-1,-1,-1,-1,0];>> f=[7,5,-13,2,6,-12,14,-4,5,-5];>> x=chase(a,b,c,f)x =2.00001.0000-3.00000.00001.0000-2.00003.0000-0.00001.0000-1.0000四、结果分析和讨论追赶法求解的结果为x=(2,1,-3,0,1,-2,3,0,1,-1)T。
追赶法
![追赶法](https://img.taocdn.com/s3/m/aa436f00ba1aa8114431d9a6.png)
追赶法---实验报告一:实验题目:追赶法。
二:实验目的:1:初步掌握算法,设计规则。
2:初步掌握MATLAB程序设计规则。
三:实验内容:1:构造利用追赶法求解三对角线性方程组的算法。
2:在MATLAB环境下编写追赶法程序。
四:实验过程:function x=threedia(a,b,c,f)n=length(f);x=zeros(1,N); y=zeros(1,N);d=zeros(1,N); u=zeros(1,N);d(1)=b(1);for i=1:N-1u(i)=c(i)/d(i);d(i+1)=b(i+1)-a(i+1)*u(i);endy(1)=f(1)/d(1);for i=2:Ny(i)=(f(i)-a(i)*y(i-1))/d(i);endx(N)=y(N);for i=N-1:-1:1x(i)=y(i)-u(i)*x(i+1);end解算书上例题,用追赶法求解方程组:2 -1 0 x 6-1 3 -2 x 1-1 2 -1 x 00 -3 5 x 1a=[0,-1,-1,-3];b=[2,3,2,5];c=[-1,-2,-1,0];f=[6,1,0,1]’;x=threedia(a,b,c,f);结果为:x= 5 4 3 2为书上的实验结果正确。
下面为自己写的另一组方程:3 1 x 12 3 1 x 02 3 1 x 11 3 x 0a=[2,2,1]’; b=[3,3,3,3]’; c=[1,1,1],; f=[1,0,1,0]’;x=threedia(a,b,c,f)结果:x= 21/38 -25/38 33/38 -11/38五:实验中遇到的问题:所求方程组不是对角占优阵,追和赶的过程没有完全弄明白,以致编写的错误。
六:实验心得:后一组自己编写的方程组,通过此实验可以得出只要程序编写正确,那么可以自己任意的编写不同的对角占优方程来戒除他们的解并且进行比较其数据从而得出结论。
MATLAB缉私艇追击走私船 数学建模
![MATLAB缉私艇追击走私船 数学建模](https://img.taocdn.com/s3/m/5c5a1b2c915f804d2b16c198.png)
y
o始位置在点(0,0), 走私船初始位置在点(0,0), (0,0) 行驶方向为y轴正方向, 行驶方向为y轴正方向, 缉私艇的初始位置在点( ,0), 缉私艇的初始位置在点(c,0), 缉私艇行驶的路程为s 。 在时刻t 在时刻t: 走私船的位置到达点 R(0, at ) 缉私艇到达点 D ( x, y )
dy 1 x r c r = − dx 2 c x y (c ) = 0
3) r
=1
1 x2 − c2 x , y = 2 2c − c ln c
y → +∞ ,缉私艇不可能追赶上走私船。 缉私艇不可能追赶上走私船。
MATLAB软件仿真法 软件仿真法 缉私艇的初始位在点( ,0), 缉私艇的初始位在点(c,0), (0 t = t k : 走私船的位置: , at k ) 走私船的位置: 缉私艇的位置: 缉私艇的位置 ( xk , yk )
y
走私船初始位在点(0,0),方向为y轴正方向, 走私船初始位在点(0,0),方向为y轴正方向, (0,0)
11.2 缉私艇追击走私船
1 实验目的 (1)学会用MATLAB软件求解微分方程的初值问题; (2)了解微分方程数值解的思想,掌握微分方程数值解的方法; (3)学会根据实际问题建立简单微分方程数学模型,提高解决问题能力; (4)了解简单的计算机仿真和数据模拟的基本方法.
2 实验问题 海上边防缉私艇发现距c公里处有一走私船正以匀速a沿直线行驶,缉私艇 立即以最大速度b追赶,在雷达的引导下,缉私艇的方向始终指向走私船。问 缉私艇何时追赶上走私船?并求出缉私艇追赶的路线。
k +1
~ = a ( t + ∆t ) yk +1 k
第4节 追赶法
![第4节 追赶法](https://img.taocdn.com/s3/m/f200863531126edb6f1a1015.png)
此时,在完成并存贮矩阵L和U后,右端项第改变一次仅 需增加 n2 次运算。
2. 可以用以求可逆矩阵 A 的逆矩阵 A-1
令 A-1 = ( X1 X2 … Xn ), E=(e1 e2 … en )
则由 AA-1=E 得到 A( X1 X2 … Xn )= (e1 e2 … en ) 推得 如果 A Xk= e k ,k=1,2,… ,n A=LU, 则有 UYk= e k L Xk = Y k k=1,2,… ,n
b1 a 2
b1 a 2
1 1 1 b2 c2 2 2 1 2 a 3 b3 3 3 c n 1 n 1 a n bn n n 1 第3列 0 0 bi ai i 0,,0, i , i ,0,,0 i 1 i -1行 1 i-1列 , i 1,2,, n i i 1 i 0 0 c1
b1 a 2
2 n 1 1 第3列
i 2,3,, n
于是,由以上结果: ci i i , i 1,2,, n
bi i i 1 i , i 1,2,, n ai i , i 2,3,, n
2 1 0 0 1 2 1 0 0 1 2 1 0 0 1 2
1 2 1 0 0
0 2 3 1 0
0 0 3 4 1
求解方程组Ly=y,即
2 1 0 0 0 3 2 1 0 0 0 4 3 1 0 1 0 y1 y 2 0 0 y 3 0 5 y4 1 4
实验2追赶法算法设计及MATLAB实现
![实验2追赶法算法设计及MATLAB实现](https://img.taocdn.com/s3/m/f7b64571d15abe23482f4dda.png)
数值计算方法实验报告实验序号:实验二实验名称:追赶法算法设计及MATLAB实现实验人:专业年级:教学班:学号:实验时间:实验二追赶法算法设计及MATLAB实现一、实验目的1.初步掌握算法设计规则;2.初步掌握MATLAB程序设计规则.二、实验内容1.构造利用追赶法求解三对角线性方程组的算法;2.在MATLAB环境下编写追赶法的程序(函数);3.自由选择若干个三对角线性方程组求解。
三、实验步骤1.追赶法算法:算法名称:thomas输入参数:向量a,b,c,f输出参数:输出解信息x算法的自然语言:Step1:u1=b1,y1=b1;Step2:对于i=2,3,….n;Step2.1:当u1-i≠,否则转step5l i =ai/u1-i;ui =bi-li*c1-i;yi =fi-li*y1-i;Step3:当un≠时,xn=yn/un,否则转step5Step4:对于:i=n-1,n-2,…..,2,1,转step6xi =(yi-ci*x1+i)/uiStep5:无解信息,转step7Step6:输出xStep7:关机2.MATLAB程序function [x,L,U]=thomas(a,b,c,f) n=length(b);% 对A进行分解u(1)=b(1);for i=2:nif(u(i-1)~=0)l(i-1)=a(i-1)/u(i-1);u(i)=b(i)-l(i-1)*c(i-1);elsebreak;endendL=eye(n)+diag(l,-1);U=diag(u)+diag(c,1);x=zeros(n,1);y=x;% 求解Ly=by(1)=f(1);for i=2:ny(i)=f(i)-l(i-1)*y(i-1);end% 求解Ux=yif(u(n)~=0)x(n)=y(n)/u(n);endfor i=n-1:-1:1x(i)=(y(i)-c(i)*x(i+1))/u(i);end3.求解实例例1.方程组例2.方程组例3.方程组⎪⎪⎪⎪⎪⎭⎫⎝⎛=⎪⎪⎪⎪⎪⎭⎫⎝⎛⎪⎪⎪⎪⎪⎭⎫⎝⎛1131132132134321xxxx四、实验结论对于追赶法我最先写的是如下的程序:但是出现了如上截图中的错误,后来与同学讨论还是没能解决我的问题,最后借鉴了她的算法得到了正确的结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值计算方法
实
验
报
告
实验序号:实验二
实验名称:追赶法算法设计及MATLAB实现
实验人:
专业年级:
教学班:
学号:
实验时间:
实验二追赶法算法设计及MATLAB实现
一、实验目的
1.初步掌握算法设计规则;
2.初步掌握MATLAB程序设计规则.
二、实验内容
1.构造利用追赶法求解三对角线性方程组的算法;
2.在MATLAB环境下编写追赶法的程序(函数);
3.自由选择若干个三对角线性方程组求解。
三、实验步骤
1.追赶法算法:
算法名称:thomas
输入参数:向量a,b,c,f
输出参数:输出解信息x
算法的自然语言:
Step1:u
1=b
1
,y
1
=b
1
;
Step2:对于i=2,3,….n;
Step2.1:当u
1-i
≠,否则转step5
l i =a
i
/u
1-i
;
u
i =b
i
-l
i
*c
1-i
;
y
i =f
i
-l
i
*y
1-i
;
Step3:当u
n
≠时,x
n
=y
n
/u
n
,否则转step5
Step4:对于:i=n-1,n-2,…..,2,1,转step6
x
i =(y
i
-c
i
*x
1+i
)/u
i
Step5:无解信息,转step7
Step6:输出x
Step7:关机
2.MATLAB程序
function [x,L,U]=thomas(a,b,c,f) n=length(b);
% 对A进行分解
u(1)=b(1);
for i=2:n
if(u(i-1)~=0)
l(i-1)=a(i-1)/u(i-1);
u(i)=b(i)-l(i-1)*c(i-1);
else
break;
end
end
L=eye(n)+diag(l,-1);
U=diag(u)+diag(c,1);
x=zeros(n,1);
y=x;
% 求解Ly=b
y(1)=f(1);
for i=2:n
y(i)=f(i)-l(i-1)*y(i-1);
end
% 求解Ux=y
if(u(n)~=0)
x(n)=y(n)/u(n);
end
for i=n-1:-1:1
x(i)=(y(i)-c(i)*x(i+1))/u(i);
end
3.求解实例例1.方程组
例2.方程组
例3.方程组
⎪⎪
⎪
⎪
⎪
⎭
⎫
⎝
⎛
=
⎪⎪
⎪
⎪
⎪
⎭
⎫
⎝
⎛
⎪⎪
⎪
⎪
⎪
⎭
⎫
⎝
⎛
1
1
3
1
1
3
2
1
3
2
1
3
4
3
2
1
x
x
x
x
四、实验结论
对于追赶法我最先写的是如下的程序:
但是出现了如上截图中的错误,后来与同学讨论还是没能解决我的问题,最后借鉴了她的算法得到了正确的结果。
Thomas算法在课堂上老师就已经给我们详细地讲解并指导了我们如何用Matlab编程,但是并没有解决a矩阵的a1如何处理,对于这个问题,我很快解决了。
我最大的问题就是如上所示,说明我的编程能力还是比较差,需要多练习。
对于如上的错误希望老师看过之后能够给予指导,谢谢!。