C语言课程设计----曲线拟合最小二乘法
数值分析上机
实验报告
姓 名学 号班 级指 导 教 师实验名称开 设 学 期– 2011第二学期评 定 成 绩评定人签字评 定 日 期=
x= ( 1, -1, 0, 1, 2, 0, 3, 1, -1, 2 )
2、设对称正定阵系数阵线方程组
=
x = ( 1, -1, 0, 2, 1, -1, 0, 2 )
3、三对角形线性方程组
=
x= ( 2, 1, -3, 0, 1, -2, 3, 0, 1, -1 )
试分别选用Jacobi 迭代法,Gauss-Seidol迭代法和SOR方法计算其解。
实验要求
1、体会迭代法求解线性方程组,并能与消去法做以比较;
2、分别对不同精度要求,由迭代次数体会该迭代法的收敛快慢;
3、对方程组2,3使用SOR方法时,选取松弛因子=0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者;
4、给出各种算法的设计程序和计算结果。
目的和意义
1、通过上机计算体会迭代法求解线性方程组的特点,并能和消去法比较;
2、运用所学的迭代法算法,解决各类线性方程组,编出算法程序;
3、体会上机计算时,终止步骤< 或k >(予给的迭代次数),对迭代法敛散性的意义;
4、体会初始解 x,松弛因子的选取,对计算结果的影响。
流程图设计
1.主要部分流程
2.Jacobi 算法流程
3.GS 算法流程图
4.SOR算法流程
结构程序设计
#include
using namespace std;
#define N 40
const int n=10;
int jacobi(float *p,float b[],float X[],float x[],int n);
int GS(float *p,float b[],float X[],float x[],int n);
int SOR(float *p,float b[],float X[],float x[],int n);
void print(float *a,int r);
void main()
{
float A[10][10]={4,2,-3,-1,2,1,0,0,0,0,
8,6,-5,-3,6,5,0,1,0,0,
4,2,-2,-1,3,2,-1,1,9,4,
0,-2,1,5,-1,3,-1,1,9,4,
-4,2,6,-1,6,7,-3,3,2,3,
8,6,-8,5,7,17,2,6,-3,5,
0,2,-1,3,-4,2,5,3,0,1,
16,10,-11,-9,17,34,2,-1,2,2,
4,6,2,-7,13,9,2,0,12,4,
0,0,-1,8,-3,-24,-8,6,3,-1};
float a[10]={7,5,-13,2,6,-12,14,-4,5,-5};
float X1[10]={0,0,0,0,0,0,0,0,0,0};
float x1[10];
float B[8][8]={4,2,-4,0,2,4,0,0,
2,2,-1,-2,1,3,2,0,
-4,-1,14,1,-8,-3,5,6,
0,-2,1,6,-1,-4,-3,3,
2,1,-8,-1,22,4,-10,-3,
4,3,-3,-4,4,11,1,-4,
0,2,5,-3,-10,1,14,2,
0,0,6,3,-3,-4,2,19};
float b[8]={0,-6,6,23,11,-22,-15,45};
float X2[8]={0,0,0,0,0,0,0,0};
float x2[8];
float C[10][10]={4,-1,0,0,0,0,0,0,0,0,
-1,4,-1,0,0,0,0,0,0,0,
0,-1,4,-1,0,0,0,0,0,0,
0,0,-1,4,-1,0,0,0,0,0,
0,0,0,-1,4,-1,0,0,0,0,
0,0,0,0,-1,4,-1,0,0,0,
0,0,0,0,0,-1,4,-1,0,0,
0,0,0,0,0,0,-1,4,-1,0,
0,0,0,0,0,0,0,-1,4,-1,
0,0,0,0,0,0,0,0,-1,4};
float c[10]={7,5,-13,2,6,-12,14,-4,5,-5};
float x3[10];
float X3[10]={0,0,0,0,0,0,0,0,0,0};
float *p[3];
p[0]=&A[0][0];
p[1]=&B[0][0];
p[2]=&C[0][0];
cout<