当前位置:文档之家› 数值线性代数实验报告

数值线性代数实验报告

1.考虑线性方程 ,其中右端项为
而系数矩阵为 ,这里
矩阵 的元素是服从正态分布的随机数。
2.考虑对称正定线性方程组 ,其中向量 是随机生成的,其元素是服从区间 上均匀分布的随机数,矩阵 ,这里 是随机生成的一个下三角阵,其元素是服从区间 上均匀分布的随机数。
实验过程记录:
1.Guass消去法
#include <stdio.h>
}
p[k]=i;
for (p[k]!=k)
{
for(j=0;j<n;j++)
{
t=A[k][j];
A[k][j]=A[p[k]][j];
A[p[k]][j]=t;
}
}
if (!A[k][k])
return (error);
for(i=k+1;i<n:i++)
A[i][k]/=A[k][k];
{
for(i=k+1;j<n;j++)
ran=rand();
if(min>ran)min=ran;
if(max<ran)max=ran;
}
printf("min=%d\tmax=%d\n",min,max);
return(0);
}
#include <stdio.h>
#include <math.h>
#include "functions.h"
#include <math.h>
#include "fun s.h"
bool collu (double **A,int *p,int n)
{
int i,j,k;
double t;
for(k=0;k<n-1;k++)
{
p[k]=k;
for(i==k+1;i<n;i++)
if(fabs(A[i][k])>fabs(A[p[k]][k]))
思考与深入
通过本实验加深了解了线性方程组直接接法的两种方法。做实验要求我们把基础学扎实,上机实验让我又重新巩固了C语言知识,我的实验是线性方程组的直接解法,刚开始调试代码的时候有时候就是很小的错误导致整个程序不能运行,需要我们一步一步谨慎细致的进行,我们要熟练掌握编程语句,才能更快更准确且熟练地设计出程序。
L[i][j]-=L[j][k]*L[i][k];
}
L[n-1][n-1]=sqrt(L[n-1][n-1]);
}
void Lower(double**L,double*b,int n){
int k,i;
for(k=0;k<n-1;k++){
b[k]/=L[k][k];
for(i=k+1;i<n;i++)
数值线性代数实验报告
实验序号:日期:2014年4月8日
班级
信计二班
姓名
周慧娟
学号
1201214111
实验名称
线性方程组的直接解法
问题背景描述:
解方程组是常见的数学问题之一,也是众多应用领域中不可避免的问题之一。
目前还没有一般的解析方法来求解线性方程组,能够解出方程的近似解,则可以认为求解问题已基本解决,至少可以实际需求。
若 的顺序主子阵 ( =1,2,.....,n-1)均非奇异,则存在唯一的单位下三角阵 和上三角阵 ,使得 。
⒉平方根法
若 对称正定,则存在一个对角元均为正数的下三角阵 ,使得上式称为Cholesky分解,其中的 称作 的Cholesky因子。
实验所用软件及版本:window7下Vc++6.0
主要内容:
void Cholesky(double**L,int n){
int i,j,k;
for(k=0;k<n-1;k++){
L[k][k]=sqrt(L[k][k]);
for(i=k+1;i<n;i++)
L[i][k]/=L[k][k];
for(j=k+1;j<n;lt;n;i++)
for(int j=0;j<n;j++)
printf("%8.3f",x[j]);
printf("\n");
}
实验结果报告
Gauss消去法适用于求解中小规模线性方程组的求解,一般用于系数矩阵没有任何特殊结构的线性方程组。若系数矩阵具有某种特殊形式,则为了尽可能的减少计算量与储存量,需采用其他专门方法来求解。平方根法就是求解对称正定线性方程组最常用的的方法,对具有对称正定系数矩阵的线性方程组来说,平方根法要比高斯消去法快得多。
for(i=k+1;i<n;i++)
A[i][j]=A[k][j]*A[i][k];
}
return (ok);
}
2.平方根法
#include <stdio.h>
#include <stdlib.h>
int main(){
int min,max,ran;
min=max=rand();
for(int k=0;k<1000000;k++){
b[i]-=b[k]*L[i][k];
}
b[n-1]/=L[n-1][n-1];
}
void TLower(double**L,double*b,int n){
int i,k;
for(k=n-1;k>0;k--){
b[k]/=L[k][k];
for(i=0;i<k;i++)
b[i]-=b[k]*L[k][i];
实验目的:
本实验主要介绍一些有效的求解方程的数值方法:guass法和平方根法。同时要求大家学会如何利用Vc++6.0来求方程的近似解。
实验方法与原理:
1.Guass消去法
⑴主元 ( =1,2,....,k)均不为零的充分必要条件是 的 阶顺序主子阵 ( =1,2,.........,k)都是非奇异的。
}
b[0]/=L[0][0];
}
void showM(double**L,int n){
int i,j;
for(i=0;i<n;i++){
for(j=0;j<=i;j++)
printf("%8.3f",L[i][j]);
printf("\n");
}
}
void showV(double*x,int n){
相关主题