教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> > 数学> 数值与符号计算__LU和QR分解实验报告

数值与符号计算__LU和QR分解实验报告

上传者:强双怀
|
上传时间:2015-05-08
|
次下载

数值与符号计算__LU和QR分解实验报告

数值与符号计算 实验(丑)

线性代数方程组求解

姓名: 学号: 学院:

1 实验题目

用C/C++语言实现如下函数:

bool lu(double* a, int* pivot, int n);矩阵的LU分解

bool guass(double const* lu, int const* p, double* b, int n);求线性代数方程组的解

void qr(double* a, double* d, int n);矩阵的QR分解

bool hshld(double const*qr, double const*d, double*b, int n); 求线性代数方程组的解

2 实验要求

撰写详细的实验报告 不必修改函数界面

用高斯列选主元消去法和矩阵QR分解两种方法求解下面3个方程组,比较这两种方法的误差。

2.1 求解方程

??1?1??2?1?3?1??4?1?5?1??6

121314151617

131415161718

141516171819

11?56?11?

?67?11?78?11?

?89?11?910?11?

?

1011?

11??1???????26????x1??1?1?????1??x??237?21????11

???????x3??348? =???111?x4??????????

9??x5??45

1????11

????????x6???5610??111?????????

11??67

??????????????????

1??01?01?

? ?11???11??0

令n?n矩阵

?1000

?

??1100??1?110Gn??

?

??1?1?1?1?

??1?1?1?1?

令n维向量

Tbn??2,1,0,?1,?2,???,4?n,2?n?

求解方程

G20x?b20

注:上面两个方程准确解都是

Tx??1,1,???,1,1?

???2,3,4,???,n,n?T bn

求解方程

? G20x?b20

3 实验算法结果

3.1 矩阵的Lu分解算法代码如下:

bool lu(double* a, int* pivot, int n)//矩阵LU分解 {

int i,j,k;

double max,temp;

max = 0;

temp = 0;

for (i=0; i<n-1; i++)//依次对第i列进行处理 {

// 选出i列的主元,记录主元位置

max = fabs(a[n*i + i]);

pivot[i]=i;

for(j=i+1; j<n; j++)//j表示第j行

{

if( fabs(a[n*j + i])>max)

{

max= fabs(a[n*j + i]) ;

pivot[i]=j;

}

}

// 对第i列进行行变换,使得主元在对角线上 if(pivot[i]!=i)

{

for(j=i; j<n; j++)//ij与pivot[i]j换 只用对上三角进行处理 {

temp=a[n*i + j];

a[n*i + j]=a[n*pivot[i]+ j];

a[n*pivot[i]+ j]=temp;

}

}

for(j=i+1; j<n; j++)//Pi 部分下三角L

a[n*j + i]=a[n*j+i]/a[n*i+i];

for(j=i+1; j<n; j++)//计算上三角U

for(k=i+1; k<n; k++)

a[n*j + k]=a[n*j+k]- a[n*j+i]*a[n*i+k];

}

//计算下三角 L

for(i=0; i<n-2; i++)//i行k列

for(k=i+1; k<n-1;k++)

{

temp=a[n*pivot[k] + i];

a[n*pivot[k] + i]=a[k*n + i];

a[k*n + i]=temp;

}

return false ;

}

3.2 高斯求解线性方程组代码如下:

bool guass(double const* lu, int const* p, double* b, int n)//求线性代数方程组的解

{

int i,j;

double temp;

//按qivot对b行变换,与LU匹配

for(i=0; i<n-1; i++) //貌似错误在这里哦

{

temp = b[p[i]];

b[p[i]] = b[i];

b[i]=temp;

}

//Ly=b,将y的内容放入b

for(i=0; i<n; i++)

for(j=0; j<i; j++)

b[i]=b[i]-lu[n*i+j]*b[j];

//Uy=x,将x的内容放入b

for(i=n-1; i>=0; i--)

{

for(j=n-1; j>i; j--)

b[i]=b[i]-lu[n*i+j]*b[j];

b[i]=b[i]/lu[n*i+i];

}

return false;

}

3.3 矩阵的QR分解算法代码如下:

void qr(double* a, double* d, int n) //矩阵的QR分解

{

int i,j,l,k;

double tem,m;

double *temp;

temp = (double *)malloc(sizeof(double)*n);

for (i=0; i<n-1; i++)//依次对第i列进行处理

{

//获得tem值

m = 0 ;

for(j=i; j<n; j++)//j表示第j行

m = m +a[n*j + i]*a[n*j + i ];

if(a[n*i + i ]>0)

m = -sqrt(m);

else

m = sqrt(m);

//获得temp放入矩阵,并存主元d

tem = 0 ;

d[i] = m ;

a[n*i +i] = a[n*i +i] - m;

for(j=i; j<=n-1; j++)

tem=tem + a[n*j +i]*a[n*j +i];

tem= sqrt(tem);

for(j=i; j<=n-1; j++)

a[n*j +i] = a[n*j +i]/tem ;

// 调整矩阵

for(k=i+1;k<n;k++)

{

for(j=i; j<n; j++)

{

tem = 0 ;

for(l=i; l<n; l++)

tem =tem + a[n*j + i]*a[n*l + i]*a[n*l + k]; temp[j] = a[j*n+k] - 2*tem;

}

for(j=i; j<n; j++)

a[j*n+k] = temp[j];

}

}

d[n-1] = a[(n-1)*n+n-1];

}

3.4 QR求解线性方程组的代码如下:

bool householder(double const*qr, double const*d, double*b, int n)//求线性代数方程组的解

{

int i,j,l;

double rem;

double *temp;

temp = (double *)malloc(sizeof(double)*n);

for(i=0; i<n-1; i++)

{

for(j=i; j<n; j++)

{

rem = 0;

for(l=i;l<n; l++)

rem = rem + qr[l*n+i]*qr[j*n+i]*b[l];

temp[j] = b[j] - 2*rem;

}

for(j=i; j<n; j++)

b[j] = temp[j];

}

for(j=n-1; j>-1; j--)

{

for(l=n-1; l!=j;--l)

b[j] =b[j] - b[l]*qr[j*n+l];

b[j] = b[j] /d[j];

}

return false;

}

版权声明:此文档由查字典文档网用户提供,如用于商业用途请与作者联系,查字典文档网保持最终解释权!

下载文档

热门试卷

2016年四川省内江市中考化学试卷
广西钦州市高新区2017届高三11月月考政治试卷
浙江省湖州市2016-2017学年高一上学期期中考试政治试卷
浙江省湖州市2016-2017学年高二上学期期中考试政治试卷
辽宁省铁岭市协作体2017届高三上学期第三次联考政治试卷
广西钦州市钦州港区2016-2017学年高二11月月考政治试卷
广西钦州市钦州港区2017届高三11月月考政治试卷
广西钦州市钦州港区2016-2017学年高一11月月考政治试卷
广西钦州市高新区2016-2017学年高二11月月考政治试卷
广西钦州市高新区2016-2017学年高一11月月考政治试卷
山东省滨州市三校2017届第一学期阶段测试初三英语试题
四川省成都七中2017届高三一诊模拟考试文科综合试卷
2017届普通高等学校招生全国统一考试模拟试题(附答案)
重庆市永川中学高2017级上期12月月考语文试题
江西宜春三中2017届高三第一学期第二次月考文科综合试题
内蒙古赤峰二中2017届高三上学期第三次月考英语试题
2017年六年级(上)数学期末考试卷
2017人教版小学英语三年级上期末笔试题
江苏省常州西藏民族中学2016-2017学年九年级思想品德第一学期第二次阶段测试试卷
重庆市九龙坡区七校2016-2017学年上期八年级素质测查(二)语文学科试题卷
江苏省无锡市钱桥中学2016年12月八年级语文阶段性测试卷
江苏省无锡市钱桥中学2016-2017学年七年级英语12月阶段检测试卷
山东省邹城市第八中学2016-2017学年八年级12月物理第4章试题(无答案)
【人教版】河北省2015-2016学年度九年级上期末语文试题卷(附答案)
四川省简阳市阳安中学2016年12月高二月考英语试卷
四川省成都龙泉中学高三上学期2016年12月月考试题文科综合能力测试
安徽省滁州中学2016—2017学年度第一学期12月月考​高三英语试卷
山东省武城县第二中学2016.12高一年级上学期第二次月考历史试题(必修一第四、五单元)
福建省四地六校联考2016-2017学年上学期第三次月考高三化学试卷
甘肃省武威第二十三中学2016—2017学年度八年级第一学期12月月考生物试卷

网友关注视频

飞翔英语—冀教版(三起)英语三年级下册Lesson 2 Cats and Dogs
沪教版牛津小学英语(深圳用) 四年级下册 Unit 7
【部编】人教版语文七年级下册《泊秦淮》优质课教学视频+PPT课件+教案,天津市
青岛版教材五年级下册第四单元(走进军营——方向与位置)用数对确定位置(一等奖)
北师大版数学四年级下册第三单元第四节街心广场
冀教版小学数学二年级下册第二单元《租船问题》
人教版历史八年级下册第一课《中华人民共和国成立》
沪教版牛津小学英语(深圳用) 四年级下册 Unit 2
19 爱护鸟类_第一课时(二等奖)(桂美版二年级下册)_T3763925
沪教版八年级下册数学练习册20.4(2)一次函数的应用2P8
七年级英语下册 上海牛津版 Unit5
化学九年级下册全册同步 人教版 第22集 酸和碱的中和反应(一)
【部编】人教版语文七年级下册《泊秦淮》优质课教学视频+PPT课件+教案,辽宁省
第19课 我喜欢的鸟_第一课时(二等奖)(人美杨永善版二年级下册)_T644386
冀教版英语四年级下册第二课
第五单元 民族艺术的瑰宝_15. 多姿多彩的民族服饰_第二课时(市一等奖)(岭南版六年级上册)_T129830
沪教版八年级下册数学练习册21.3(2)分式方程P15
8.练习八_第一课时(特等奖)(苏教版三年级上册)_T142692
外研版英语三起6年级下册(14版)Module3 Unit1
七年级下册外研版英语M8U2reading
冀教版小学数学二年级下册第二单元《余数和除数的关系》
【部编】人教版语文七年级下册《老山界》优质课教学视频+PPT课件+教案,安徽省
【部编】人教版语文七年级下册《过松源晨炊漆公店(其五)》优质课教学视频+PPT课件+教案,江苏省
苏科版数学七年级下册7.2《探索平行线的性质》
外研版英语三起6年级下册(14版)Module3 Unit2
外研版英语七年级下册module3 unit2第二课时
七年级英语下册 上海牛津版 Unit3
冀教版小学数学二年级下册第二周第2课时《我们的测量》宝丰街小学庞志荣
化学九年级下册全册同步 人教版 第18集 常见的酸和碱(二)
每天日常投篮练习第一天森哥打卡上脚 Nike PG 2 如何调整运球跳投手感?