东北大学软件学院数值分析程序实践报告
数值分析第三次实习报告
武汉理工大学学生实验报告书实验课程名称:数值分析( 第三次实习)开课名称:计算机科学与技术学院指导老师姓名:熊盛武学生姓名:学生专业班级:软件工程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. 团队合作精神实习过程中,我与其他同学进行了交流与合作。
在解决实际问题时,我们互相学习、互相帮助,共同完成了实习任务。
这使我更加懂得团队合作的重要性,提高了自己的团队协作能力。
东北大学软件测试实验报告
竭诚为您提供优质文档/双击可除东北大学软件测试实验报告篇一:东北大学软件学院软件测试实验报告软件测试实验报告东北大学软件学院20XX年4月实验一功能性测试方法一、测试结果1.1边界值分析法1.2等价类测试1.3决策表分析二、实验总结1.1程序中存在的bug当在测试中发现正常输入start:“20XX-10-3002:00:00”ischanged_1=falseend:“20XX-10-3002:10:00”ischanged_2=true结果并非预期结果为:Total_time:70Total_cost:6.0(:东北大学软件测试实验报告) 检查代码得:当“2 Total_time=(end_d.getTime()-begin_d.getTime())/1000+60*602.2三种测试方法对揭露程序错误的异同点(1)等价类:把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据做为测试用例,这样就能以较少的具有代表性的数据进行测试,而取得较好的测试效果。
(2)边界值分析不是从某等价类中随便挑一个作为代,而是使这个等价类的每个边界都要作为测试条件;边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。
(3)在一些数据处理问题中,某些操作的实施依赖于多个逻辑条件的组合值,分别执行不同的操作,决策表很适合处理这类问题。
篇二:软件工程实验报告篇三:东北大学数据结构实验报告课程编号:b080101050《数据结构》实验报告东北大学软件学院1.实验目的针对每次实验,写出你认为比较重要的实验目的实验一:1、了解和掌握队列的数据类型描述及其特点。
2、掌握队列初始化、入队、出队等相关基本操作的实现方法,从而达到能灵活运用队列解决应用问题的目的实验二:1、加深对图的表示法和图的基本操作的理解,并可初步使用及操作;2、掌握用图对实际问题进行抽象方法,可以解决基本的问题;3、掌握利用邻接表求解非负权值、单源最短路径的方法,即利用迪杰斯特拉算法求最短路径,同时掌握邻接表的建立以及使用方法,能够解决相关的问题。
东北大学数值分析实验报告
数值分析实验班级 姓名 学号实验环境: MATLAB实验一 解线性方程组的迭代法(1)一、实验题目 对以下方程组分别采用Jacobi 迭代法, Gaaus-Seidel 迭代法求解和SOR 迭代法求解。
(2)线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--------------------------13682438141202913726422123417911101610352431205362177586832337616244911315120130123122400105635680000121324⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x =⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡-2119381346323125 (2)对称正定线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----------------------1924336021411035204111443343104221812334161206538114140231212200420424⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡87654321x x x x x x x x =⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡---4515221123660(3)三对角线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡------------------4100000000141000000001410000000014100000000141000000001410000000014100000000141000000001410000000014⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x =⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----5541412621357 二、实验要求(1)应用迭代法求线性方程组, 并与直接法作比较。
东北大学数据结构实践实验报告1
东北大学数据结构实践实验报告课程编号:B080109010数据结构课程设计总结报告东北大学软件学院第一章需求分析1.1建立主程序应用菜单选项主程序应用菜单选项包含所实现的所有功能,并且对选项采用数字标识进行选择,对其他错误输入可以进行判别,提示输入错误。
1.2导游线路图的创建级景区分布图的输出用邻接链表存储景点分布图的信息,(带权无向)图的邻接链表。
输出景区景点分布图(邻接矩阵)。
图中边的权值∞用32767表示。
1.3输出导游线路图景区旅游信息管理系统中制订旅游景点导游线路策略,首先通过遍历景点,给出一个入口景点,建立一个导游线路图,导游线路图用有向图表示。
1.4输出导游线路图中是否有回路景区旅游信息管理系统中,创建好导游路线图后,判断该图中是否存在回路。
1.5查找及排序●查找功能:可以根据用户输入的关键字进行景点的查找,关键字可以在景点名称也可以在景点介绍中。
查找成功则返回景点的相关简介,如果查找不成功请给予正确提示。
●排序功能:按景点欢迎度,景点的岔路数对景点进行排序并打印出来排序顺序。
1.6输出两个景点之间最短路径和最短距离求出两个景点间的最短路径和最短距离,并且输出道路修建规划图。
算法采用迪杰斯特拉算法。
1.7输出道路修建规划图道路建设首先要保证能连通所有景点,但又要花最小的代价。
1.8输出车辆的进出信息1.8.1具体需求:停车场是一个可以停放n辆汽车,且只有一个大门可供汽车进出。
汽车在停车场内按车辆到达时间的先后顺序,依次排列,若车场内已停满n辆车,后来的车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应缴纳的费用和它在停车场内停留的时间。
东北大学数值分析实验报告
实验一:解线性方程组的直接方法1、设线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--------------------------13682438141202913726422123417911101610352431205362177586832337616244911315120130123122400105635680000121324⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x =⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡-2119381346323125x *= (-1, 0, 1, 2, 0, 3, 1, -1, 2 )T2、设对称正定阵系数阵线方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----------------------192433621411035204111443343104221812334161206538114140231212200420424⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡87654321x x x x x x x x = ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡---4515229232060 x * = ( 1, -1, 0, 2, 1, -1, 0, 2 )T3、三对角形线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡------------------41141000000001410000000014100000000141000000001410000000014100000000141000000001410000000014⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x = ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----5541412621357 x *= ( 2, 1, -3, 0, 1, -2, 3, 0, 1, -1 )T分别用Gauss 顺序消去法与Gauss 列主元消去法:平方根法与改进平方根法:追赶法求解,编出算法通用程序用列主元消去法求解方程组一: 流程图如下:源程序:#include < iostream >#include < vector >#include < cmath >using namespace std;class CGAUSSSOLVEEQU{private :vector < vector < double >> m_equset; vector < double > m_answer;int m_n;public :void inputEquSet(double in[],int n); void solveEquSet();void outputAnswer();void change(int m,int m2);} ;void CGAUSSSOLVEEQU::inputEquSet(double in[],int n){vector < double > vtemp;m_n=n;for (int i= 0;i < m_n; i++){m_equset.push_back(vtemp);for (int j= 0;j <= m_n; j++){m_equset[i].push_back(in[i*(m_n+1)+j]);}}}void CGAUSSSOLVEEQU::change(int m,int m2){vector < vector < double >> ::iterator iter;iter = m_equset.begin();vector < vector < double >> ::iterator iter2;iter2 = m_equset.begin();//double}void CGAUSSSOLVEEQU::solveEquSet(){vector < vector < double >> ::iterator iter;iter = m_equset.begin();for (int m= 0;m < m_n - 1 ; ++ m){// 将绝对值最大的主元素移上去for (int i=m;i<m_equset.size();i++){if (fabsl(m_equset[m][m]) < fabsl(m_equset[i][m])) {swap( m_equset[m], m_equset[i]);}}// 进行消元for (int i = m + 1 ;i < m_n; ++ i){double dm;dm = m_equset[i][m] / m_equset[m][m];for (int j = m;j < m_n + 1 ; ++ j){m_equset[i][j] -= dm * m_equset[m][j];}}++ iter;}// 初始化m_answer向量for (int i=0 ;i < m_n; ++ i) m_answer.push_back( 0 );// 求解答案m_answer[m_n - 1 ] = m_equset[m_n - 1 ][m_n] / m_equset[m_n - 1 ][m_n - 1 ];for ( int i = m_n - 2 ;i >= 0 ; -- i){m_answer[i] = m_equset[i][m_n];for ( int j = m_n - 1 ;j > i; -- j)m_answer[i] -= m_answer[j] * m_equset[i][j];m_answer[i] /= m_equset[i][i];}}void CGAUSSSOLVEEQU::outputAnswer(){for (int i= 1;i <= m_n; ++ i){cout << " x( " << i << " )= " << m_answer[i - 1 ] << endl;}}int main(){CGAUSSSOLVEEQU myEqu1;double in1[10*11]={4,2,-3,-1,2,1,0,0,0,0,5,8,6,-5,-3,6,5,0,1,0,0,12,4,2,-2,-1,3,2,-1,0,3,1,3,0,-2,1,5,-1,3,-1,1,9,4,2,-4,2,6,-1,6,7,-3,3,2,3,3,8,6,-8,5,7,17,2,6,-3,5,46,0,2,-1,3,-4,2,5,3,0,1,13,16,10,-11,-9,17,34,2,-1,2,2,38,4,6,2,-7,13,9,2,0,12,4,19,0,0,-1,8,-3,-24,-8,6,3,-1,-21};myEqu1.inputEquSet(in1,10);myEqu1.solveEquSet(); myEqu1.outputAnswer(); cout<<endl; cout<<endl; return 1 ;}实验运行结果:实验心得:通过本次实验,我不仅掌握了模块化程序设计的方法,还了解了求解线性方程组的方法,明确了高斯消去法选主元的必要性。
数值分析实习报告
数值分析实习报告一、实习背景与目的随着现代科学技术的飞速发展,数值分析作为一种重要的数学方法,在工程计算、科学研究等领域发挥着越来越重要的作用。
为了更好地将理论知识与实际应用相结合,提高自己在数值分析方面的实际操作能力,我参加了本次数值分析实习。
本次实习的主要目的是学习并掌握数值分析的基本方法及其编程实现,培养解决实际问题的能力。
二、实习内容与过程1. 实习前的准备工作:在实习开始前,我首先对数值分析的基本概念和方法进行了复习,包括误差分析、插值法、数值微积分、线性代数方程组的求解、非线性方程求解等。
同时,我还学习了相关编程语言,如Python、MATLAB等,为实习打下了坚实的基础。
2. 实习过程中的学习与实践:在实习过程中,我按照指导书的要求,完成了以下几个方面的学习与实践:(1)误差分析:通过实习,我深入理解了误差的来源、性质和影响因素,掌握了误差分析的基本方法,如绝对误差、相对误差、无穷小量级比较等。
(2)插值法:我学习了线性插值、二次插值、三次插值等基本插值方法,并掌握了利用Python和MATLAB编程实现插值法的技巧。
(3)数值微积分:我掌握了数值积分和数值微分的原理和方法,如梯形法、辛普森法等,并能够运用编程实现相应的算法。
(4)线性代数方程组的求解:我学习了高斯消元法、LU分解法等线性代数方程组的求解方法,并通过编程实践了这些方法的应用。
(5)非线性方程求解:我掌握了牛顿法、弦截法等非线性方程求解方法,并能够运用编程实现相应的算法。
3. 实习成果的展示与总结:在实习的最后阶段,我根据自己的学习与实践,编写了一个简单的数值分析程序,涵盖了插值、数值积分、线性代数方程组求解等多个方面的内容。
通过这个程序,我对实习过程中所学到的知识进行了巩固和总结。
三、实习收获与体会通过本次数值分析实习,我收获颇丰。
首先,我掌握了数值分析的基本方法及其编程实现,提高了自己在实际问题中的解决能力。
其次,我学会了如何将理论知识与实际应用相结合,培养了自己的动手实践能力。
东北大学数值分析课题2实验报告
数值分析实验报告东北大学一、实验要求1)建立矩阵求逆的算法公式2)编制下三角部分消元,上三角部分消元和对角元单位化等子程序3)应用结构程序设计编程出求n阶矩阵的逆矩阵的通用程序二、实验目的与意义1)通过该课题的实验,掌握求逆矩阵的程序设计方法2)学会利用矩阵求逆运算求解线性方程组的方法,提高数值方法的运用和编程的能力三、实验环境编译环境:Visual C++6.0。
编译语言:C++四、实验过程与分析:(1)求已知矩阵的逆:(以四阶为例)#include<stdio.h>#include <string.h>#define N 4int main(){ float a[N][N];float L[N][N],U[N][N],out[N][N], out1[N][N];float r[N][N],u[N][N];memset( a , 0 , sizeof(a));memset( L , 0 , sizeof(L));memset( U , 0 , sizeof(U));memset( r , 0 , sizeof(r));memset( u , 0 , sizeof(u));int n=N;int k,i,j;int flag=1;float s,t;////////////////////input a matrix////printf("\ninput A=");for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%f",&a[i][j]);//////////////////figure the input matrix//////////////////////////printf("输入矩阵:\n");for(i=0;i<n;i++){for (j = 0; j < n; j++){printf("%lf ", a[i][j]);}printf("\n");}for(j=0;j<n;j++)a[0][j]=a[0][j]; //计算U矩阵的第一行for(i=1;i<n;i++)a[i][0]=a[i][0]/a[0][0]; //计算L矩阵的第1列for(k=1;k<n;k++) {for(j=k;j<n;j++) {s=0;for (i=0;i<k;i++)s=s+a[k][i]*a[i][j]; //累加a[k][j]=a[k][j]-s; //计算U矩阵的其他元素}for(i=k+1;i<n;i++){t=0;for(j=0;j<k;j++)t=t+a[i][j]*a[j][k]; //累加a[i][k]=(a[i][k]-t)/a[k][k]; //计算L矩阵的其他元素} }for(i=0;i<n;i++)for(j=0;j<n;j++) {if(i>j){ L[i][j]=a[i][j]; U[i][j]=0;}//如果i>j,说明行大于列,计算矩阵的下三角部分,得出L的值,U的//为0else {U[i][j]=a[i][j];if(i==j) L[i][j]=1; //否则如果i<j,说明行小于列,计算矩阵的上三角部分,得出U的//值,L的为0else L[i][j]=0; }} if(U[1][1]*U[2][2]*U[3][3]*U[4][4]==0){flag=0;printf("\n逆矩阵不存在");}if(flag==1){/////////////////////求L和U矩阵的逆for (i=0;i<n;i++) /*求矩阵U的逆*/{u[i][i]=1/U[i][i];//对角元素的值,直接取倒数for (k=i-1;k>=0;k--){s=0;for (j=k+1;j<=i;j++)s=s+U[k][j]*u[j][i];u[k][i]=-s/U[k][k];//迭代计算,按列倒序依次得到每一个值,}}for (i=0;i<n;i++) //求矩阵L的逆{r[i][i]=1; //对角元素的值,直接取倒数,这里为1for (k=i+1;k<n;k++){for (j=i;j<=k-1;j++)r[k][i]=r[k][i]-L[k][j]*r[j][i]; //迭代计算,按列顺序依次得到每一个值}} /////////////////绘制矩阵LU分解后的L和U矩阵///////////////////////printf("\nLU分解后L矩阵:");for(i=0;i<n;i++){ printf("\n");for(j=0;j<n;j++)printf(" %lf",L[i][j]); }printf("\nLU分解后U矩阵:");for(i=0;i<n;i++){ printf("\n");for(j=0;j<n;j++)printf(" %lf",U[i][j]); }printf("\n");////////绘制L和U矩阵的逆矩阵printf("\nL矩阵的逆矩阵:");for(i=0;i<n;i++){ printf("\n");for(j=0;j<n;j++)printf(" %lf",r[i][j]); }printf("\nU矩阵的逆矩阵:");for(i=0;i<n;i++){ printf("\n");for(j=0;j<n;j++)printf(" %lf",u[i][j]); }printf("\n");//验证将L和U相乘,得到原矩阵printf("\nL矩阵和U矩阵乘积\n");for(i=0;i<n;i++){for(j=0;j<n;j++){out[i][j]=0;} }for(i=0;i<n;i++) {for(j=0;j<n;j++){for(k=0;k<n;k++){out[i][j]+=L[i][k]*U[k][j];} } } for(i=0;i<n;i++){for(j=0;j<n;j++){printf("%lf\t",out[i][j]); }printf("\r\n") }//////////将r和u相乘,得到逆矩阵printf("\n原矩阵的逆矩阵:\n");for(i=0;i<n;i++){for(j=0;j<n;j++){out1[i][j]=0;}}for(i=0;i<n;i++){for(j=0;j<n;j++) {for(k=0;k<n;k++){out1[i][j]+=u[i][k]*r[k][j];}} }for(i=0;i<n;i++){for(j=0;j<n;j++){printf("%lf\t",out1[i][j]);}printf("\r\n");}}return 0; }(2)求N阶矩阵的逆:#include<iostream>#include<math.h>using namespace std;class JuZhen{private:double data[10][20];int size;public:void qiuNi();void setSize();void show();void chuShi();};void JuZhen::setSize(){int n;cout<<"请?输?入?矩?阵ó的?阶×:";cin>>n;size=n;}void JuZhen::show(){int i,j;for(i=0;i<size;i++){for(j=size;j<2*size;j++){cout.width(10);cout.flags (ios::right);cout<<data[i][j]<<" ";}cout<<endl;}cout<<"***********************************************"<<endl;cout<<endl;}void JuZhen::chuShi(){int i,j;for(i=0;i<size;i++){cout<<"请?输?入?"<<i+1<<"行D的?元a素?:";for(j=0;j<2*size;j++){if(j<size)cin>>data[i][j];else if(j==i+size)data[i][j]=1.0;elsedata[i][j]=0.0;}}}void JuZhen::qiuNi()int i,j,k;int maxI=0;for(i=1;i<size;i++){if(fabs(data[maxI][0])<fabs(data[i][0])) maxI=i;}if(maxI!=0){double temp;for(j=0;j<2*size;j++){temp=data[0][j];data[0][j]=data[maxI][j];data[maxI][j]=temp;}}double temp2;for(i=0;i<size;i++){if(data[i][i]!=0)temp2=1.0/data[i][i];else{cout<<"此?矩?阵ó无T逆?!"<<endl;return ;}for(j=0;j<2*size;j++)data[i][j]*=temp2;for(j=0;j<size;j++){if(j!=i){double temp3=data[j][i];for(k=0;k<2*size;k++)data[j][k]-=temp3*data[i][k];}}}cout<<"逆?矩?阵ó为a:阰"<<endl;show();}void main()while(1){JuZhen a;a.setSize();a.chuShi();a.qiuNi();}}五、实验结果与分析(1)(2)(3)(4)如图,输入矩阵的阶,然后依次输入矩阵中元素,即可得到逆矩阵,若该矩阵无逆,则输出“此矩阵无逆”。
数值分析实习报告
一、实习背景随着科学技术的飞速发展,数值分析在各个领域都得到了广泛的应用。
为了更好地掌握数值分析的基本理论和方法,提高自己的实践能力,我于2023年暑期参加了某科技有限公司的数值分析实习。
二、实习内容1. 数值微分在实习期间,我首先学习了数值微分的基本理论和方法。
通过实际操作,我掌握了使用中心差分法、前向差分法和后向差分法计算函数在某点的导数。
在实际应用中,我使用这些方法对工程问题中的函数进行了导数计算,为后续的数值积分和数值求解提供了基础。
2. 数值积分接下来,我学习了数值积分的基本理论和方法。
在实习过程中,我掌握了梯形法则、辛普森法则和柯特斯法则等数值积分方法。
通过实际操作,我能够对函数进行数值积分,并在实际工程问题中应用这些方法。
3. 线性方程组求解线性方程组在数值分析中具有广泛的应用。
在实习期间,我学习了高斯消元法、LU 分解法、Cholesky分解法等求解线性方程组的方法。
通过实际操作,我能够对大规模线性方程组进行求解,并在实际工程问题中应用这些方法。
4. 最优化方法最优化方法是数值分析中的重要分支。
在实习期间,我学习了梯度下降法、牛顿法、共轭梯度法等最优化方法。
通过实际操作,我能够对实际问题进行最优化求解,并在实际工程问题中应用这些方法。
5. 数值求解微分方程微分方程在科学研究和工程应用中具有重要作用。
在实习期间,我学习了欧拉法、龙格-库塔法等数值求解微分方程的方法。
通过实际操作,我能够对微分方程进行数值求解,并在实际工程问题中应用这些方法。
三、实习收获1. 提高了数值分析的理论水平。
通过实习,我对数值分析的基本理论和方法有了更深入的理解。
2. 增强了实际操作能力。
在实习过程中,我熟练掌握了各种数值分析方法的实际操作,提高了自己的动手能力。
3. 培养了团队合作精神。
在实习过程中,我与团队成员密切合作,共同完成实习任务,提高了自己的团队协作能力。
4. 了解了数值分析在工程应用中的重要性。
东北大学数值分析上机实验报告
《数值分析》上机实验报告课题三解线性方程组的迭代法学生姓名:学生系别:学生班级:日期:上机实践报告【运行环境】软件:Windows、Microsoft Visual C++ 6.0PC一台【问题提出】对课题二所列目的和意义的线性方程组,试分别选用Jacobi 迭代法,Gauss-Seidol迭代法和SOR方法计算其解。
【实践要求】1、体会迭代法求解线性方程组,并能与消去法做比较;2、分别对不同精度要求,如ε=10-3,10-4,10-5 由迭代次数体会该迭代法的收敛快慢;3、对方程组2,3使用SOR方法时,选取松弛因子 =0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者;4、给出各种算法的设计程序和计算结果。
【目的意义】1、通过上机计算体会迭代法求解线性方程组的特点,并能和消去法比较;2、运用所学的迭代法算法,解决各类线性方程组,编出算法程序;3、体会上机计算时,终止步骤 < 或k >(予给的迭代次数),对迭代法敛散性的意义;4、体会初始解 x ,松弛因子的选取,对计算结果的影响。
【程序代码】//Jacobi.cpp#include<iostream>#include<cmath>using namespace std;#define N 15//最大迭代次数#define P 10//矩阵的阶数//#define P 8static double 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,0,3,1,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};static double b[10]={5,12,3,2,3,46,13,38,19,-21};static double x_jing[10]={1,-1,0,1,2,0,3,1,-1,2};//精确解static double x0[10]={0,0,0,0,0,0,0,0,0,0};static double x1[10];static int k,i,j;//static double a[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,// 矩阵B 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};//static double b[8]={0,-6,6,23,11,-22,-15,45};//static double x_jing[8]={1,-1,0,2,1,-1,0,2};//static double x0[8]={0,0,0,0,0,0,0,0};//static double x1[8];//static double a[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,// 矩阵C 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};//static double b[10]={7,5,-13,2,6,-12,14,-4,5,-5}; //static double x_jing[10]={2,1,-3,0,1,-2,3,0,1,-1}; //static double x0[10]={0,0,0,0,0,0,0,0,0,0};double Max(int y)//求算该次迭代的误差{double sum,max;for (i=0;i<P;i++){sum=0;for (j=0;j<P;j++)sum+=a[i][j]*x0[j];x1[i]=x0[i]+(b[i]-sum)/a[i][i];}max=fabs(x_jing[0]-x1[0]);for (i=1;i<P;i++){if (fabs(x_jing[i]-x1[i])>max)max=fabs(x_jing[i]-x1[i]);}cout<<"第"<<y<<"次迭代的误差为"<<max<<endl;return max;}void main(){double e[3]={10e-3,10e-4,10e-5};double max;int t;cout<<"请选择精确度:0、10e-3 1、10e-4 2、103-5 ";cin>>t;for (k=0;k<N;k++){max=Max(k);if (max<e[t])//判断精度是否符合要求,若符合则跳出程序,否则继续迭代{ k=k;break;}else{for (i=0;i<P;i++)x0[i]=x1[i];}}if (k<N)//输出结果{cout<<"迭代次数为"<<k<<endl;cout<<"方程组的解为"<<endl;for (i=0;i<P;i++)cout<<" "<<x1[i]<<endl;}else{cout<<"迭代次数超过"<<N<<"迭代终止!"<<endl;cout<<"方程组的解为"<<endl;for (i=0;i<P;i++)cout<<" "<<x1[i]<<endl;}}//Gauss-Seidol.cpp#include<iostream>#include<cmath>using namespace std;#define N 15//最大迭代次数//#define P 10//矩阵的阶数#define P 8//static double 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,0,3,1,// 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};//static double b[10]={5,12,3,2,3,46,13,38,19,-21};//static double x_jing[10]={1,-1,0,1,2,0,3,1,-1,2};//精确解//static double x0[10]={0,0,0,0,0,0,0,0,0,0};//static double x1[10];static int k,i,j;static double a[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};static double b[8]={0,-6,6,23,11,-22,-15,45};static double x_jing[8]={1,-1,0,2,1,-1,0,2};static double x0[8]={0,0,0,0,0,0,0,0};static double x1[8];//static double a[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,// 矩阵C 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};//static double b[10]={7,5,-13,2,6,-12,14,-4,5,-5};//static double x_jing[10]={2,1,-3,0,1,-2,3,0,1,-1};//精确解//static double x0[10]={0,0,0,0,0,0,0,0,0,0};double Max(int y)//求算该次迭代的误差{double sum1,sum2,max;for (i=0;i<P;i++){sum1=0;sum2=0;for (j=0;j<=i-1;j++)sum1+=a[i][j]*x1[j];for (j=i+1;j<P;j++)sum2+=a[i][j]*x0[j];x1[i]=(b[i]-sum1-sum2)/a[i][i];}max=fabs(x_jing[0]-x1[0]);for (i=1;i<P;i++){if (fabs(x_jing[i]-x1[i])>max)max=fabs(x_jing[i]-x1[i]);}cout<<"第"<<y<<"次迭代的误差为"<<max<<endl;return max;}void main(){double e[3]={10e-3,10e-4,10e-5};double max;int t;cout<<"请选择精确度:0、10e-3 1、10e-4 2、103-5 ";cin>>t;for (k=0;k<N;k++){max=Max(k);if (max<e[t])//判断精度是否符合要求,若符合则跳出程序,否则继续迭代{ k=k;break;}else{for (i=0;i<P;i++)x0[i]=x1[i];}}if (k<N)//输出结果{cout<<"迭代次数为"<<k<<endl;cout<<"方程组的解为"<<endl;for (i=0;i<P;i++)cout<<" "<<x1[i]<<endl;}else{cout<<"迭代次数超过"<<N<<"迭代终止!"<<endl;cout<<"方程组的解为"<<endl;for (i=0;i<P;i++)cout<<" "<<x1[i]<<endl;}}//SOR.cpp#include<iostream>#include<cmath>using namespace std;#define N 15//最大迭代次数#define P 10//矩阵的阶数//#define P 8//static double 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,0,3,1,// 矩阵A 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};//static double b[10]={5,12,3,2,3,46,13,38,19,-21};//static double x_jing[10]={1,-1,0,1,2,0,3,1,-1,2};//精确解//static double x0[10]={0,0,0,0,0,0,0,0,0,0};static double x1[P];static double sumx[P];static int k,i,j;//static double a[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,// 矩阵B 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};//static double b[8]={0,-6,6,23,11,-22,-15,45};//static double x_jing[8]={1,-1,0,2,1,-1,0,2};//static double x0[8]={0,0,0,0,0,0,0,0};//static double x1[8];static double a[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};static double b[10]={7,5,-13,2,6,-12,14,-4,5,-5};static double x_jing[10]={2,1,-3,0,1,-2,3,0,1,-1};//精确解static double x0[10]={0,0,0,0,0,0,0,0,0,0};double Max(double w,double y){double sum1,sum2,max;for (i=0;i<P;i++){sum1=0;sum2=0;for (j=0;j<=i-1;j++)sum1+=a[i][j]*x1[j];for (j=i;j<P;j++)sum2+=a[i][j]*x0[j];sumx[i]=w*(b[i]-sum1-sum2)/a[i][i];x1[i]=x0[i]+sumx[i];}max=fabs(x_jing[0]-x1[0]);for (i=1;i<P;i++){if (fabs(x_jing[i]-x1[i])>max)max=fabs(x_jing[i]-x1[i]);}cout<<"第"<<y<<"次迭代的误差为"<<max<<endl;return max;}void main(){double e[3]={10e-3,10e-4,10e-5};double w[5]={0.8,0.9,1,1.1,1.2};double max;int t,l;cout<<"请选择精确度:0、10e-3 1、10e-4 2、103-5 ";cin>>t;cout<<"请选择松弛因子:0、0.8 1、0.9 2、1 3、1.1 4、1.2 ";cin>>l;for (k=0;k<N;k++){max=Max(w[l],k);if (max<e[t])//判断精度是否符合要求,若符合则跳出程序,否则继续迭代{ k=k;break;}else{for (i=0;i<P;i++)x0[i]=x1[i];}}if (k<N)//输出结果{cout<<"迭代次数为"<<k<<endl;cout<<"方程组的解为"<<endl;for (i=0;i<P;i++)cout<<" "<<x1[i]<<endl;}else{cout<<"迭代次数超过"<<N<<"迭代终止!"<<endl;cout<<"方程组的解为"<<endl;for (i=0;i<P;i++)cout<<" "<<x1[i]<<endl;}}【运行结果】方程A :⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡1-421534100368-24-3-81-012029137-2621-234179-11-1003524-31-23-6217758-6233-761-62911-31-512-301-231-2-2010563-5-6000121-3-2416084-0484⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x =⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡-2119381346323125Jacobi 迭代Gauss-Seidol迭代SOR迭代方程B Jacobi迭代Gauss-Seidol迭代SOR迭代方程C ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡554141262135741-000000001-000000041-0000001-41-0000001-41-0000001-41-0000001-41-0000001-41-0000001-41-0000001-400000001-000000001-410987654321x x x x x x x x x xJacobi 迭代Gauss-Seidol迭代(选取了不同的精度)SOR迭代(选取了不同的松弛因子)【结果分析】1、通过实验结果看出(方程C的Gauss-Seidol迭代),取的精度不同,迭代的次数也不同。
数值分析实习报告
一、实习背景数值分析是数学的一个重要分支,它主要研究如何利用计算机来求解数学问题。
随着计算机技术的飞速发展,数值分析在各个领域都得到了广泛的应用。
为了更好地了解数值分析在工程、科学和商业领域的应用,提高自己的实际操作能力,我参加了为期一个月的数值分析实习。
二、实习内容1. 学习数值分析基本理论实习期间,我首先系统地学习了数值分析的基本理论,包括插值、数值微分、数值积分、矩阵运算、线性方程组求解、优化方法等。
通过学习,我对数值分析有了更加全面的认识。
2. 实践操作(1)插值法:我学习了Lagrange插值、Newton插值等插值方法,并使用MATLAB进行编程实现。
通过插值,我能够根据已知数据点预测未知点,为工程、科学和商业领域提供数据支持。
(2)数值微分:我学习了有限差分法、辛普森法等数值微分方法,并使用MATLAB进行编程实现。
通过数值微分,我能够求解函数在某一点的导数,为工程、科学和商业领域提供计算支持。
(3)数值积分:我学习了梯形法、辛普森法等数值积分方法,并使用MATLAB进行编程实现。
通过数值积分,我能够求解函数在某一区间上的定积分,为工程、科学和商业领域提供计算支持。
(4)矩阵运算:我学习了矩阵的初等变换、矩阵的逆、矩阵的秩等矩阵运算方法,并使用MATLAB进行编程实现。
通过矩阵运算,我能够求解线性方程组、特征值和特征向量等问题。
(5)线性方程组求解:我学习了高斯消元法、矩阵分解法等线性方程组求解方法,并使用MATLAB进行编程实现。
通过线性方程组求解,我能够求解工程、科学和商业领域中的各种问题。
(6)优化方法:我学习了梯度下降法、牛顿法等优化方法,并使用MATLAB进行编程实现。
通过优化方法,我能够求解各种优化问题,为工程、科学和商业领域提供解决方案。
3. 项目实践在实习期间,我参与了一个实际项目——某公司产品的成本优化。
该项目要求根据产品的各项参数,计算出最优的生产方案,以降低成本。
东北大学数值分析实验报告
数值分析实验报告课题一 迭代格式的比较一、问题提出设方程f(x)=x 3- 3x –1=0 有三个实根 x *1=1.8793 , x *2=-0.34727 ,x *3=-1.53209现采用下面三种不同计算格式,求 f(x)=0的根 x *1 或x *21、 x =213x x + 2、 x = 313-x3、 x = 313+x二、要求1、编制一个程序进行运算,最后打印出每种迭代格式的敛散情况;2、用事后误差估计k k x x -+1〈ε来控制迭代次数,并且打印出迭代的次数;3、初始值的选取对迭代收敛有何影响;4、分析迭代收敛和发散的原因。
三、目的和意义1、通过实验进一步了解方程求根的算法;2、认识选择计算格式的重要性;3、掌握迭代算法和精度控制;4、明确迭代收敛性与初值选取的关系。
程序代码:#include<iostream> #include<cmath> #include<cstdlib> using namespace std;double f(double i) //外调函数f(x),每次更新新的函数 {//以第一种迭代方式为例子 double k,m,sum; k=3*i+1;m=pow(i,2.0); sum=k/m; return sum; }int main() {double x,x0;int N;//最大迭代次数 int k;cout<<"输入初解:"; cin>>x0;cout<<"输入最大迭代次数:"; cin>>N;for(k=1;k<=N;k++){x=f(x0);if(fabs(x-x0)<0.0000001){cout<<"迭代次数:"<<k<<endl;cout<<"输出得到的解:"<<x<<endl;system("pause");return 0;}else x0=x;}cout<<"已达到最大迭代次数:"<<N<<endl;cout<<"输出得到的解:"<<x<<endl;system("pause");return 0;}实验结果:四、程序运行结果讨论和分析:对于第一种迭代格式,收敛区间[-8.2 -0.4],在该收敛区间内迭代收敛于-1.53209,只能求得方程的一个根;对于第二种迭代格式,收敛区间[-1.5 1.8],在该收敛区间内迭代收敛于-0.34730,同样只能求得方程的一个根;对于第三种迭代格式,收敛区间[-0.3 +∞),在该收敛区间内迭代收敛于 1.87937,只能求得方程的一个根;由以上结果很容易发现,初值的选取对迭代敛散性有很大影响。
程序员数据分析实习报告(3篇)
第1篇一、实习背景随着大数据时代的到来,数据分析已经成为各行各业不可或缺的一部分。
为了提升自己的专业技能,我于2023年在某知名互联网公司进行了为期三个月的数据分析实习。
在这段时间里,我深入了解了数据分析的流程,学习了多种数据分析工具,并参与了多个实际项目,积累了宝贵的工作经验。
二、实习单位及岗位实习单位:某知名互联网公司实习岗位:数据分析实习生三、实习内容1. 实习初期:熟悉环境,了解业务在实习初期,我首先了解了公司的业务范围和产品线,熟悉了公司的工作环境和文化。
通过与团队成员的交流,我了解了数据分析在公司的应用场景和重要性。
2. 学习数据分析基础知识为了更好地适应工作,我系统地学习了数据分析的基础知识,包括统计学、数据挖掘、机器学习等。
通过学习,我掌握了数据清洗、数据探索、数据可视化等基本技能。
3. 熟练掌握数据分析工具为了提高工作效率,我学习了多种数据分析工具,如Excel、Python、R、SQL等。
通过实际操作,我掌握了这些工具在数据处理、数据分析和数据可视化方面的应用。
4. 参与项目实践在实习期间,我参与了多个实际项目,包括:(1)用户行为分析:通过对用户在网站上的行为数据进行收集和分析,了解用户的使用习惯和需求,为产品优化提供数据支持。
(2)销售数据分析:通过对销售数据的分析,挖掘销售规律,为销售策略调整提供依据。
(3)市场调研分析:通过对市场数据的分析,了解市场趋势和竞争对手情况,为公司制定市场策略提供参考。
5. 项目成果展示(1)用户行为分析项目:通过分析用户在网站上的行为数据,我们发现用户在浏览产品页面时,停留时间较长,但购买转化率较低。
针对这一问题,我们提出了以下优化方案:1. 优化产品页面设计,提高用户体验;2. 加强产品页面内容的优化,突出产品特点;3. 针对用户浏览行为,推送个性化推荐。
经过实施优化方案后,用户购买转化率提高了20%。
(2)销售数据分析项目:通过对销售数据的分析,我们发现某款产品在特定区域销售情况较好,而在其他区域销售情况较差。
数值分析实习报告总结
数值分析实习报告总结首先,我想对我所参加的数值分析实习课程表示由衷的感谢。
这次实习让我对数值分析这门学科有了更深入的理解,并且让我在实际操作中掌握了许多有用的技能和知识。
在这篇实习报告总结中,我将回顾我在实习过程中的学习经历,总结我在实习中学到的主要内容,并分享我的一些感悟。
实习的第一周,我主要学习了数值分析的基本概念和方法。
通过阅读教材和参加课堂讨论,我了解了数值分析的重要性以及在工程、科学和商业领域中的应用。
我学习了插值、线性代数、微分方程等数值方法的原理和实现方式。
此外,我还通过实际编程练习,掌握了使用数值分析方法解决实际问题的基本技能。
在实习的第二周,我深入学习了Lagrange插值和数值线性代数。
我了解到Lagrange插值是一种构造多项式以通过一组给定的点的方法,它在插值和逼近方面有广泛的应用。
通过编写代码实现Lagrange插值算法,我学会了如何利用已知的数据点来预测未知的点。
此外,我还学习了数值线性代数中的矩阵运算、特征值问题和线性方程组的求解方法,这些方法对于解决实际问题非常重要。
在实习的第三周,我学习了数值微积分和数值求解微分方程的方法。
我了解到数值微积分是利用数值方法近似计算积分和导数的过程,它在信号处理和物理模拟等领域有广泛应用。
通过编写代码实现数值积分和数值导数算法,我学会了如何近似计算函数的积分和导数。
此外,我还学习了如何使用数值方法求解常微分方程和偏微分方程,这些方法对于解决工程和科学领域中的问题非常重要。
在实习的过程中,我也遇到了一些困难和挑战。
例如,在实现数值算法时,我常常会遇到编程错误和数值误差的问题。
通过与同学和老师的讨论和交流,我学会了如何调试代码和减小数值误差的方法。
这些经验让我更加熟悉编程和数值分析的方法,并且提高了我的问题解决能力。
通过这次数值分析实习,我不仅学到了许多关于数值分析的知识和技能,还提高了自己的编程能力和问题解决能力。
我相信这些知识和技能将在我未来的学习和工作中发挥重要作用。
- 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。