文档详情

矩阵与数值分析编程实验报告..doc

发布:2017-01-21约5.35千字共13页下载文档
文本预览下载声明
《矩阵与数值分析》实验报告 对于数列,有如下两种生成方式 1、首项为,递推公式为; 2、前两项为,递推公式为; 给出利用上述两种递推公式生成的序列的第50项。 解:首先对递推公式1,用C++编程如下: #include iostream.h void main() { double A[50]={1.0,1.0/3}; for (int i=1;i50;i++) { A[i]=1.0/3*A[i-1]; cout第i+1项的值:A[i]endl; } } 运行结果如下图所示: 对递推公式2,用C++编程如下: #include iostream.h void main() { double A[50]={1.0,1.0/3}; for (int i=2;i50;i++) { A[i]=10.0/3*A[i-1]-A[i-2]; cout第i+1项的值:A[i]endl; } } 运行结果如下图所示: 利用迭代格式 及Aitken加速后的新迭代格式求方程在内的根 解:利用一般迭代格式用C++编程代码如下: #includeiostream #includemath.h using namespace std; double Fun(double x); int main() { double a,B,Number,r=1.0e-6; a=1.0; Number=0; do { B=a; a=Fun(a); Number++; } while((a-B)r||(a-B)-r); coutThe formal iterative way!endl; coutIteration Numbers is Numberendl; coutThe answer is aendl; //输出迭代次数和结果 return 0; } double Fun(double x) { return sqrt(10.0/(x+4)); } 计算结果如下图所示: 用Aiken加速后的新迭代格式求解用C+编程代码如下: #includeiostream #includemath.h using namespace std; double Function(double x)//定义函数 { return sqrt(10.0/(x+4)); } int main() { double a,i=0,a1,y1,y2,r=1.0e-6; a=1.0; do { a1=a; y1=Function(a); y2=Function(y1); a=y2-(y2-y1)*(y2-y1)/(y2-y1*2+a); i++; }while((a-a1)r||(a-a1)-r); cout用Aitken迭代法计算结果如下:\n; cout迭代次数为: iendl; cout计算结果为: aendl;//输出迭代次数和结果 return 0; } 解线性方程组 分别Jacobi迭代法和Gauss-Seidel迭代法求解线性方程组 迭代法计算停止的条件为:. 解:1Jacobi迭代法解方程,代码如下: #include iostream #include math.h using namespace std; void main() { double a[4][4]={{6.0,2.0,1.0,-2.0},{2.0,5.0,0.0,-2.0}, {-2.0,0.0,8.0,5.0},{1.0,3.0,2.0,7.0}}; double b[4]={4.0,7.0,-1.0,0.0}, x[4]={0},x1[4],r=1.0e-6,t,s; int i,j,c,d,e=0; cout.precision(8); do { for (c=0;c4;c++) { x1[c]=x[c]; } for (i=0;i4;i++) { s=0.0; for (j=0;j4;j++) { if(j!=i) s+=a[i][j]*x[j]; } x[i]=(b[i]-s)/a[i][i]; } t=fabs(x[0]-x1[0]); for (d=0;d4;d++) { coutx[d] ; if (tfabs(x[d]-x1[d])) t=fabs(x[d]-x1[d]); } coutendl; e++; if(tr) break; } whi
显示全部
相似文档