C语言课程设计54764
- 格式:doc
- 大小:97.50 KB
- 文档页数:14
c语言课程设计报告详细版一、课程目标知识目标:1. 掌握C语言的基本语法和结构,包括变量声明、数据类型、运算符、表达式和语句。
2. 理解并能运用控制结构,如顺序、选择和循环结构进行程序设计。
3. 学会使用数组、函数和指针进行程序开发,并能理解它们在解决复杂问题中的应用。
4. 熟悉基本的输入输出操作,文件操作以及简单的错误处理机制。
技能目标:1. 能够编写简单的C程序,解决实际问题,展现出逻辑思考和问题解决的能力。
2. 能够阅读和分析C程序代码,理解程序的结构和执行过程。
3. 能够使用调试工具检查和修正程序中的错误,提高程序的稳定性和可靠性。
4. 能够通过小组合作,完成一个综合性的项目,培养团队协作和项目管理的初步技能。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发探究计算机科学的热情,形成主动学习和终身学习的习惯。
2. 培养学生的创新思维和批判性思维,鼓励尝试不同的解决方案,勇于面对编程中的挑战。
3. 增强学生的信息意识和责任感,理解程序在现实生活中的应用和影响,认识到编程对社会发展的贡献。
4. 通过项目实践,培养学生的集体荣誉感,加强沟通能力,形成良好的团队合作精神。
课程性质分析:本课程为高年级的C语言程序设计,旨在通过项目驱动的教学方法,使学生在实践中掌握C语言的编程技能,并能够在日常生活和学习中应用。
学生特点分析:学生具备一定的逻辑思维能力,对计算机编程有一定兴趣,但个体差异较大,需要针对不同层次的学生设计不同难度和类型的教学活动。
教学要求:1. 结合实际案例进行教学,强调理论知识与实践操作的结合。
2. 注重培养学生的实际编程能力和问题解决能力,鼓励学生自主探索和协作学习。
3. 通过形成性评价和总结性评价相结合的方式,全面评估学生的学习成果。
二、教学内容1. C语言基础- 变量与数据类型- 运算符与表达式- 输入输出函数- 顺序结构程序设计2. 控制结构- 选择结构(if-else)- 循环结构(for、while、do-while)3. 函数与数组- 函数定义与调用- 数组的使用- 二维数组4. 指针与字符串- 指针的概念与使用- 指针与数组- 字符串处理函数5. 文件操作与错误处理- 文件的打开与关闭- 文件的读写操作- 简单错误处理6. 综合项目实践- 项目需求分析- 功能模块划分- 编程实现与调试- 项目展示与评价教学内容安排与进度:第一周:C语言基础第二周:控制结构第三周:函数与数组第四周:指针与字符串第五周:文件操作与错误处理第六周至第八周:综合项目实践教材章节关联:《C程序设计》第一章至第五章,涵盖课程教学内容中的所有知识点,为综合项目实践打下基础。
c语言编程课程设计C语言编程课程设计一、引言C语言是一种非常重要的程序设计语言,被广泛应用于软件开发领域。
为了帮助学生更好地掌握C语言编程,提高其编程能力和解决实际问题的能力,编程课程设计变得至关重要。
本文将围绕C语言编程课程设计展开讨论,探讨如何设计一个富有挑战性和实用性的编程课程。
二、课程设计目标1. 提高学生对C语言的理解和应用能力;2. 培养学生解决实际问题的能力;3. 培养学生分析和设计软件解决方案的能力;4. 培养学生团队协作和沟通能力;5. 培养学生自主学习和探索的能力。
三、课程设计内容1. 基础知识讲解:介绍C语言的基本语法、数据类型、运算符、控制语句等基本知识,帮助学生建立起对C语言的基本认识。
2. 编程实践:设计一系列编程实践项目,包括但不限于简单的计算器、学生成绩管理系统、图书管理系统等,通过这些实践项目,学生可以巩固所学知识,提高编程能力。
3. 复杂项目设计:引导学生设计一些复杂的实际项目,如游戏开发、简单操作系统开发等,这些项目需要学生综合运用所学知识,培养解决实际问题的能力。
4. 团队合作项目:安排学生组成小组,共同完成一个大型项目,如社交网络平台的设计、电子商务网站的设计等,通过团队协作,学生可以培养团队合作和沟通能力。
5. 案例分析:引导学生分析和研究一些实际案例,如著名的开源软件项目,帮助学生了解实际项目的开发流程和经验,培养学生分析和设计软件解决方案的能力。
四、课程设计方法1. 理论讲解结合实践:在讲解基础知识的同时,引导学生通过编写代码实践所学知识,加深对知识的理解和应用。
2. 项目导向学习:通过设计一系列实际项目,引导学生通过完成项目来学习和掌握C语言编程技巧和解决问题的方法。
3. 实践与反思:在学生完成编程实践项目后,鼓励学生进行代码复盘和反思,总结经验教训,提高编程能力。
4. 指导和辅导:课程设计中应提供充足的指导和辅导,包括课堂教学、实验指导、作业批改等,以帮助学生更好地理解和掌握所学知识。
c语言课程设计报告文档一、课程目标知识目标:1. 理解C语言的基本语法和程序结构,掌握变量定义、数据类型、运算符、表达式等基本概念;2. 学会使用C语言进行顺序结构、分支结构、循环结构的编程,并能运用这些结构解决实际问题;3. 掌握C语言数组和字符串的使用,熟练运用数组进行数据处理;4. 了解C语言函数的定义与调用,学会编写简单的函数,理解函数参数、返回值等概念;5. 了解C语言指针的基本概念,学会使用指针进行内存操作和数据传递。
技能目标:1. 培养学生运用C语言编程解决实际问题的能力;2. 培养学生具有良好的编程习惯,如代码规范、注释清晰等;3. 提高学生调试程序、查找并解决问题的能力;4. 培养学生团队协作能力,学会与他人共同完成项目。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养其主动学习和探究的精神;2. 培养学生面对编程困难时,具有坚持不懈、勇于克服的品质;3. 增强学生的自信心,使其在编程实践中感受到成就感;4. 引导学生认识到编程对于社会发展的重要性,培养其社会责任感。
本课程旨在让学生掌握C语言的基本知识和技能,培养其编程思维和解决问题的能力,同时注重培养其情感态度价值观,使其成为具有全面素质的计算机编程人才。
在教学过程中,根据学生的年龄特点和认知水平,采用任务驱动的教学方法,以实例为主线,引导学生主动参与、探究学习。
通过课程学习,使学生能够具备一定的编程基础,为后续学习打下坚实基础。
二、教学内容本章节教学内容围绕C语言基础知识,结合课程目标,制定以下教学大纲:1. C语言概述- 了解C语言发展史、特点和应用领域;- 掌握C语言程序的基本结构。
2. 数据类型、变量和常量- 学习基本数据类型(整型、浮点型、字符型);- 掌握变量的定义、赋值和作用域;- 理解常量的概念及其使用。
3. 运算符与表达式- 掌握算术、关系、逻辑运算符及其优先级;- 学习表达式的构成和计算。
4. 顺序结构程序设计- 学习C语言程序的基本输入输出函数;- 编写简单的顺序结构程序。
c语言课程设计一、课程目标知识目标:1. 学生能掌握C语言基础语法,包括变量声明、数据类型、运算符、控制结构等。
2. 学生能理解函数的定义和调用,掌握模块化编程思想。
3. 学生能运用数组、指针解决实际问题,提高编程能力。
4. 学生了解C语言中的文件操作,能够读写文件,处理数据。
技能目标:1. 学生能运用C语言编写简单的程序,解决实际问题。
2. 学生通过课程学习,培养逻辑思维能力和问题解决能力。
3. 学生能够使用调试工具,如gcc、gdb等,对程序进行编译、调试和优化。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习热情,形成自主学习习惯。
2. 学生能够体会到编程带来的成就感,增强自信心。
3. 学生在学习过程中,培养团队协作精神,学会分享和交流。
课程性质:本课程为C语言入门课程,以实践为主,理论联系实际,注重培养学生的动手能力和编程思维。
学生特点:学生为初中年级,具备一定的计算机操作基础,对编程有一定兴趣,但缺乏系统的编程知识和实践经验。
教学要求:结合学生特点,课程设计应以案例教学为主,注重实践操作,引导学生主动探索,培养编程兴趣。
同时,注重培养学生的逻辑思维能力和问题解决能力,提高学生的编程素养。
通过分解课程目标为具体学习成果,使学生在课程结束后能够独立编写简单的C语言程序,解决实际问题。
二、教学内容1. C语言基础语法- 变量声明、数据类型- 运算符、表达式- 控制结构(顺序、选择、循环)2. 函数与模块化编程- 函数定义、调用- 参数传递、返回值- 递归函数3. 数组与指针- 一维数组、多维数组- 指针的概念、运算- 指针与数组的关系4. 文件操作- 文件的打开、关闭- 文件的读写操作- 文件指针定位5. 编程实践- 简单的计算器程序- 学生管理系统- 排序算法实现教学安排与进度:第一周:C语言基础语法(1-2章)第二周:函数与模块化编程(3章)第三周:数组与指针(4章)第四周:文件操作(5章)第五周:编程实践与项目开发(6章)教材章节关联:1. C语言基础语法:教材第1-2章2. 函数与模块化编程:教材第3章3. 数组与指针:教材第4章4. 文件操作:教材第5章5. 编程实践:教材第6章教学内容确保科学性和系统性,以教材为基础,结合实践案例,引导学生逐步掌握C语言编程知识。
c语言报告课程设计一、教学目标本课程的目标是让学生掌握C语言的基础知识,包括数据类型、变量、运算符、控制结构、函数等,培养学生编写简单的C语言程序的能力。
通过本课程的学习,使学生了解编程的基本思想,培养学生的逻辑思维能力和问题解决能力。
同时,通过编程实践,培养学生的创新意识和团队合作精神,提高学生的学习兴趣和自信心。
二、教学内容教学内容主要包括C语言的基本概念、数据类型、变量、运算符、控制结构、函数等基础知识。
具体包括:1.C语言的基本概念:了解C语言的发展历程、特点和应用领域。
2.数据类型:整型、浮点型、字符型等数据类型的定义和使用。
3.变量:变量的概念、声明、赋值和作用域。
4.运算符:算术运算符、关系运算符、逻辑运算符等运算符的用法。
5.控制结构:顺序结构、选择结构、循环结构等控制结构的实现。
6.函数:函数的定义、声明、调用和返回值。
三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。
1.讲授法:通过讲解C语言的基本概念、语法和编程技巧,使学生掌握C语言的基础知识。
2.案例分析法:通过分析典型的C语言程序案例,使学生理解编程的思想和方法。
3.实验法:通过编写和运行C语言程序,使学生动手实践,巩固所学知识。
四、教学资源教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:选用《C程序设计语言》作为主要教材,辅助以相关参考书籍。
2.多媒体资料:制作PPT、视频等多媒体教学资料,丰富教学手段。
3.实验设备:提供计算机实验室,让学生进行上机实践。
五、教学评估教学评估主要包括平时表现、作业和考试三个部分。
平时表现主要评估学生的课堂参与度、提问和回答问题的积极性等;作业主要评估学生的编程能力和对知识的理解应用能力;考试主要评估学生对C语言基础知识的掌握程度。
评估方式应客观、公正,能够全面反映学生的学习成果。
六、教学安排教学安排共分为16周,每周2课时。
教学地点为计算机实验室,以便学生进行上机实践。
c语言课课程设计一、教学目标本节课的教学目标是让学生掌握C语言的基本语法和编程思想,培养学生编写简单程序的能力。
具体目标如下:1.知识目标:–了解C语言的发展历史和特点。
–掌握C语言的数据类型、变量、运算符和表达式。
–熟悉C语言的控制结构,包括条件语句和循环语句。
–理解函数的定义和调用。
2.技能目标:–能够使用C语言编写简单的程序,实现基本的输入输出、计算和控制流程。
–能够阅读和理解简单的C语言程序。
–能够对程序进行简单的调试和优化。
3.情感态度价值观目标:–培养学生对计算机科学的兴趣和好奇心。
–培养学生解决问题的能力和创新精神。
–培养学生团队合作和分享的意识。
二、教学内容根据教学目标,本节课的教学内容主要包括以下几个部分:1.C语言的发展历史和特点:介绍C语言的起源、发展和特点,让学生了解C语言的重要性和应用领域。
2.数据类型、变量、运算符和表达式:讲解C语言的基本数据类型、变量的声明和使用、运算符的用法和表达式的计算。
3.控制结构:讲解条件语句和循环语句的用法,让学生能够编写简单的分支和循环程序。
4.函数的定义和调用:讲解函数的定义、声明和调用方式,让学生了解函数的基本概念和使用方法。
5.编程实践:通过编写简单的程序,让学生实践和巩固所学的知识。
三、教学方法为了达到教学目标,本节课将采用以下几种教学方法:1.讲授法:教师讲解C语言的基本概念和语法,引导学生理解和掌握相关知识。
2.案例分析法:通过分析典型的C语言程序,让学生了解编程思想和方法。
3.实验法:让学生动手编写和运行C语言程序,培养学生的编程能力和实践能力。
4.讨论法:鼓励学生之间的交流和讨论,培养学生的团队合作和沟通能力。
四、教学资源为了支持教学内容和教学方法的实施,本节课将准备以下教学资源:1.教材:选用权威、实用的C语言教材,为学生提供系统的学习资料。
2.参考书:提供一些经典的C语言编程书籍,供学生课后阅读和参考。
3.多媒体资料:制作精美的PPT和教学视频,提高学生的学习兴趣和效果。
c语言课程设计报告一、课程目标知识目标:1. 让学生掌握C语言的基本语法,包括变量声明、数据类型、运算符、控制结构等;2. 培养学生运用C语言进行程序设计的能力,学会编写简单的程序解决实际问题;3. 使学生了解C语言中的数组、函数和指针等高级概念,并能够灵活运用。
技能目标:1. 培养学生熟练使用C语言编程环境,如Turbo C或Visual Studio等;2. 提高学生的编程技巧,使其能够编写具有逻辑性和可读性的代码;3. 培养学生独立分析问题、设计程序解决问题的能力。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养其主动探索、自主学习的精神;2. 培养学生严谨、细心的学习态度,使其认识到编程过程中细节的重要性;3. 强调团队协作和交流分享,提高学生的沟通能力和团队意识。
分析课程性质、学生特点和教学要求:1. 课程性质:C语言课程属于信息技术学科,具有实践性和应用性强的特点;2. 学生特点:学生为初中生,具有一定的逻辑思维能力和计算机操作基础,但编程经验不足;3. 教学要求:结合学生特点,注重理论与实践相结合,以实例教学为主,引导学生动手实践。
1. 熟练运用C语言编写简单的程序;2. 掌握C语言的基本语法和编程技巧;3. 提高编程兴趣,形成自主学习、团队协作的良好习惯。
二、教学内容1. C语言基础知识:- 变量与常量的概念及其声明- 数据类型:整型、浮点型、字符型- 运算符:算术、关系、逻辑、赋值运算符- 控制结构:顺序结构、选择结构、循环结构2. 函数与数组:- 函数的定义、声明和调用- 数组的定义、初始化和使用- 一维数组、二维数组的操作3. 指针与字符串:- 指针的概念、声明与使用- 指针与数组的关系- 字符串的基本操作4. 编程技巧与实践:- 编程规范与命名规则- 代码调试与优化- 简单算法的实现(如排序、查找)5. 综合案例分析与编程实践:- 结合实际案例,运用所学知识进行程序设计- 针对不同案例,分析问题、设计算法、编写程序- 案例包括:计算器、成绩管理系统、小游戏等教学内容安排与进度:1. C语言基础知识(2周)2. 函数与数组(2周)3. 指针与字符串(2周)4. 编程技巧与实践(1周)5. 综合案例分析与编程实践(3周)教材章节关联:1. C语言基础知识:教材第1-3章2. 函数与数组:教材第4-5章3. 指针与字符串:教材第6章4. 编程技巧与实践:教材第7章5. 综合案例分析与编程实践:教材第8章及课后习题、拓展案例三、教学方法1. 讲授法:- 对于C语言的基本语法、概念和理论,采用讲授法进行教学,确保学生能够系统地掌握知识;- 讲授过程中注重条理清晰、深入浅出,结合实际案例,提高学生的理解和记忆;- 定期进行知识巩固,通过讲解经典例题,帮助学生深化理解。
c语言课程设计文档一、课程目标知识目标:1. 理解C语言的基本语法和结构,掌握变量定义、数据类型、运算符、表达式等基础知识;2. 学会使用控制结构(如顺序、选择、循环)进行程序设计,培养逻辑思维能力;3. 熟悉函数的定义和调用,掌握模块化程序设计方法;4. 掌握数组、字符串、指针等基本数据结构的使用,提高数据处理的效率;5. 了解C语言中的文件操作,能够进行简单的文件读写。
技能目标:1. 能够使用C语言编写简单的程序,解决实际问题;2. 培养良好的编程习惯,如规范命名、注释清晰、代码整洁;3. 学会运用调试工具,如GDB,进行程序调试,提高程序的正确性和稳定性;4. 能够阅读和分析简单的C语言程序,具备一定的程序理解和修改能力;5. 初步具备团队合作意识,学会与他人合作完成程序设计和开发。
情感态度价值观目标:1. 培养学生对计算机编程的兴趣和热情,提高学习积极性;2. 培养学生勇于尝试、克服困难的精神,增强解决问题的自信心;3. 培养学生遵守编程规范,树立良好的职业道德观念;4. 培养学生分享知识、互助合作的团队精神,提高人际沟通能力;5. 培养学生关注社会热点问题,学会运用所学知识为社会服务。
本课程针对高中年级学生,结合C语言课程性质和教学要求,旨在培养学生具备扎实的编程基础和实际编程能力,同时注重培养学生的情感态度和价值观,使他们在掌握知识技能的同时,形成良好的职业素养和团队合作精神。
通过具体的学习成果分解,为后续的教学设计和评估提供明确依据。
二、教学内容1. C语言基础知识:变量、数据类型、常量、运算符、表达式、语句;教材章节:第一章2. 控制结构:顺序结构、选择结构(if-else)、循环结构(for、while、do-while);教材章节:第二章3. 函数:函数定义、调用、参数传递、递归;教材章节:第三章4. 模块化程序设计:模块划分、代码组织、头文件、库函数;教材章节:第四章5. 数组与字符串:一维数组、二维数组、字符串处理;教材章节:第五章6. 指针:指针概念、指针运算、指针与数组、指针与函数;教材章节:第六章7. 结构体与共同体:结构体定义、结构体数组、结构体指针、共同体;教材章节:第七章8. 文件操作:文件打开、关闭、读写、定位;教材章节:第八章教学内容按照教材章节顺序安排,确保学生能够逐步掌握C语言的基本知识和编程技能。
C语言课程设计
C语言一直是计算机编程领域中的重要语言之一,在计算机专业课程中也占据着重要的地位。
针对C语言课程设计,我们可以从以下几个方面展开讨论。
一、课程内容安排
1. 基础语法
•变量和数据类型
•运算符和表达式
•控制语句
•函数
•数组和指针
2. 高级特性
•结构体与联合体
•文件操作
•动态内存管理
•多文件编程
•预处理指令
3. 实战项目
•编写简单的文本处理程序
•实现简单的数据结构
•开发简单的小游戏
二、课程教学方法
1. 理论结合实践
在教学过程中,注重理论知识的讲解同时配合大量实践操作,通过编程练习巩固学生对所学知识的掌握。
2. 项目驱动学习
引导学生通过完成实际项目来提升编程能力,培养解决问题的能力和独立思考的能力。
三、课程设计考核
1. 作业
定期布置编程作业,检验学生对课堂知识的掌握情况。
2. 项目
要求学生在课程结束前完成一个小项目,综合运用所学知识解决实际问题。
3. 考试
期末考试考核学生对整个课程知识的综合掌握程度,包括理论知识和实际编程能力。
四、课程收获与展望
通过C语言课程的学习,学生将掌握C语言的基本语法和高级特性,具备利用C语言解决实际问题的能力。
同时也为学生打下扎实的编程基础,为学习其他编程语言奠定基础。
结语
C语言课程设计旨在帮助学生系统学习C语言的基础知识和应用技能,培养学生的编程思维和解决问题的能力,为他们未来的计算机编程之路奠定坚实基础。
愿每位学生在C语言课程中收获知识的同时,也收获自己的成长和进步。
c语言课课程设计范本一、教学目标本节课的教学目标是让学生掌握C语言的基本语法和编程思想,培养学生编写简单程序的能力,使学生了解计算机编程的基本过程,并培养学生的逻辑思维能力和创新能力。
具体分解为以下三个目标:1.知识目标:学生能够理解并掌握C语言的基本数据类型、运算符、控制结构、函数等语法知识。
2.技能目标:学生能够运用所学知识编写简单的C语言程序,解决实际问题。
3.情感态度价值观目标:学生在学习过程中,培养对计算机编程的兴趣,增强自信心,培养团队合作精神。
二、教学内容本节课的教学内容主要包括C语言的基本语法和编程思想。
具体安排如下:1.引言:介绍C语言的背景和发展历程,让学生对C语言有一个整体的认识。
2.基本数据类型和运算符:讲解C语言的基本数据类型(整型、浮点型、字符型等)和常用运算符(算术运算符、关系运算符、逻辑运算符等)。
3.控制结构:讲解C语言的控制结构(顺序结构、选择结构、循环结构等)。
4.函数:讲解C语言的函数概念、定义和调用,以及函数的参数传递和返回值。
5.编程实践:布置课后练习,让学生运用所学知识编写简单的C语言程序。
三、教学方法为了提高教学效果,本节课将采用以下教学方法:1.讲授法:讲解C语言的基本语法和编程思想,让学生掌握知识要点。
2.案例分析法:分析典型程序案例,让学生了解编程的实际应用。
3.实验法:安排课后编程练习,让学生动手实践,巩固所学知识。
4.小组讨论法:分组进行讨论,培养学生的团队合作精神和沟通能力。
四、教学资源为了支持本节课的教学,我们将准备以下教学资源:1.教材:《C程序设计语言》或《C语言入门教程》等。
2.参考书:《C语言编程实例解析》、《C语言编程技巧》等。
3.多媒体资料:制作PPT课件,演示C语言程序的运行过程。
4.实验设备:计算机、编程环境(如Visual Studio、Code::Blocks等)。
5.在线资源:提供编程论坛、在线教程等,方便学生课外自主学习。
数值分析上机实验报告东北大学软件2011年课题三 解线性方程组的迭代法一. 实验内容1、设线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--------------------------136********4120291372642212341791110161035243120536217758683233761624491131512013123122400105635680000121324⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x =⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡-2119381346323125x *= ( 1, -1, 0, 1, 2, 0, 3, 1, -1, 2 )T 2、设对称正定阵系数阵线方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----------------------19243360021411035204111443343104221812334161206538114140231212200420424⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡87654321x x x x x x x x = ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡---4515229232060x * = ( 1, -1, 0, 2, 1, -1, 0, 2 )T 3、三对角形线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡------------------4100000000141000000001410000000014100000000141000000001410000000014100000000141000000001410000000014⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x = ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----5541412621357x *= ( 2, 1, -3, 0, 1, -2, 3, 0, 1, -1 )T 试分别选用Jacobi 迭代法,Gauss-Seidol 迭代法和SOR 方法计算其解。
二. 实验要求1、体会迭代法求解线性方程组,并能与消去法做以比较;2、分别对不同精度要求,由迭代次数体会该迭代法的收敛快慢;3、对方程组2,3使用SOR 方法时,选取松弛因子ω=0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者;4、给出各种算法的设计程序和计算结果。
三. 目的和意义1、通过上机计算体会迭代法求解线性方程组的特点,并能和消去法比较;2、运用所学的迭代法算法,解决各类线性方程组,编出算法程序;3、体会上机计算时,终止步骤∞+-)()1(k k x x < ε 或k >(予给的迭代次数),对迭代法敛散性的意义;4、体会初始解 x )0(,松弛因子的选取,对计算结果的影响。
四. 流程图设计 1.主要部分流程 2.Jacobi 算法流程 3.GS 算法流程图 4.SOR 算法流程五. 结构程序设计#include<iostream> using namespace std; #define N 40 const int n=10;int jacobi(fl oat *p,float b[],fl oat X[],fl oat x[],int n); int GS(float *p,fl oat b[],float X[],float x[],int n); int SOR(float *p,fl oat b[],float X[],float x[],int n); void print(fl oat *a,int r); void main() {fl oat 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};fl oat a[10]={7,5,-13,2,6,-12,14,-4,5,-5};fl oat X1[10]={0,0,0,0,0,0,0,0,0,0};fl oat x1[10];fl oat 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};fl oat b[8]={0,-6,6,23,11,-22,-15,45};fl oat X2[8]={0,0,0,0,0,0,0,0};fl oat x2[8];fl oat 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};fl oat c[10]={7,5,-13,2,6,-12,14,-4,5,-5};fl oat x3[10];fl oat X3[10]={0,0,0,0,0,0,0,0,0,0};fl oat *p[3];p[0]=&A[0][0];p[1]=&B[0][0];p[2]=&C[0][0];cout<<"Jacobi迭代法解第1个方程:"<<endl; jacobi(p[0],a,X1,x1,10);cout<<"Jacobi迭代法解第2个方程:"<<endl; jacobi(p[1],b,X2,x2,8);cout<<"Jacobi迭代法解第3个方程:"<<endl; jacobi(p[2],c,X3,x3,10);cout<<"Gauss-Seidel迭代法解第1个方程:"<<endl; GS(p[0],a,X1,x1,10);cout<<"Gauss-Seidel迭代法解第2个方程:"<<endl; GS(p[1],b,X2,x2,8);cout<<"Gauss-Seidel迭代法解第3个方程:"<<endl; GS(p[2],c,X3,x3,10);cout<<"SOR迭代法解第1个方程:"<<endl;SOR(p[0],a,X1,x1,10);cout<<"SOR迭代法解第2个方程:"<<endl;SOR(p[1],b,X2,x2,8);cout<<"SOR迭代法解第3个方程:"<<endl;SOR(p[2],c,X3,x3,10);}int jacobi(fl oat *p,float b[],fl oat X[],fl oat x[],int n) {int k,i,j;fl oat m,R,r,e;cout<<"请输入精度e:";cin>>e;for(k=0;k<N;k++){R=0;for(i=0;i<n;i++){m=0;for(j=0;j<n;j++){m=m+(*(p+i*n+j))*X[j];}x[i]=X[i]+(b[i]-m)/(*(p+i*n+i));r=x[i]-X[i];if(r<0)r=X[i]-x[i];if(r>R)R=r;}if(R<=e&&R>0){cout<<"迭代次数为:"<<k+1<<endl;return k;}for(j=0;j<10;j++)X[j]=x[j];}print(x,n);cout<<"迭代次数为:"<<k<<endl;cout<<"方程解发散,无法用Jacobi方法解此方程!"<<endl; return 0;}int GS(float *p,fl oat b[],float X[],float x[],int n){int i,j,k;fl oat t,R,r,e;cout<<"请输入精度e:";cin>>e;for(k=0;k<N;k++){for(i=0;i<n;i++){t=0;for(j=0;j<n;j++){if(j<i)t+=(*(p+i*n+j))*x[j];if(j>i)t+=(*(p+i*n+j))*X[j];}x[i]=(b[i]-t)/(*(p+i*n+i));}for(i=0;i<10;i++){r=x[i]-X[i];if(r<0)r=X[i]-x[i];if(r>R)R=r;{print(x,n);cout<<"迭代次数为:"<<k+1<<endl;return k;}for(j=0;j<8;j++)X[j]=x[j];}print(x,n);cout<<"迭代次数为:"<<k<<endl;cout<<"方程解发散,无法用Gauss-Seidel方法解此方程!"<<endl; return 0;}int SOR(float *p,fl oat b[],float X[],float x[],int n){int i,j,k;fl oat t,R,r,e,w;cout<<"请输入松弛因子w(0<w<2):";cin>>w;cout<<"请输入精度e:";cin>>e;for(i=0;i<n;i++)x[i]=X[i];for(k=0;k<N;k++){R=0;for(i=0;i<n;i++){t=0;for(j=0;j<n;j++)t+=(*(p+i*n+j))*x[j];r=w*(b[i]-t)/(*(p+i*n+i));x[i]+=r;if(r<0)r=-r;if(r>R)R=r;{print(x,n);cout<<"迭代次数:"<<k+1<<endl;return k;}}print(x,n);cout<<"迭代次数:"<<k<<endl;cout<<"方程解发散,无法使用SOR方法解此方程!!!!"<<endl;return 0;}void print(fl oat *a,int n){int j;fl oat *t=a;cout<<"x=( ";for(j=0;j<n-1;j++)cout<<*(t+j)<<",";cout<<*(t+j)<<")"<<endl;}六.结果讨论和分析程序运行截图:七.小结和体会通过这次实验,我对线性方程组的迭代算法有了更深的理解。