- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数值与符号计算LU及QR分解实验报告
数值与符号计算 实验(丑)
线性代数方程组求解
姓名: 学号: 学院:
实验题目
用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); 求线性代数方程组的解
实验要求
撰写详细的实验报告
不必修改函数界面
用高斯列选主元消去法和矩阵QR分解两种方法求解下面3个方程组,比较这两种方法的误差。
实验算法结果
矩阵的Lu分解算法代码如下:
bool lu(double* a, int* pivot, int n)//矩阵LU分解
{
int i,j,k;
double max,temp;
max = 0;
temp = 0;
for (i=0; in-1; i++)//依次对第i列进行处理
{
// 选出i列的主元,记录主元位置
max = fabs(a[n*i + i]);
pivot[i]=i;
for(j=i+1; jn; 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; jn; 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; jn; j++)//Pi 部分下三角L
a[n*j + i]=a[n*j+i]/a[n*i+i];
for(j=i+1; jn; j++)//计算上三角U
for(k=i+1; kn; k++)
a[n*j + k]=a[n*j+k]- a[n*j+i]*a[n*i+k];
}
//计算下三角 L
for(i=0; in-2; i++)//i行k列
for(k=i+1; kn-1;k++)
{
temp=a[n*pivot[k] + i];
a[n*pivot[k] + i]=a[k*n + i];
a[k*n + i]=temp;
}
return false ;
}
高斯求解线性方程组代码如下:
bool guass(double const* lu, int const* p, double* b, int n)//求线性代数方程组的解
{
int i,j;
double temp;
//按qivot对b行变换,与LU匹配
for(i=0; in-1; i++) //貌似错误在这里哦
{
temp = b[p[i]];
b[p[i]] = b[i];
b[i]=temp;
}
//Ly=b,将y的内容放入b
for(i=0; in; i++)
for(j=0; ji; 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; ji; j--)
b[i]=b[i]-lu[n*i+j]*b[j];
b[i]=b[i]/lu[n*i+i];
}
return false;
}
矩阵的QR分解算法代码如下:
void qr(double*
您可能关注的文档
最近下载
- 2024电梯监督检验和定期检验指南第1部分:乘客和载货电梯.pdf VIP
- 合成药物工艺研究.pptx VIP
- 电气预防性试验及防雷试验工程方案投标文件(技术方案).doc
- 基于“六位一体”内部控制的创新实践.pdf VIP
- 外商投资产业指导目录(2007年修订)(全文).doc VIP
- 新一代大学英语(提高篇)视听说教程 1 B1U1.pptx VIP
- 2025年秋新人教版数学三年级上册全册课件.pptx
- 吉J2020-011:木塑复合材料景观工程构造.pdf VIP
- 2024电梯监督检验和定期检验指南第3部分:杂物电梯.docx VIP
- 服装裁剪与制作(第三版)全书电子教案教学课件汇总.ppt
文档评论(0)