东北大学软件学院数值分析程序实践报告
数值分析第三次实习报告

武汉理工大学学生实验报告书实验课程名称:数值分析( 第三次实习)开课名称:计算机科学与技术学院指导老师姓名:熊盛武学生姓名:学生专业班级:软件工程0803班2009 —— 2010学年第一学期一、实习目的:(1)通过编程计算实践,体会和理解复化梯形公式和复化Simpson公式。
(2)通过编程计算实践,搞清变步长梯形公式的计算流程。
(3)通过编程计算实践,掌握和提高Romberg算法流程的控制技术。
(4)通过各种方法对同一题目的求解,体会各种方法的精度差异。
二、实习步骤:(1)分别画出复化梯形公式,复化Simpson公式,变步长梯形公式和Romberg 公式的算法流程图。
(2)分别用复化梯形公式和复化Simpson公式通过编程计算积分,并分析和比较算法的效率差异和精度差异。
(3)用变步长梯形公式通过编程计算积分,并分析算法精度与二分法次数之间的关系。
(4)用Romberg公式通过编程计算积分,并分析算法精度与二分法次数之间的关系。
三、算法流程图:(一)复化梯形求算法积流程图(三)变步长梯形求积算法流程图(二)复化Simpson求积算法流程图(四)Romberg公式求积流程图四、编程计算积分(一)复化梯形:(1)复化梯形算法描述(1)输入求积区间a,b和区间等分数n(2)计算步长h h=(b-a)/n(3)对于i=0到i=n-1计算节点函数值f(a+i*h)(4)计算积分值T=T+2*temp;Tn=(f(a)+f(b)+T)*h/2;(5)输出积分值(2)复化梯形求积程序源代码#include<iostream>#include<cmath>double f(double t){return 1/(1+t*t);}using namespace std;int main(){int i,n;double h,a,b,T,temp,Tn;cout<<"请输入求积区间:"<<endl;cin>>a>>b;cout<<"请输入区间等分数:"<<endl;cin>>n;h=(b-a)/n;temp=0;T=0;for(i=1;i<n;i++){temp=f(a+i*h);T=T+2*temp;}Tn=(f(a)+f(b)+T)*h/2;cout<<"经过复化梯形求积所得积分值T"<<n<<"为: "<<Tn<<endl;return 0;}(3)调试过程,实验结果及分析:1/(x*x)在区间[0,1]上8等分后,程序运行结果如下:对区间等分后求每个子区间上的积分值,然后将每个子区间的积分值相加,就得到整个积分区间上的积分值,梯形公式具有一次代数精度。
数值分析实验报告心得(3篇)

第1篇在数值分析这门课程的学习过程中,我深刻体会到了理论知识与实践操作相结合的重要性。
通过一系列的实验,我对数值分析的基本概念、方法和应用有了更加深入的理解。
以下是我对数值分析实验的心得体会。
一、实验目的与意义1. 巩固数值分析理论知识:通过实验,将课堂上学到的理论知识应用到实际问题中,加深对数值分析概念和方法的理解。
2. 培养实际操作能力:实验过程中,我学会了使用Matlab等软件进行数值计算,提高了编程能力。
3. 增强解决实际问题的能力:实验项目涉及多个领域,通过解决实际问题,提高了我的问题分析和解决能力。
4. 培养团队协作精神:实验过程中,我与同学们分工合作,共同完成任务,培养了团队协作精神。
二、实验内容及方法1. 实验一:拉格朗日插值法与牛顿插值法(1)实验目的:掌握拉格朗日插值法和牛顿插值法的原理,能够运用这两种方法进行函数逼近。
(2)实验方法:首先,我们选择一组数据点,然后利用拉格朗日插值法和牛顿插值法构造插值多项式。
最后,我们将插值多项式与原始函数进行比较,分析误差。
2. 实验二:方程求根(1)实验目的:掌握二分法、Newton法、不动点迭代法、弦截法等方程求根方法,能够运用这些方法求解非线性方程的根。
(2)实验方法:首先,我们选择一个非线性方程,然后运用二分法、Newton法、不动点迭代法、弦截法等方法求解方程的根。
最后,比较不同方法的收敛速度和精度。
3. 实验三:线性方程组求解(1)实验目的:掌握高斯消元法、矩阵分解法等线性方程组求解方法,能够运用这些方法求解线性方程组。
(2)实验方法:首先,我们构造一个线性方程组,然后运用高斯消元法、矩阵分解法等方法求解方程组。
最后,比较不同方法的计算量和精度。
4. 实验四:多元统计分析(1)实验目的:掌握多元统计分析的基本方法,能够运用这些方法对数据进行分析。
(2)实验方法:首先,我们收集一组多元数据,然后运用主成分分析、因子分析等方法对数据进行降维。
东北大学软件学院学生实训总结报告 软件1206 孙永晖 20124835

东北大学软件学院学生实训总结报告专业:软件工程班级:1206学号:20124835姓名:孙永晖实训基地:大连中软国际卓越计算机培训中心企业指导教师:杨迪2015年8月31日目录1前言 (1)1.1实训背景 (1)1.2实训环境 (1)2实训内容 (2)2.1实训过程 (2)2.2实训内容 (2)2.3主要成果 (2)3总结 (3)3.1实训体会 (3)3.2其它意见 (3)1前言1.1 实训背景为培养出优秀的软件行业的精英人才,东北大学软件学院在大三下学期期末结尾阶段,将学生送入企业进行实训。
这也是东北大学软件学院的一大特色,理论与实践相结合。
在此之前,我也通过网上查询得知中软卓越计算机培训中心是国内非常有名的,因此在实训开始后,我报名申请到大连中软进行实习。
到达中软之后我进入到JA V A 1527班,在杨迪老师的指导下学习。
在2015年6月8日正式进入到大连中软开始为期10周的实训学习。
1.2 实训环境实训单位名称:中软国际卓越培训中心(ETC)地址:中国辽宁省大连市高新园区宏川东路黄泥川天地软件园金枫楼三层实训单位性质:大型人才服务机构规模:中软国际卓越培训中心(大连)是中软国际卓越培训中心继北京总部之后,建立的又一家分基地,也是大连市政府招商引资的重点支持项目之一。
自2008年9月启动至今,累计实训人数近1000人,500余名学员通过大连中软实训找到了人生中的第一份工作,由此开启他们的IT职业生涯。
由于实训人数逐年激增,为了让更多的学子获得一流的IT实训服务,经过紧张的前期筹备,大连中心于10月11日正式入驻大连天地软件园金枫楼三层,已拥有近2568平米的优雅整洁的实训环境,相较之前的面积扩大了一倍,15个多媒体教室,可同时容纳900人进行项目实战。
简介:为响应国家政策,以更快、更好、更大规模的培养软件人才。
2008年,由中软国际投资成立了中软国际教育科技集团(ETC总部),并先后在除北京外的长沙、大连、无锡、重庆、厦门、天津、南京等地投资建设了3000-10000平米不等的实训基地。
东北大学软件学院汇编实验报告2

(附录二)汇编语言程序设计实验报告实验名称逻辑指令、跳转指令与分支程序设计班级学号姓名日期成绩评阅人软件学院一、实验目的与意义了解和掌握逻辑指令、比较指令、无条件/有条件转移类指令的功能和作用,以及此类指令的使用方法。
二、实验环境操作系统:windows7调试软件名称及版本号:Microsoft Visual Studio2008三、实验的预习内容预习的主要内容:看了逻辑指令add,or,not,xor,test和有条件无条件转移指令的作用和使用方法实验思路:观察寄存器的数值在逻辑指令作用前后的变化,了解逻辑指令的作用,通过使用条件或无条件跳转指令,用逐语句调试观察程序运行的步骤和顺序,了解条件跳转语句的作用四、实验的步骤与调试方法实验的大致步骤:在.code中通过把赋值的寄存器通过各个逻辑指令,逐语句调试观察各个寄存器前后的变化。
在程序中使用跳转语句,观察程序运行的顺序,了解各个指令的作用实验中遇到的问题及调试方法:当把16进制的数值赋值给寄存器时,直接写的16进制的数,调试报错。
后来在16进制的数后加h,程序运行。
如果不加后缀计算机默认为10进制,会导致计算机无法识别数值五、实验数据与实验结果在DEBUG系统状态下,分别编制、调试并记录以下逻辑指令程序段的每一条指令的运行情况:(Ⅰ)mov al,41 ┃EAX = 76A51129 EBX = 7FFD8000 ECX = 00000000EDX = 00171005 ESI = 00000000 EDI = 00000000EIP = 00171017 ESP = 0027FA50 EBP = 0027FA58EFL = 00000246or al,20 ┃EAX = 76A5113D EBX = 7FFD8000 ECX = 00000000EDX = 00171005 ESI = 00000000 EDI = 00000000EIP = 00171019 ESP = 0027FA50 EBP = 0027FA58EFL = 00000202(Ⅱ)mov al,66 ┃EAX = 76FC1142 EBX = 7FFDC000 ECX = 00000000EDX = 01211005 ESI = 00000000 EDI = 00000000EIP = 01211017 ESP = 0026FEBC EBP = 0026FEC4EFL = 00000246and al,0df ┃EAX = 76FC1142 EBX = 7FFDC000 ECX = 00000000EDX = 01211005 ESI = 00000000 EDI = 00000000EIP = 01211019 ESP = 0026FEBC EBP = 0026FEC4EFL = 00000206(Ⅲ)mov EAX,5678 ┃EAX = 0000162E EBX = 7FFD9000 ECX = 00000000EDX = 01071005 ESI = 00000000 EDI = 00000000EIP = 0107101A ESP = 0014FE90 EBP = 0014FE98EFL = 00000246xor EAX,EAX ┃EAX = 00000000 EBX = 7FFD9000 ECX = 00000000EDX = 01071005 ESI = 00000000 EDI = 00000000EIP = 0107101C ESP = 0014FE90 EBP = 0014FE98EFL = 00000246(Ⅳ)mov EAX,0ff00 ┃EAX = 0000FF00 EBX = 7FFD8000 ECX = 00000000EDX = 002A1005 ESI = 00000000 EDI = 00000000EIP = 002A101A ESP = 0021FC5C EBP = 0021FC64EFL = 00000246not EAX ┃EAX = FFFF00FF EBX = 7FFD8000 ECX = 00000000EDX = 002A1005 ESI = 00000000 EDI = 00000000EIP = 002A101C ESP = 0021FC5C EBP = 0021FC64EFL = 00000246(Ⅴ)mov EAX,1234 ┃EAX = 000004D2 EBX = 7FFD6000 ECX = 00000000EDX = 00311005 ESI = 00000000 EDI = 00000000EIP = 0031101A ESP = 0029FA64 EBP = 0029FA6CEFL = 00000246test EAX,1 ┃EAX = 000004D2 EBX = 7FFD6000 ECX = 00000000EDX = 00311005 ESI = 00000000 EDI = 00000000EIP = 0031101F ESP = 0029FA64 EBP = 0029FA6CEFL = 00000246test EAX,2 ┃EAX = 000004D2 EBX = 7FFD6000 ECX = 00000000EDX = 00311005 ESI = 00000000 EDI = 00000000EIP = 00311024 ESP = 0029FA64 EBP = 0029FA6CEFL = 00000202test EAX,4 ┃EAX = 000004D2 EBX = 7FFD6000 ECX = 00000000EDX = 00311005 ESI = 00000000 EDI = 00000000EIP = 00311029 ESP = 0029FA64 EBP = 0029FA6CEFL = 00000246test EAX,8 ┃EAX = 000004D2 EBX = 7FFD6000 ECX = 00000000EDX = 00311005 ESI = 00000000 EDI = 00000000EIP = 0031102E ESP = 0029FA64 EBP = 0029FA6CEFL = 00000246test EAX,10 ┃EAX = 000004D2 EBX = 7FFD6000 ECX = 00000000EDX = 00311005 ESI = 00000000 EDI = 00000000EIP = 00311033ESP = 0029FA64 EBP = 0029FA6CEFL = 00000202test EAX,20 ┃EAX = 000004D2 EBX = 7FFD6000 ECX = 00000000EDX = 00311005 ESI = 00000000 EDI = 00000000EIP = 00311038 ESP = 0029FA64 EBP = 0029FA6CEFL = 00000202test EAX,40 ┃EAX = 000004D2 EBX = 7FFD6000 ECX = 00000000EDX = 00311005 ESI = 00000000 EDI = 00000000EIP = 0031103D ESP = 0029FA64 EBP = 0029FA6CEFL = 00000246test EAX,80 ┃EAX = 000004D2 EBX = 7FFD6000 ECX = 00000000EDX = 00311005 ESI = 00000000 EDI = 00000000EIP = 00311042 ESP = 0029FA64 EBP = 0029FA6CEFL = 00000206test指令的作用是:在每对操作数的对应数据位之间执行隐含的“与”操作,并相应设置标志位,并且不改变目的操作数。
东北大学软件学院数值分析程序实践报告

数值分析程序实践 实验报告东北大学软件学院实验目的:用SOR 法求解方程组:=0.65、1、1.2、1.45计算.要求精度为10-6;并指出迭代次数。
实验代码和结果:#include<iostream>⎪⎪⎩⎪⎪⎨⎧=+-+-=-+-=+-+--=-+-1322151481615356212146106882644321432143214321x x x x x x x x x x x x x x x x#include<iomanip>#include<cmath> // fabs();using namespace std;void SolveEquation(const int &dim){double *Arr = new double[dim*dim]; //方程矩阵double *B = new double[dim]; //方程右端系数double *X = new double[dim]; //初始解double *dX = new double[dim];double e; //解的精度double w; //w==1时,为GS迭代double S, S1;const int N = 5000; //最大迭代次数,防止死机int n=0;bool hasSolved = false;cout << endl << "初始化方程组左端系数矩阵!" << endl;for (int i=0; i<dim; i++){for (int j=0; j<dim; j++){cout << "Arr[" << i << "][" << j << "]: ";cin >> Arr[i*dim+j];}}cout << "初始化方程组右端系数矩阵!" << endl;for (i=0; i<dim; i++){cout << "B[" << i << "]: ";cin >> B[i];}system("cls");cout << "方程组如下: " << endl << endl;for (i=0; i<dim; i++){for (int j=0; j<dim; j++){cout << setw(8) << Arr[i*dim+j] << " X" << j+1;if (j < dim-1) cout << " + ";else if (j == dim-1) cout << " = ";}cout << setw(8) << B[i] << endl;}cout << endl << "设置解的精度要求:(比如1e-6)" << endl; cin >> e;cout << endl;cout << "输入初始向量!" << endl;for (i=0; i<dim; i++){cout << "X[" << i+1 << "]: ";cin >> X[i];}cout << endl << "设置参数ω ( 0<ω<2 )!" << endl;cin >> w;for (int k=0; k<N; k++) //3-8{S = 0.0;for (i=0; i<dim; i++) //5-7{double sum = 0.0;for (int j=0; j<dim; j++){sum += Arr[i*dim+j]*X[j];}if (fabs(Arr[i*dim+i]) < 1e-10){cout << "被零除!" << endl << Arr[i*dim+i] << endl; exit(0);}dX[i] = w * (B[i] - sum) / Arr[i*dim+i];S1 = dX[i];if (fabs(S1) > fabs(S)){//fabs()取绝对值函数S = S1;}X[i] = X[i] + S1;}n++;if (fabs(S) <= e){cout<<"迭代次数为:"<<endl;cout<<n<<endl;hasSolved = true;//system("cls");cout << "线性方程组的解为:" << endl;for (int t=0; t<dim; t++){cout << "X" << t+1 << "=" << X[t] << "\t";}cout << endl;break;}}if (!hasSolved){cout << "初始向量或ω不合理, 请重新设置!" << endl; }delete[] Arr;delete[] B;delete[] X;delete[] dX;}void main(){int dim;cout << "输入线性方程组未知数个数: ";cin >> dim;SolveEquation(dim);}w=0.65W=1W=1.2W=1.45。
东北大学软件学院汇编实验报告1

(附录二)汇编语言程序设计实验报告实验名称实验1 数据传送指令班级学号姓名日期成绩评阅人软件学院一、实验目的与意义了解和掌握 MOV、PUSH、POP、XCHG四条指令的作用和在编程中的用法。
二、实验环境操作系统:windows7调试软件名称及版本号:Microsoft Visual Studio2008三、实验的预习内容预习的主要内容:在实验前主要预习了MOV、PUSH、POP、XCHG四条指令的作用及用法,看了这4条指令使用的格式以及几个应用的例子,了解了MOV、PUSH、POP、XCHG的使用方法。
实验思路:把具体是数值用MOV指令传给寄存器,通过寄存器的数值变化来了解MOV的作用,通过观察寄存器PUSH或POP之前和之后的变化,了解push和pop的用作,通过XCHG作用于两个寄存器,观察使用前后的变化,了解XCHG的作用四、实验的步骤与调试方法1.实验的大致步骤:通过在.code中填入实验所给的数据,通过逐语句调试来观察各个寄存器的数值变化2.在实验中遇到的问题及调试方法开始的时候没有采用逐语句调试的方法,由于没有输出,看不到结果,最后采用逐语句的调试方法,看到寄存器的变化在调试时报错,后来发现在目的操作数和源操作数之间忘加逗号了导致程序无法运行五、实验数据与实验结果实验所用的总的框架代码是TITLE MASM Template (main.asm)INCLUDE Irvine32.inc.data.codemain PROCcall Clrscr(每个实验的代码写在这里)exitmain ENDPEND main下面所写的每个实验的代码都是写在.code里的一段代码(I)采用立即数寻址方式将19E0H,3F56H,0AF37H,9A81H分别送给EAX、EBX、ECX、EDX四个寄存器。
操作前:EAX = 76A51102 EBX = 7FFD9000 ECX = 00000000 EDX = 01291005 操作后:EAX = 000019E0 EBX = 00003F56 ECX = 0000AF37 EDX = 00009A81 操作过程中所用到的指令::mov eax,19E0Hmov ebx,3F56Hmov ecx,0AF37Hmov edx,9A81H(Ⅱ)采用采用寄存器寻址方式将19E0H送给EBX、ECX、EDX三个寄存器。
数值分析上机实践报告

数值分析上机实践报告一、实验目的本实验的目的是通过编写数值分析程序,掌握解决数学问题的数值计算方法,并通过实际应用来检验其有效性和准确性。
具体包括以下几个方面的内容:1.掌握二分法和牛顿迭代法的基本原理和实现方法;2.熟悉利用矩阵的LU分解和追赶法解线性方程组的过程;3.通过具体的实例应用,比较不同方法的计算效果和精度。
二、实验内容本实验分为三个部分,每个部分包括一个具体的数学问题和相应的数值计算方法。
1.问题一:求方程f(x)=x^3-5x^2+10x-80=0的近似解。
在问题一中,我们通过二分法和牛顿迭代法来求解方程的近似解,并比较两种方法的精度和收敛速度。
2.问题二:用LU分解解线性方程组。
问题二中,我们通过矩阵的LU分解方法解线性方程组Ax=b,然后和直接用追赶法解线性方程组进行对比,验证LU分解的有效性和准确性。
三、实验结果及分析1.问题一的结果分析:通过二分法和牛顿迭代法求解方程f(x)=x^3-5x^2+10x-80=0的近似解,得到的结果如下:从结果来看,两种方法得到的近似解均与真实解x≈5非常接近。
但是,通过比较可以发现,牛顿迭代法的计算速度比二分法更快,迭代的次数更少。
因此,在需要高精度近似解的情况下,牛顿迭代法是一个更好的选择。
2.问题二的结果分析:通过LU分解和追赶法解线性方程组Ax=b,得到的结果如下:-用LU分解解线性方程组得到的结果为x1≈1.0,x2≈2.0,x3≈3.0;-用追赶法解线性方程组得到的结果为x1≈1.0,x2≈2.0,x3≈3.0。
从结果来看,两种方法得到的结果完全一致,而且与真实解非常接近。
这表明LU分解方法和追赶法均可以有效地解决线性方程组问题。
但是,在实际应用中,当方程组规模较大时,LU分解方法的计算复杂度较高,因此追赶法更加适用。
四、实验总结通过本实验,我掌握了二分法和牛顿迭代法以及LU分解和追赶法的基本原理和实现方法。
通过具体的数学问题实例应用,我比较了不同方法的计算效果和精度,得出以下结论:1.在求解函数的近似解时,牛顿迭代法相对于二分法具有更快的收敛速度和更高的计算精度;2.在解决线性方程组问题时,LU分解方法在计算准确性方面与追赶法相当,但在处理较大规模的问题时,计算复杂度较高,追赶法更适合。
数值分析实习报告总结

一、实习背景数值分析是数学的一个重要分支,它研究如何用数值方法求解数学问题。
随着计算机技术的飞速发展,数值分析在各个领域得到了广泛的应用。
为了提高自己的实践能力,我选择了数值分析作为实习课题,希望通过这次实习,能够掌握数值分析的基本方法,并将其应用于实际问题中。
二、实习过程1. 实习初期在实习初期,我首先了解了数值分析的基本概念、理论和方法。
通过阅读相关教材和文献,我对数值分析有了初步的认识。
接着,我学习了数值分析的基本方法,如泰勒展开、牛顿法、高斯消元法等。
2. 实习中期在实习中期,我选择了几个实际问题进行数值计算。
首先,我使用泰勒展开法求解一个简单的微分方程。
通过编写程序,我得到了微分方程的近似解。
然后,我运用牛顿法求解一个非线性方程组。
在实际计算过程中,我遇到了一些问题,如收敛性、迭代次数过多等。
通过查阅资料和请教导师,我找到了解决方法,成功求解了方程组。
3. 实习后期在实习后期,我进一步学习了数值分析的高级方法,如复化梯形公式、复化Simpson公式、自适应梯形法等。
这些方法在解决实际问题中具有更高的精度和效率。
我选择了一个具体的工程问题,运用复化梯形公式求解定积分。
在计算过程中,我遇到了区间细分、精度控制等问题。
通过不断尝试和调整,我得到了较为精确的积分值。
三、实习收获与体会1. 理论与实践相结合通过这次实习,我深刻体会到理论与实践相结合的重要性。
在实习过程中,我不仅学习了数值分析的理论知识,还将其应用于实际问题中。
这使我更加深刻地理解了数值分析的基本方法,提高了自己的实践能力。
2. 严谨的学术态度在实习过程中,我养成了严谨的学术态度。
在编写程序、进行数值计算时,我注重细节,力求精确。
这使我更加注重学术规范,提高了自己的学术素养。
3. 团队合作精神实习过程中,我与其他同学进行了交流与合作。
在解决实际问题时,我们互相学习、互相帮助,共同完成了实习任务。
这使我更加懂得团队合作的重要性,提高了自己的团队协作能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值分析程序实践 实验报告
东北大学软件学院
实验目的:
用SOR 法求解方程组:
=0.65、1、1.2、1.45计算.要求精度为10-6;并指出迭代次数。
实验代码和结果:
#include<iostream>
⎪⎪⎩⎪⎪⎨⎧=+-+-=-+-=+-+--=-+-1322151481615356212146106882644321432143214321x x x x x x x x x x x x x x x x
#include<iomanip>
#include<cmath> // fabs();
using namespace std;
void SolveEquation(const int &dim)
{
double *Arr = new double[dim*dim]; //方程矩阵
double *B = new double[dim]; //方程右端系数
double *X = new double[dim]; //初始解
double *dX = new double[dim];
double e; //解的精度
double w; //w==1时,为GS迭代
double S, S1;
const int N = 5000; //最大迭代次数,防止死机
int n=0;
bool hasSolved = false;
cout << endl << "初始化方程组左端系数矩阵!" << endl;
for (int i=0; i<dim; i++)
{
for (int j=0; j<dim; j++){
cout << "Arr[" << i << "][" << j << "]: ";
cin >> Arr[i*dim+j];
}
}
cout << "初始化方程组右端系数矩阵!" << endl;
for (i=0; i<dim; i++)
{
cout << "B[" << i << "]: ";
cin >> B[i];
}
system("cls");
cout << "方程组如下: " << endl << endl;
for (i=0; i<dim; i++)
{
for (int j=0; j<dim; j++)
{
cout << setw(8) << Arr[i*dim+j] << " X" << j+1;
if (j < dim-1) cout << " + ";
else if (j == dim-1) cout << " = ";
}
cout << setw(8) << B[i] << endl;
}
cout << endl << "设置解的精度要求:(比如1e-6)" << endl; cin >> e;
cout << endl;
cout << "输入初始向量!" << endl;
for (i=0; i<dim; i++){
cout << "X[" << i+1 << "]: ";
cin >> X[i];
}
cout << endl << "设置参数ω ( 0<ω<2 )!" << endl;
cin >> w;
for (int k=0; k<N; k++) //3-8
{
S = 0.0;
for (i=0; i<dim; i++) //5-7
{
double sum = 0.0;
for (int j=0; j<dim; j++)
{
sum += Arr[i*dim+j]*X[j];
}
if (fabs(Arr[i*dim+i]) < 1e-10)
{
cout << "被零除!" << endl << Arr[i*dim+i] << endl; exit(0);
}
dX[i] = w * (B[i] - sum) / Arr[i*dim+i];
S1 = dX[i];
if (fabs(S1) > fabs(S))
{//fabs()取绝对值函数
S = S1;
}
X[i] = X[i] + S1;
}
n++;
if (fabs(S) <= e)
{
cout<<"迭代次数为:"<<endl;
cout<<n<<endl;
hasSolved = true;
//system("cls");
cout << "线性方程组的解为:" << endl;
for (int t=0; t<dim; t++)
{
cout << "X" << t+1 << "=" << X[t] << "\t";
}
cout << endl;
break;
}
}
if (!hasSolved)
{
cout << "初始向量或ω不合理, 请重新设置!" << endl; }
delete[] Arr;
delete[] B;
delete[] X;
delete[] dX;
}
void main()
{
int dim;
cout << "输入线性方程组未知数个数: ";
cin >> dim;
SolveEquation(dim);
}
w=0.65
W=1
W=1.2
W=1.45。