科学计算实践大报告
- 格式:docx
- 大小:999.70 KB
- 文档页数:17
计算实习报告实用的计算实习报告模板集锦5篇在我们平凡的日常里,报告使用的频率越来越高,报告具有双向沟通性的特点。
相信许多人会觉得报告很难写吧,下面是小编为大家整理的计算实习报告5篇,欢迎大家分享。
计算实习报告篇11、实习的目的和要求实习目的:毕业实习是一个重要的综合性实践环节,旨在培养学生综合运用所学知识和技术,针对具体应用问题,进行分析、设计和解决问题的潜力,拓展学生的知识面,练习和掌握新而实用的开发技术,为毕业设计做好技术准备和课题调研等工作。
按规范化方法逐步完成毕业设计工作。
实习要求:深入学习java技术了解软解开发的过程综合运用所学知识和技术,分析、设计和解决实际问题。
2、实习的主要资料在实习阶段我理解了四个月的日语学习,三个月的技术强化和三个月的项目实践。
透过四个月的日语学习我透过了日语J-TestE级的考试,也学习了很多JAVA技术。
在这期间我们做了一个模拟项目:课题是物流仓库管理系统的设计与实现,使用的框架是Struts和Hibernate,用的技术是java,开发平台是myeclipse,数据库是mysql。
Java语言从它向世人打招呼的那一天开始它就把自己定位在了致力于网络应用软件开的语言,它的跨平台、安全性、完全的面向对象,使它成为了互连网应用软件开发的一个新的宠儿。
Java是一种跨平台,适合于分布式计算环境的面向对象编程语言。
具体来说,它具有如下特性:简单性、面向对象、分布式、解释型、可靠、安全、平台无关、可移植、高性能、多线程、动态性等。
Struts有一组相互协作的类(组件)、Serlvet以及jsptaglib组成。
基于struts构架的web应用程序基本上贴合JSPModel2的设计标准,能够说是MVC设计模式的一种变化类型。
Struts是一个webframwork,而不仅仅仅是一些标记库的组合。
但Struts也包含了丰富的标记库和独立于该框架工作的实用程序类。
Struts有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。
计算实习报告4篇计算实习报告篇1(2110字)1、实习目的通过理论联系实际,巩固所学的知识,提高处理实际问题的能力,为顺利毕业进行做好充分的准备,并为自己能顺利与社会环境接轨做准备。
通过这次实习,使我们进一步理解和领会所学的基本理论,了解计算机技术和信息管理技术的发展及应用,较为系统地掌握计算机应用技能和信息管理技能,把所学知识与解决实际问题相联系,能够利用计算机处理工作中的各种信息,培养我们发现问题、分析问题和解决问题的能力,从而提高我们从事实际工作的能力。
2、实习意义生产实习是一个极为重要的实践性教学环节。
通过实习,使学生在社会实践中接触与本专业相关的实际工作,增强感性认识,培养和锻炼学生综合运用所学的基础理论、基本技能和专业知识,去独立分析和解决实际问题的能力,把理论和实践结合起来,提高实践动手能力,为学生毕业后走上工作岗位打下一定的基础;同时可以检验教学效果,为进一步提高教育教学质量,培养合格人才积累经验。
计算机是一门对实践要求较高的学科,通过专业实习,使学生能熟悉有关计算机专业的各个领域,使学生毕业后能胜任与本专业相关的工作。
大学继续教育5年中学习了很多,经历了很多,得到的是学习能力、处事能力和一些专业知识。
可面对社会,我们经验太少,思想单纯!毕业实习,给了我们一个了解社会,增加经验,熟悉工作单位的机会。
锻炼自己的动手能力,将学习的理论知识运用于实践当中,反过来还能检验书本上理论的正确性,有利于融会贯通。
同时,也能开拓视野,完善自己的知识结构,达到锻炼能力的目的。
一切都是为了让实践者对本专业知识形成一个客观,理性的认识,从而不与社会现实相脱节。
此外通过理论联系实际,巩固所学的知识,提高处理实际问题的能力,了解设计专题的主要内容,为毕业设计的顺利进行做好充分的准备,并为自己能顺利与社会环境接轨做准备。
3、实习单位调研情况我的实习单位中广有线信息网络有限公司枣庄分公司(以下简称中广有线枣庄分公司)是枣庄市广播电视局国有资产出资参股成立的有限责任企业,坐落在美丽的光明广场西侧。
一、实验背景随着科学技术的不断发展,科学计算在各个领域都发挥着越来越重要的作用。
科学计算实验是培养学生运用数学、物理、计算机等学科知识解决实际问题的重要手段。
本次实验旨在通过实际操作,让学生掌握科学计算的基本方法,提高学生运用科学计算软件解决实际问题的能力。
二、实验目的1. 熟悉科学计算软件的基本操作和功能。
2. 掌握科学计算的基本方法,包括数值计算、符号计算和图形计算。
3. 运用科学计算解决实际问题,提高学生的综合应用能力。
三、实验内容本次实验主要分为三个部分:数值计算、符号计算和图形计算。
1. 数值计算(1)实验内容:利用科学计算软件进行线性方程组的求解。
(2)实验步骤:① 打开科学计算软件,创建一个新的文档。
② 输入线性方程组的系数和常数项。
③ 选择求解方法,如高斯消元法、迭代法等。
④ 求解线性方程组,并输出结果。
2. 符号计算(1)实验内容:利用科学计算软件进行代数式的化简和求值。
(2)实验步骤:① 打开科学计算软件,创建一个新的文档。
② 输入代数式。
③ 选择化简或求值操作。
④ 输出结果。
3. 图形计算(1)实验内容:利用科学计算软件绘制函数图像。
(2)实验步骤:① 打开科学计算软件,创建一个新的文档。
② 输入函数表达式。
③ 设置坐标轴范围和刻度。
④ 选择绘图类型,如二维图形、三维图形等。
⑤ 输出函数图像。
四、实验结果与分析1. 数值计算本次实验中,我们选择了高斯消元法求解线性方程组。
实验结果表明,该算法具有较高的计算精度和效率。
在实际应用中,可根据实际情况选择合适的求解方法。
2. 符号计算在符号计算实验中,我们选择了代数式的化简和求值操作。
实验结果表明,科学计算软件可以快速、准确地完成代数式的化简和求值,为数学研究提供了便捷的工具。
3. 图形计算图形计算实验中,我们选择了绘制函数图像。
实验结果表明,科学计算软件可以绘制出高质量的函数图像,有助于直观地了解函数的性质和变化趋势。
五、实验总结1. 通过本次实验,我们掌握了科学计算软件的基本操作和功能,为今后的学习和研究打下了基础。
2024年计算机的社会实践报告范文一、引言计算机技术作为一种新兴的信息技术手段,自问世以来,对人们的生活产生了巨大的影响。
随着科技的发展,2024年的计算机已经呈现出了许多新的特点和功能。
本报告将对2024年计算机的社会实践进行详细的调查和总结,以便更好地了解计算机技术对于人们的生活带来的巨大影响。
二、背景介绍2024年的计算机技术已经取得了许多突破性的进展。
硬件方面,新一代的超级计算机已经达到了千万亿次级别的计算速度。
同时,计算机的体积也进一步缩小,形成了便携式的个人计算设备,如智能手机和平板电脑。
软件方面,人工智能技术得到了蓬勃发展,许多新的应用程序和算法被开发出来,可以自动化完成许多复杂的任务。
三、实践内容1.计算机在教育领域的应用2024年的教育领域已经形成了一种全面的数字化教学模式。
学生们可以通过网络上的在线教育平台学习各种科目,通过虚拟实验室进行实践操作。
老师们也可以通过计算机技术进行课堂教学,利用多媒体教学软件进行知识演示。
此外,人工智能技术还可以根据学生的学习情况进行个性化的教学,提高学生的学习效果。
2.计算机在医疗领域的应用计算机技术在医疗领域的应用已经取得了显著的进展。
医生们可以通过计算机软件进行疾病诊断和治疗方案的设计。
医学影像技术也得到了很大的改进,可以提供更清晰和更精确的影像结果。
此外,个人健康管理软件和穿戴设备的普及,使得人们可以随时监测自己的身体状况,及时采取相应的措施。
3.计算机在交通领域的应用随着智能交通系统的完善,计算机技术在交通领域的应用越来越广泛。
交通信号灯、智能导航系统、自动驾驶技术等都减少了交通事故的发生,提高了交通效率。
此外,通过计算机网络的连接,交通管理部门可以实时监测交通情况,进行智能调度,减少拥堵和排放。
4.计算机在金融领域的应用计算机在金融领域的应用主要集中在金融交易和风险控制方面。
高频交易技术的应用使得金融交易更快捷和高效。
同时,通过数学模型和数据分析技术,金融机构可以更好地预测和控制风险,保护投资者的利益。
科学计算实训报告一、实训背景科学计算是指利用计算机和数值方法解决科学领域中的问题的一门学科,它在各个学科领域中都有广泛的应用。
在科学计算中,我们需要利用计算机进行大规模数据处理、复杂的数学计算和模拟实验等工作。
在本次实训中,我们将使用Python编程语言进行科学计算的实践训练。
Python是一种高级编程语言,它广泛应用于科学计算领域,并且具有简单易学、开源免费等优势。
通过这次实训,我们将学会如何使用Python进行科学计算,并且掌握一些常用的科学计算库和工具。
二、实训内容实训内容主要包括以下几个方面:1. Python基础知识在实训开始之前,我们首先需要了解一些Python的基础知识,包括Python的语法结构、变量和数据类型、条件语句和循环语句等。
只有掌握了这些基础知识,才能更好地进行后续的科学计算工作。
2. 科学计算库的使用科学计算库是Python中非常重要的组成部分,它们提供了一系列函数和工具,帮助我们进行科学计算。
在实训中,我们将学习如何使用科学计算库进行数据处理、数学计算和统计分析等任务。
常见的科学计算库包括NumPy、SciPy和Pandas等。
3. 数据可视化数据可视化是科学计算中非常重要的一部分,它可以帮助我们更直观地理解和展示数据。
在实训中,我们将学习如何使用Matplotlib和Seaborn等数据可视化库,绘制各种类型的图形和图表,包括折线图、柱状图、散点图等。
4. 数值计算和优化数值计算是科学计算中的关键内容,它涉及到各种数值方法和算法的应用。
在实训中,我们将学习如何使用Python进行数值计算,并且掌握一些常用的数值计算方法,如线性代数运算、数值积分和常微分方程求解等。
此外,我们还将学习如何使用优化算法进行参数优化和模型拟合等工作。
三、实训过程1. 准备工作在进行实训之前,我们需要先安装好Python的开发环境和相关的科学计算库。
首先,需要下载并安装Python解释器;然后,使用pip命令安装NumPy、SciPy、Pandas、Matplotlib和Seaborn等科学计算库。
第1篇一、实验背景随着信息技术的飞速发展,计算课已成为现代教育中不可或缺的一部分。
通过计算课的学习,学生可以掌握计算机基本操作、编程语言以及算法设计等知识,为今后从事相关工作奠定基础。
本次实验旨在通过实际操作,加深对所学知识的理解,提高动手能力和团队协作能力。
二、实验目的1. 熟悉计算机基本操作,掌握常用软件的使用方法;2. 学习一种编程语言,理解编程思想,实现基本算法;3. 培养团队协作精神,提高动手实践能力;4. 提高对计算课重要性的认识,激发学习兴趣。
三、实验内容本次实验主要包括以下内容:1. 计算机基本操作:熟练使用计算机操作系统,掌握文件管理、系统设置等基本操作;2. 编程语言学习:选择一种编程语言(如Python、Java等),学习基本语法、数据结构、算法等知识;3. 算法实现:设计并实现一个简单算法,如排序、查找等;4. 项目实践:分组完成一个小型项目,如制作一个简单的网页、编写一个计算器程序等。
四、实验过程1. 实验准备:了解实验内容,预习相关理论知识,准备好实验所需的计算机和软件;2. 实验操作:按照实验指导书进行操作,记录实验步骤和结果;3. 团队协作:分组讨论,分工合作,共同完成实验任务;4. 结果分析:对实验结果进行分析,总结经验教训。
五、实验结果与分析1. 计算机基本操作:通过实验,掌握了计算机基本操作,如文件管理、系统设置等,提高了计算机应用能力;2. 编程语言学习:学习了所选编程语言的基本语法、数据结构、算法等知识,为今后深入学习打下了基础;3. 算法实现:实现了排序、查找等基本算法,加深了对算法原理的理解;4. 项目实践:分组完成了一个小型项目,如制作了一个简单的网页、编写了一个计算器程序等,提高了团队协作能力和动手实践能力。
六、实验总结1. 计算课实验对提高学生计算机应用能力具有重要意义,有助于培养学生动手实践能力和团队协作精神;2. 实验过程中,要注重理论与实践相结合,不断总结经验教训,提高实验效果;3. 在今后的学习中,要继续努力,深入学习计算课相关知识,为将来从事相关工作打下坚实基础。
科学计算实训报告1. 引言科学计算是一种利用计算机解决科学问题的方法。
在本次实训中,我们将使用一种名为Python的编程语言来进行科学计算实验。
本报告将详细介绍我们在实训中所学到的知识和技能。
2. 实验目标本次实训的目标是掌握Python的基本语法和科学计算库的使用方法。
通过实践,我们将学会如何使用Python进行数据处理、可视化和模型构建。
3. 实验步骤步骤1:安装Python和相关库首先,我们需要安装Python解释器和一些科学计算库,例如NumPy、Pandas 和Matplotlib。
这些库将帮助我们处理数据和进行可视化。
步骤2:熟悉Python语法在开始编写代码之前,我们需要先熟悉Python的基本语法。
Python是一种简洁易读的编程语言,学习曲线较为平缓。
步骤3:数据处理在实验中,我们将使用Pandas库来处理数据。
我们可以从文件或网络中加载数据,并对其进行清洗和转换。
数据处理是科学计算中的重要步骤,它可以帮助我们准备数据以用于后续的分析和建模。
步骤4:数据可视化数据可视化可以帮助我们更好地理解数据的特征和关系。
在本次实训中,我们将使用Matplotlib库来创建各种类型的图表,如折线图、柱状图和散点图。
通过可视化,我们可以从数据中获得更直观的信息。
步骤5:模型构建与预测模型构建是科学计算中的核心环节之一。
我们将使用Scikit-learn库来构建机器学习模型,并使用训练数据对模型进行训练。
然后,我们可以使用训练好的模型对新数据进行预测。
4. 实验结果通过本次实训,我们成功完成了实验目标。
我们掌握了Python的基本语法和科学计算库的使用方法。
我们学会了如何进行数据处理、数据可视化和模型构建。
这些技能将在今后的科学研究和工作中派上用场。
5. 总结科学计算是一项重要的技能,可以帮助我们在科学研究和工程实践中更好地处理和分析数据。
通过本次实训,我们对科学计算有了更深入的了解,并掌握了一些基本的数据分析和建模技巧。
一、引言计算数学是数学的一个分支,主要研究如何将数学理论应用于解决实际问题,特别是在计算机科学、物理学、工程学等领域。
为了深入了解计算数学在现实生活中的应用,我们组织了一次社会实践,旨在通过实地考察、访谈和案例分析等方式,探究计算数学在实际问题解决中的作用和价值。
二、实践背景随着科技的飞速发展,计算数学在各个领域的应用越来越广泛。
从天气预报、金融分析到医学影像,计算数学都发挥着至关重要的作用。
本次社会实践旨在让我们深入了解计算数学在现实世界中的应用,提升我们的专业素养和实践能力。
三、实践内容1. 实地考察我们首先参观了某知名气象研究所,了解了计算数学在天气预报中的应用。
通过实地考察,我们看到了气象学家如何利用高性能计算设备,结合计算数学方法,对大气数据进行处理和分析,从而提高天气预报的准确率。
2. 访谈专家我们邀请了计算数学领域的专家进行访谈,他们分享了在各自领域应用计算数学解决实际问题的经验和心得。
通过访谈,我们了解到计算数学在解决复杂问题时的重要性和挑战。
3. 案例分析我们选取了几个具有代表性的案例,分析了计算数学在这些案例中的应用。
例如,在石油勘探领域,计算数学被用于优化油气田开发方案,提高资源利用率;在生物医学领域,计算数学被用于图像处理和疾病诊断。
四、实践成果1. 提升专业素养通过本次社会实践,我们对计算数学有了更深入的理解,认识到其在解决实际问题中的重要作用。
同时,我们也学习了如何将理论知识应用于实际问题的解决。
2. 增强实践能力在实地考察、访谈和案例分析过程中,我们积累了丰富的实践经验,提高了自己的实践能力。
3. 拓宽视野通过本次社会实践,我们了解到计算数学在各个领域的广泛应用,拓宽了我们的视野。
五、实践体会1. 理论联系实际计算数学是一门应用性很强的学科,将理论知识应用于实际问题是我们的重要任务。
通过本次社会实践,我们深刻体会到理论联系实际的重要性。
2. 创新意识在解决实际问题的过程中,我们需要具备创新意识,不断探索新的方法和技术。
有关计算实习报告范文集锦五篇计算实习报告篇1为了研究网络环境对中学生的影响,进一步加强德育工作的针对性和实效性,厦门市教育局专门成立了“网络德育专题调研组”。
调研组采用分层随机取样的方法,以无记名方式对399名中学生(初中占34。
1%,高中占65。
9%)、222名中学生家长(文化程度为识字不多、小学初中、高中以上的分别占4。
1%、40。
3%、55。
2%)、257名中学教师进行了抽样调查。
同时,还通过社区走访、个案访谈等方式进行调查,分别召开了中学生、家长、教师和社会各界4次座谈会。
(一)中学生及其家长对网络的态度和相关行为的情况1.中学生上网率极高,上网时间长,多数家长却从未上过网,大部分教师上网经验不够丰富互联网以独特的魅力吸引着广大中学生。
调查显示,93.5%的中学生表示对网络感兴趣,并有11.4%的中学生认为“很长时间不上网是令人难以忍受的”。
我市中学生的上网率高达92.1%,其中有24.5%的中学生是互联网上的常客。
75.8%的中学生每月上网的总时间在10小时之内,而6.8%的“网虫”则超过了30小时。
周末和节假日是中学生们上网的高峰时段;9%的中学生表示平时每天的课余时间都能够上网,21.3%的中学生上网时间并不固定;35.5%的中学生能自我约束在每次1小时内,24%的中学生每次要在网上滞留3小时以上,24.5%的中学生则不固定。
与孩子们相比,家长和教师们则大为逊色。
45.2%的家长表示不了解网络为何物,没上过网的高达69.2%,只有7.7%的家长经常上网。
大部分教师的上网时间少、上网经验明显不足。
26.7%的教师具有3年以上的上网经历,64.4%的教师则是近一两年内才融入网络的大潮;在上网的教师中,30%表示经常上网,9.1%每天上网;51.9%每次上网时间不超过一小时。
同时,还有55.7%的教师坦陈自己很少上网,有近10%的教师称从不“触网”。
2.家里是中学生上网最主要的场所,网吧的主要客源是中学生过去,我们对于中学生在上网方面的行为规范教育主要针对学校、网吧等公共场所。
一、实验目的1. 理解科学计数法的概念和意义。
2. 掌握科学计数法的表示方法。
3. 通过实验,学会运用科学计数法进行数值的表示和计算。
二、实验原理科学计数法是一种表示较大或较小数值的方法,将一个数表示成a乘以10的n次幂的形式,其中1≤|a|<10,n为整数。
这种记数方法在处理极大或极小的数值时,可以简化计算,提高计算效率。
三、实验材料1. 计算器2. 白纸3. 铅笔四、实验步骤1. 准备实验数据:列出一些需要用科学计数法表示的数值,如:0.00000025,34500000,6.022×10^23。
2. 将每个数值分别转换为科学计数法形式:- 对于0.00000025,首先将其转换为2.5×10^-7。
- 对于34500000,将其转换为3.45×10^7。
- 对于6.022×10^23,直接表示为6.022×10^23。
3. 对比原数值和科学计数法表示的数值,观察两者之间的差异。
4. 运用科学计数法进行数值的加减运算:- 计算2.5×10^-7 + 3.45×10^7,先将两个数值转换为同一次幂的科学计数法形式,然后进行相加。
- 计算6.022×10^23 - 3.45×10^7,同样先将两个数值转换为同一次幂的科学计数法形式,然后进行相减。
5. 运用科学计数法进行数值的乘除运算:- 计算2.5×10^-7 × 3.45×10^7,将两个数值的系数相乘,指数相加。
- 计算6.022×10^23 ÷ 3.45×10^7,将两个数值的系数相除,指数相减。
6. 将计算结果与直接计算结果进行对比,验证科学计数法的正确性。
五、实验结果与分析1. 通过实验,我们发现科学计数法在表示极大或极小的数值时,可以简化数值,提高计算效率。
2. 在进行数值的加减运算时,我们需要将数值转换为同一次幂的科学计数法形式,然后进行系数的加减运算。
科学计算实践大报告信计12 徐文豪 21109020391.上机题目11.1 问题重述对如下积分方程:3212045251()()()8(1)1x x x x y t dt y x x t+-++-=++⎰ (1) 用复化辛普森积分公式在区间[0,1]求其离散近似解,再用求出的离散近似解通过三次样条插值得到连续近似解,并与如下真解做比较:21()(1)y x x =+ (2)1.2 问题分析将[0,1]分为n 个长度相等的自区间,令1,,0,1,,i h x ih i n n=== (3)1()()()1f t x y t t=-+ (4)将等式(1)中的积分项用复化辛普森公式展开后,结果如下:32112114525(0)2()4()(1)()8(1)62n ni i i i i x x x x x h f f x f f y x x -+==++-+⎡⎤++++=⎢⎥+⎣⎦∑∑ (5) 等式(5)实际上是y 关于x 的隐函数,但如果我们分别令,0,1,,212k hx k k n ==+,则等式(5)即转化为以(),0,1,,21k y x k n =+为未知量的21n +阶方程组,由此可由列主元高斯消去法或共轭梯度法等接触各()k y x ,这样就得到了()y x 在[0,1]上的离散近似解,再通过三次样条插值,即可得到()y x 在[0,1]的连续近似解。
值得一提的是,当各()k y x 求出来之后,等式(5)本身就是一个()y x 在[0,1]之间的连续近似解,且效果应该比用三次样条插值得到的更好,在结果分析中我将其命名为“辛普森表达式”。
1.3 结果分析邮件附件中的mathprac1.m 是上机题目一的完整程序,令区间数n=4时结果如下:乎完全重合,说明近似效果非常好。
为分析n不错了。
最后值得一提的是,从理论上将,随着n的增大,近似效果是越来越好的。
但这并不意味着我们应该把n取得很大,因为当等式(5)对应的方程阶数变大时,求解所需的时间也增大了。
于是这里就存在一个问题:我们应该取n 等于多少才合适呢?对这个问题,看图像当然是个选择,不过它只能进行粗略的比较,如果我们要使解达到一定的精度,则应该先确定数值区间的间隔d ,再由此确定区间数n ,比如取0.1d =时有10n =。
对这个问题,可以以辛普森表达式曲线和准确解的无穷向量范数作为误差衡量指标,得到当1,4,10,10n =时对应的误差分别为: 1.784512e-002,1.335658e-004,3.640174e-006,3.690255e-010。
2.上机题目2-12.1 问题重述分别用共轭梯度法和预条件共轭梯度法求解线性方程组Ax b =,其中234567891041514118141661412581411026,14140981411638614165538141262146141048577A b ⎛⎫⎛⎫⎪ ⎪⎪ ⎪⎪ ⎪ ⎪ ⎪⎪ ⎪⎪ ⎪==⎪ ⎪ ⎪ ⎪⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎪ ⎪ ⎪ ⎪⎪ ⎪⎝⎭⎝⎭2.2 问题分析由于共轭梯度法解对称正定方程组已经很成熟,因此用共轭梯度法求解是很容易的,对应的算法流程图如下:N共轭梯度法时求解大型线性方程组的常用方法,它的优点是编程简单,且具有最多n 步收敛速度,但共轭梯度法的收敛速度是和系数矩阵的条件数密切相关的,若矩阵比较病态的话,则收敛会比较慢。
这让我们想到了对Ax b =做一些变换使得所求解的矩阵比较良态。
预优共轭梯度法的思想是将方程转换为111()()C AC Cx C b ---= (6)其中C 是对称正定的,如果我们能选择合适的C 使得11C AC --比较良态,则对等式(6)使用共轭梯度法能取得较好的效果。
由于等式(6)的形式比较特殊,通过一定技巧可以简化运算,定义2M C =称为预优矩阵,得到与对等式(6)使用共轭梯度法的等价简化算法如下: Step 1:给定初始迭代向量x ,精度要求ε,最大迭代次数max k ,令0k =。
Step 2:计算r b Ax =-,1,,,,TT q z M r p z q r z w Ap p wα-=====。
Step 3:更新,x x p r r w αα=+=-。
Step 4:若r ε>或max k k >,终止迭代。
Step 5:令1k k =+,计算111,,,,,,TT q q z M r q q q r z p z p w Ap q p wββα-=====+== Step 6:转Step4。
2.3 结果分析邮件附件中的mathprac2_1.m 是上机题目2-1的完整程序,取误差精度为810ε-=,得到共轭梯度法的迭代次数、运行时间和近似解如下:由于此时系数矩阵的对角元相差较大,可直接取其对角元素构造对角矩阵作为预优矩阵M ,即11(,,)nn M diag a a =,预优共轭梯度法的迭代次数、运行时间和近似解如下:从结果可以看出,此时预优共轭梯度法明显优于普通共轭梯度法,计算系数矩阵A 的条件数得到:() 2.676903e+005cond A =,条件数明显较大。
为验证共轭梯度法的这个性质,在已经知道准确解是全1的情况下,取100n =,计算系数矩阵A 的条件数得到:() 4.102341e+059cond A =,这已经大得很离谱了。
对此,首先,我们看一下普通共轭梯度法的计算效果:从图中可以看出,此时普通共轭梯度法已经达到了最大迭代次数,而且远远没有收敛。
而预优共轭梯度法的计算效果如下:从图中得到,预优共轭梯度法迭代6步就收敛了,由此可以看出当系数矩阵很病态时使用预优共轭梯度法代替普通共轭梯度法的必要性。
3.上机题目2-23.1 问题重述,其中用预条件共轭梯度算法求解线性方程组Ax b,B I c I B I d A b I B I d I B c -⎛⎫⎛⎫ ⎪ ⎪-- ⎪ ⎪⎪ ⎪== ⎪ ⎪-- ⎪ ⎪⎪ ⎪-⎝⎭⎝⎭上式中A 为22N N ⨯矩阵,b 为2N 维向量,B 为N N ⨯矩阵,I 为N N ⨯单位矩阵,c 、d 为N 维向量,且412114110,,141101421B c d -⎛⎫⎛⎫⎛⎫ ⎪ ⎪ ⎪-- ⎪ ⎪ ⎪⎪ ⎪ ⎪=== ⎪ ⎪ ⎪-- ⎪ ⎪ ⎪⎪ ⎪ ⎪-⎝⎭⎝⎭⎝⎭,400N =3.2问题分析对这个问题,最直接的思路就是直接将系数矩阵A 和值向量b 直接导入计算机进行计算,但矩阵A 实际上是一个160000160000⨯的矩阵,我们可以估计一下A 所需要的内存。
由于要对A 进行乘法运算,因此A 中的元素应为双精度型,也就说每个元素使用64位的内存,得到所需的内存为:2316000064190.734981024GB ⨯=⨯ (7) 而我们普通计算机的内存才4GB 左右。
因此要实现这种想法,一般只能用三种方法:(1)使用超级计算机。
(2)使用并行计算。
(3)使用虚拟内存(即将数据先存在磁盘中然后从内存中一点一点调用)。
如果系数矩阵A 不是稀疏矩阵且没有规律,那我们只能用这三种方法做了。
但在这题中A 明显稀疏且很有规律,例如当3N =时,矩阵A 如下:这时再使用以上三种方法就代价太高了,此时我们可以对A 进行压缩存储。
通常使用的压缩存储算法有两种:(1)压缩行存储。
(2)非零位置存储。
两种算法均将对A 的存储转换为对三个向量的存储。
压缩行存非零元素val ,非零元素所在列col ,每一行第一个非零元素在val 的下标1row 。
非零位置存储存非零元素val ,非零元素所在列col ,非零元素所在行row 。
设矩阵的阶数为n ,系数率(含非零元素比率)为r ,则压缩行存储算法要存221n r n ++个元素,而非零位置存储需要存23n r 个元素,由于系数矩阵的r 都比较小,因此两者相差不是很大,又因为非零位置存储编程简单易懂,所以类似于Matlab 等软件处理稀疏矩阵时很多使用的是非零元素存储。
对这道题,为了熟悉压缩行存储,我程序中使用了它作为压缩算法。
3.3 结果分析邮件附件中的mathprac2_2.m 是问题2-2的完整程序,设置精度要求810ε-=,如果和之前一样以对角元素构造预优矩阵使用预优共轭梯度法,则迭代次数774k =,程序运行时间288.099t s =。
为了比较预优共轭梯度法的效果,在程序中直接使用普通共轭梯度法,得到迭代次数为773k =,217.514t =。
我们发现此时的预优共轭梯度法收敛反而不如普通共轭梯度法快。
这是在意料之中的,因为使用对角元作为预优矩阵是在A 的对角元相差较大时效果比较好,而这里的系数矩阵A 均为4,因此这种预优矩阵选法在这里不太适合。
那这里就有个问题,我们是满意共轭梯度法的效果然后结束,还是继续费心寻找好的预优矩阵呢?我觉得一种可行的策略是估计其条件数,若其条件数较小时,则说明共轭梯度法能取得较好的效果,773的迭代步长只是问题的规模造成的,若条件数很大,则需要继续寻找合适的预优矩阵。
由于160000160000⨯的矩阵我们无法直接估计其条件数,因此我们可以分析当N 比较小的情形,分析条件数的增长速度,然后对400N =时的情形进行估计,于这些A 都具有相同的形状,因此我们有理由相信这种关系是稳定的。
在这种假设下,我们可以根据40N =的条件数估计400N =时有()68061.c o n d A ≈,这个等级的条件数相对于160000160000⨯的A 而言是很小的,也就是说此时A 很良态。
因此可以认为用普通共轭梯度法就可以得到比较好的收敛速度了,没必要再去使用预优共轭梯度法。
4.上机题目3-14.1.问题重述用差分法求解如下二阶常微分方程边值问题(400N =)222,01y(0)1,'(1)2(1)1d y x x dxy y ⎧-=<<⎪⎨⎪=+=⎩(8)4.2.问题分析对一般的线性常微分边值问题01212''()()'()()()(),'()()'()()y x p x y x q x y x f x a x b y a y a y b y b αααβββ++=<<⎧⎪+=⎨⎪+=⎩ (9)令b ah N-=,(0,1,,)i x a ih i n =+=,则可得到对应的差分方程组 00121021111202112(34)22(),1,2,,12(43)2i i i i i i i i i n n n n y y y y h y y y p y y q y f i n h h y y y y h αααβββ-++----+-⎧+=⎪⎪-+-⎪++==-⎨⎪-+⎪+=⎪⎩(10)解方程组(10)可得差分解(0,1,,)i y i n =。