追赶法算法

追赶法实验报告

一. 实验目的:*********** 二. 实验时间:*********** 三. 实验地点:***********

四. 实验内容:运用编程写出追赶法来解决热传导方程,常微分

方程边值问题以及船体数学放样中建立三次样条函数。

五. 实验环境:Cfree5.0环境下运行。 六. 实验需要的知识:

b 1

c 1 x 1

x 2 a 2 b 2 c 2

○ ○

f 1

f 2

=

a n-1 b n-1 c n-1 a n b n

x n-1 x n f n-1 f n

简记为Ax=f。其中当|i-j|>1时,a ij =0,且:

|b1|>|c1|>0;

|bi |>=|ai |+|ci |,i=2,3,,,,,n-1; |bn |>|an |>0

我们利用矩阵的直接分解法来推导解三对角线方程组的计算公式。由A 的特点可以将A 分为两个矩阵的乘积,即 A=LU. 其中得到:

1

1

r 2 a 2

1

A= r n a n

对于分解式得到:

b 1=a1,c 1=a1ß1, ai =ri ,b i =ri ßi-1+ai ,

c i =ai ßi .

由归纳法得到 ai =bi -a i ßi-1 , ßi =ci /(bi -a i ßi ),

求解Ax=f等价于解两个三角方程组:

Ly=f,求y;UX=y,求X 。 (1) 计算ßi 的递推公式

ß1 =c1/b1 ,

ßi =ci /(bi -a i ßi-1);i=2,3………..n-1。 (2) 解Ly=f

y 1 = f1 / b1 ,

y i = (fi – ai y i-1)/(bi - a i ßi-1),i=2,3……n ;

ß1

(3) 解Ux=y

X n =yn ,

X i =yi - ßi X i+1,i=n-1,n-2………2,1.

七. 编写追赶法的c 语言代码如下:

#include"stdio.h" int main() { double

a[99],b[100],c[99],num[100][100],x[100],y[99],r[99],f[100],x1[100],y1[100];

int n; bool pan=true; for(int i=0;i

while(pan) {

printf("*******************************追赶法f[i]=0; x1[i]=0; y1[i]=0;

公式解法**********************************");

printf("输入的矩阵是(n

退出!):");

scanf("%d",&n); if(n>0) {

for(int i=0;i

printf("输入a(x)的值为(用空格隔开):");//输入a 的值 for(int i=0;i

scanf("%lf",&a[i]); }

printf("输入b(x)的值为(用空格隔开):");//输入b 的值 for(int i=0;i

scanf("%lf",&b[i]); }

for(int j=0;j

num[i][j]=0;

printf("输入c(x)的值为(用空格隔开):");//输入c 的值 for(int i=0;i

scanf("%lf",&c[i]); }

for(int i=0;i

{ for(int j=0;j

}

else if(i-j==1) { num[i][j]=a[i-1]; }

else if(j-i==1) { num[i][j]=c[i];

}

b ,c 传入二元数组

{ num[i][j]=0;

}

}

}

printf("---------------------------------矩阵--------------------------------------");//输出A 的矩阵

for(int i=0;i

}

printf("丨"); printf("\n");

}

y[0]=c[0]/b[0];

for(int i=1;i

y[i]=c[i]/(b[i]-a[i-1]*y[i-1]); A 为;

x[0]=b[0]; for(int i=1;i

for(int i=0;i

for(int i=0;i

for(int i=0;i

for(int j=0;j

if(i==j) for(int j=0;j

num[i][j]=0; r[i]=a[i];

x[i]=b[i]-a[i-1]*y[i-1];

num[i][j]=x[i]; }

else if(i-j==1) { num[i][j]=r[i-1];

} else { num[i][j]=0; }

}

}

printf("---------------------------------矩--------------------------------------");//输出L 的矩阵 for(int i=0;i

}

L 为;

}

printf("丨"); printf("\n");

for(int i=0;i

for(int i=0;i

for(int j=0;j

if(i==j) { }

else if(j-i==1) { }

num[i][j]=y[i]; num[i][j]=1; for(int j=0;j

num[i][j]=0;

else { num[i][j]=0;

}

}

}

printf("---------------------------------矩阵U 为--------------------------------------");//输出U 的矩阵

for(int i=0;i

}

printf("丨"); printf("\n");

}

printf("\n");

printf("输入矩阵右端的f 的值(空格隔开) :"); for(int i=0;i

{

} y1[0]=f[0]/b[0]; for(int i=1;i=0;i--)//求x 的值 { } printf("输出函数的x 与y 的值为:\n"); for(int i=0;i

} { } pan=false;

return 1;

}

八.cfree 运行的结果:

九. 实验心得: ***************

追赶法实验报告

一. 实验目的:*********** 二. 实验时间:*********** 三. 实验地点:***********

四. 实验内容:运用编程写出追赶法来解决热传导方程,常微分

方程边值问题以及船体数学放样中建立三次样条函数。

五. 实验环境:Cfree5.0环境下运行。 六. 实验需要的知识:

b 1

c 1 x 1

x 2 a 2 b 2 c 2

○ ○

f 1

f 2

=

a n-1 b n-1 c n-1 a n b n

x n-1 x n f n-1 f n

简记为Ax=f。其中当|i-j|>1时,a ij =0,且:

|b1|>|c1|>0;

|bi |>=|ai |+|ci |,i=2,3,,,,,n-1; |bn |>|an |>0

我们利用矩阵的直接分解法来推导解三对角线方程组的计算公式。由A 的特点可以将A 分为两个矩阵的乘积,即 A=LU. 其中得到:

1

1

r 2 a 2

1

A= r n a n

对于分解式得到:

b 1=a1,c 1=a1ß1, ai =ri ,b i =ri ßi-1+ai ,

c i =ai ßi .

由归纳法得到 ai =bi -a i ßi-1 , ßi =ci /(bi -a i ßi ),

求解Ax=f等价于解两个三角方程组:

Ly=f,求y;UX=y,求X 。 (1) 计算ßi 的递推公式

ß1 =c1/b1 ,

ßi =ci /(bi -a i ßi-1);i=2,3………..n-1。 (2) 解Ly=f

y 1 = f1 / b1 ,

y i = (fi – ai y i-1)/(bi - a i ßi-1),i=2,3……n ;

ß1

(3) 解Ux=y

X n =yn ,

X i =yi - ßi X i+1,i=n-1,n-2………2,1.

七. 编写追赶法的c 语言代码如下:

#include"stdio.h" int main() { double

a[99],b[100],c[99],num[100][100],x[100],y[99],r[99],f[100],x1[100],y1[100];

int n; bool pan=true; for(int i=0;i

while(pan) {

printf("*******************************追赶法f[i]=0; x1[i]=0; y1[i]=0;

公式解法**********************************");

printf("输入的矩阵是(n

退出!):");

scanf("%d",&n); if(n>0) {

for(int i=0;i

printf("输入a(x)的值为(用空格隔开):");//输入a 的值 for(int i=0;i

scanf("%lf",&a[i]); }

printf("输入b(x)的值为(用空格隔开):");//输入b 的值 for(int i=0;i

scanf("%lf",&b[i]); }

for(int j=0;j

num[i][j]=0;

printf("输入c(x)的值为(用空格隔开):");//输入c 的值 for(int i=0;i

scanf("%lf",&c[i]); }

for(int i=0;i

{ for(int j=0;j

}

else if(i-j==1) { num[i][j]=a[i-1]; }

else if(j-i==1) { num[i][j]=c[i];

}

b ,c 传入二元数组

{ num[i][j]=0;

}

}

}

printf("---------------------------------矩阵--------------------------------------");//输出A 的矩阵

for(int i=0;i

}

printf("丨"); printf("\n");

}

y[0]=c[0]/b[0];

for(int i=1;i

y[i]=c[i]/(b[i]-a[i-1]*y[i-1]); A 为;

x[0]=b[0]; for(int i=1;i

for(int i=0;i

for(int i=0;i

for(int i=0;i

for(int j=0;j

if(i==j) for(int j=0;j

num[i][j]=0; r[i]=a[i];

x[i]=b[i]-a[i-1]*y[i-1];

num[i][j]=x[i]; }

else if(i-j==1) { num[i][j]=r[i-1];

} else { num[i][j]=0; }

}

}

printf("---------------------------------矩--------------------------------------");//输出L 的矩阵 for(int i=0;i

}

L 为;

}

printf("丨"); printf("\n");

for(int i=0;i

for(int i=0;i

for(int j=0;j

if(i==j) { }

else if(j-i==1) { }

num[i][j]=y[i]; num[i][j]=1; for(int j=0;j

num[i][j]=0;

else { num[i][j]=0;

}

}

}

printf("---------------------------------矩阵U 为--------------------------------------");//输出U 的矩阵

for(int i=0;i

}

printf("丨"); printf("\n");

}

printf("\n");

printf("输入矩阵右端的f 的值(空格隔开) :"); for(int i=0;i

{

} y1[0]=f[0]/b[0]; for(int i=1;i=0;i--)//求x 的值 { } printf("输出函数的x 与y 的值为:\n"); for(int i=0;i

} { } pan=false;

return 1;

}

八.cfree 运行的结果:

九. 实验心得: ***************


相关文章

  • 高斯消元法 1
  • 求解线性方程组的直接解法 5.1 Gauss 消去法 ① 三角方程组 先举一个简单的例子来说明消去法的基本思想. 例1. 用消去法解方程组 (1)⎧x 1+x 2+x 3=6, ⎪ (2) ⎨4x 2-x 3=5, ⎪2x -2x +x = ...查看


  • 第1章 解线性代数方程组的直接法
  • 第一章 解线性代数方程组的直接法 1.1 引 言 在自然科学与社会科学的研究中,常常需要求解线性代数方程组,如实验数据的曲线.曲面的拟合和用差分法或有限元法解偏微分方程等都要用到线性代数方程组的求解.由于从不同的问题导出的线性代数方程组的系 ...查看


  • 数值分析习题大作业
  • 一. [设计题一] .............................................................................................................. ...查看


  • 行列式两种求值算法的比较
  • 摘 要: 为了实现科技和工程技术领域中对有限元线性方程组的快速求解,首先需判断该线性方程组所对应的行列式的值是否为零.若该值不为零,则线性方程组有惟一确定的解:否则,线性方程组的解不惟一.利用行列式的基本性质.代数余子式.定理,采用递归程序 ...查看


  • 电子商务的安全要素及其标准规范
  • 追赶人生--记录人生旅程 网站首页 | 网页地图 | 留言本 | 精华美文 | 资料课件论文下载 |关于wished.cn| google adsense 电子商务的安全要素及其标准规范 摘自<信息网络安全>杂志 2002年第九 ...查看


  • 现代数值计算方法实验三
  • 实验报告 实验三 插值法与拟合实验 一.实验目的 1.懂得利用数据建模两种方法(插值法和拟合多项式法)对一批数据(x 1, y 1), (x 2, y 2),--,(x n , y n )进行处理,学会对数据的结果进行误差分析. 2.比较分 ...查看


  • PKI-网络信息安全的基石
  • 追赶人生--记录人生旅程 网站首页 | 网页地图 | 留言本 | 精华美文 | 资料课件论文下载 |关于wished.cn| google adsense PKI-网络信息安全的基石 近年来,互联网络正以惊人的速度改变着人们的工作效率和生活 ...查看


  • 数值分析学习心得体会
  • 数值分析学习感想 一个学期的数值分析,在老师的带领下,让我对这门课程有了深刻的理解和感悟.这门 课程是一个十分重视算法和原理的学科,同时它能够将人的思维引入数学思考的模式,在处 理问题的时候,可以合理适当的提出方案和假设.他的内容贴近实际, ...查看


  • 基于PLS模型的房地产品牌竞争力测评研究
  • [摘要] 缺乏一套真正适合房地产品牌竞争力的科学的测评体系与方法,是众多房地产品牌竞争力不强的重要原因之一,由于房地产品牌竞争力的影响因素繁多,且各因素间存在严重的多重相关性,AHP法.模糊综合评价法.最小二乘法等都不能适用于该情况的测量, ...查看


热门内容