




免费预览已结束,剩余13页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算方法实验题目:班级:学号:姓名:18计算方法与实习实验报告目录计算方法实验11 实验目的32 实验步骤32.1环境配置:32.2添加头文件32.3主要模块33 代码43.1主程序部分43.2多项式方程部分43.3核心算法部分83.4数据结构部分124运行结果144.1列主元高斯消去法运行结果144.2LU三角分解法运行结果154.3雅克比迭代法运行结果16边界情况调试165总结18输入输出18列主元高斯消元法18雅克比迭代法186参考资料181 实验目的1. 通过编程加深对列主元高斯消去法、LU三角分解法和雅克比迭代法等求解多项式方程方法的理解2. 观察上述三种方法的计算稳定性和求解精度并比较各种方法利弊2 实验步骤2.1环境配置:VS2013,C+控制台程序2.2添加头文件#include stdio.h#include stdlib.h#include stdafx.h#include2.3主要模块程序一共分成三层,最底层是数据结构部分,负责存储数据,第二层是交互部分,即多项式方程部分,负责输入输出获得数据,最上层是核心的算法部分,负责处理已获得的数据。具体功能如下:l 数据结构部分数据结构部分是整个程序的最底层,负责存储部分。因数组作为数据元素插入和删除操作较少,而顺序表空间利用率大且查看方便,故此程序选用二维顺序表保存系数。数据结构文件中写的是有关其的所有基本操作以供其他文件调用。l 多项式方程部分多项式方程部分是程序的第二层,内容是有关方程组的所有函数、构建方程、输出方程等等,同时在此文件中获得方程系数并储存,同时此文件还负责显示菜单部分。l 算法部分此文件负责核心算法,处于整个程序最上层部分,负责列主元高斯消去法、LU三角分解法和雅克比迭代法的具体实现过程。通过调用方程文件的函数,将获得的数据进行处理运算,可以得到结果返回给方程主函数和输出的第二层。总结:主函数负责获取方程系数并显示,算法和方程作为后台程序,顺序表作为存储手段。3 代码3.1主程序部分/ Solutionoflinearquations.cpp : 定义控制台应用程序的入口点。/#include stdio.h#include stdlib.h#include stdafx.h#include squencelist.h#include equation.h#include algorithm.h#includeint _tmain(int argc, _TCHAR* argv)while (Exflag)GetEquation();ShowMenu();return 0;3.2多项式方程部分l 方程部分头文件#ifndef _EQUATION_H#define _EQUATION_H#include stdio.h#include stdlib.h#include squencelist.hextern int Xnumbers;extern int Fnumber;extern int Exflag;extern datacoa *A;void GetEquation(void);void ShowMenu(void);void printfunction(datacoa *A);void printresx(datacoa *A);void Tip(void);#endifl 方程部分CPP文件#include stdafx.h#include equation.h#include math.h#include algorithm.h#include stdio.h#include stdlib.h#include#include using namespace std;/全局变量int Xnumbers = 0;int Fnumber = 0;int Exflag = 1;datacoa *A;/多项式函数系数/void GetEquation(void)int i, j,flag=1;float x;A = InitStruct();while (flag)cout 方程未知量和解总个数: Xnumbers;cout 方程个数: Fnumber;cout 输入方程系数,输入00结束(如输入 2 1 5 或者2 1 5 3 4 1 00 endl;cout 3 4 1 00 ): x;while (x != 00)for (i = 1; i = Fnumber; i+)for (j = 1; j x;j = 1;printfunction(A);if (Xnumbers = Fnumber+1)flag = 0;elsecout 方程可能无解 m = 0;A-n = 0;/显示交互/void ShowMenu(void)int x;cout 选择求解方程根的方法: endl;cout 1.列主元高斯消去法 endl;cout 2.三角分解法 endl;cout 3.迭代法 x;switch (x)case 1:ColumnGaussmethod(A);Tip();break;case 2:LUmethod(A);Tip();break;case 3:ISODATAmethod(A);Tip();break;default:break;/打印输出函数/void printfunction(datacoa *A)int i,j;cout 矩阵= endl;for (i = 1; i m; i+)for (j = 1; j n; j+)cout setw(12)dataij;cout endl;/打印结果/void printresx(datacoa *A)int i;for (i = 1; i m; i+)cout X i = setw(12) dataiXnumbers+1;cout endl;/返回提示/void Tip(void)int flag;cout 输入000退出,其余返回: flag;if (flag = 000)Exflag = 0;3.3核心算法部分l 算法部分头文件#ifndef _ALGORITHM_H#define _ALGORITHM_H#include stdio.h#include stdlib.h#include stdafx.hint Judge(double x1, double x0, double e);void ColumnGaussmethod(datacoa *A);void LUmethod(datacoa *A);void ISODATAmethod(datacoa *A);#endif l 算法部分CPP文件#include algorithm.h#include stdafx.h#include squencelist.h#include equation.h#define max 100/误差判别/inline int Judge(double x1, double x0, double e)if (e = 0)return 0;if (x1 = 0)if (fabs(x0) e)return 1;else return 0;if (x0 = 0)if (fabs(x1) e)return 1;else return 0;if (fabs(x1 - x0) e)return 1;else return 0;/列主元高斯消元法/void ColumnGaussmethod(datacoa *A)cout /列主元高斯消元法/ endl;int i, j, i2, flagc, k, j2;float temp, res;for (i = 1; i Fnumber; i+)flagc = i;for (i2 = i + 1; i2 datai2i)(fabs(A-dataflagci)flagc = i2;if (flagc != i)for (k = i; k dataik;A-dataik = A-dataflagck;A-dataflagck = temp;for (i2 = i + 1; i2 datai2i/A-dataii;for (j2 = i; j2 datai2j2 = A-datai2j2 - temp*A-dataij2;for (i = Fnumber; i = 1; i-)for (j = Fnumber; j = i + 1; j-)A-dataiXnumbers = A-dataiXnumbers - A-dataij*A-datajXnumbers + 1;res = A-dataiXnumbers / A-dataii;Insert(A, res, i, Xnumbers+1);printresx(A);/直接三角分解法/void LUmethod(datacoa *A)datacoa *L, *U;int i, j, k,q;float temp=0.0;L = InitStruct();U = InitStruct();for (i = 1; i = Fnumber; i+)for (j = 1; j = Xnumbers; j+)Insert(L, 0, i, j);Insert(U, 0, i, j);for (j = 1; j data1j, 1, j);for (i = 2; i datai1 / A-data11, i, 1);for (k = 2; k = Fnumber; k+)for (j = k; j = Xnumbers; j+)for (q = 1; q datakq * U-dataqj;Insert(U, A-datakj - temp, k, j);temp = 0;for (i = k + 1; i = Fnumber; i+)for (q = 1; q dataiq * U-dataqk;temp = A-dataik - temp;Insert(L, temp / U-datakk, i, k);temp = 0;Insert(U, U-dataFnumberXnumbers / U-dataFnumberXnumbers - 1, Fnumber, Xnumbers + 1);for (k = Fnumber - 1; k = 1; k-)for (q = k + 1; q datakq * U-dataqXnumbers + 1;temp = U-datakXnumbers - temp;Insert(U, temp / U-datakk, k, Xnumbers + 1);temp = 0;printresx(U);/迭代法/void ISODATAmethod(datacoa *A)int i=1, j, k=0;float x0 = 0, x1 = 1, temp = 0;for (i = 1; i = Fnumber; i+)Insert(A, 0, i, Xnumbers + 1);while (1)for (i = 1; i = Fnumber; i+)for (j = 1; j dataij * A-datajXnumbers + 1;temp = A-dataiXnumbers - temp;temp = temp / A-dataii;Insert(A, A-dataiXnumbers + 1, i, Xnumbers + 2);Insert(A, temp, i, Xnumbers + 1);temp = 0;k+;for (i = 1; i dataiXnumbers + 1 - A-dataiXnumbers + 2);if (temp max)break;temp = 0;DeleteLie(A, Xnumbers + 2);printfunction(A);cout endl;printresx(A);cout k endl;3.4数据结构部分l 数据结构头文件#ifndef _SQUENCELIST_H#define _SQUENCELIST_H#include stdio.h#include stdlib.h#include stdafx.h#includeusing namespace std;#define maxsize 1024/*sequenlist*/typedef float datatype;typedef structdatatype datamaxsizemaxsize;int m, n;datacoa;datacoa *InitStruct();int Length(datacoa*);int Insert(datacoa*, datatype, int ,int);void DeleteLie(datacoa*L, int j);void DeleteLine(datacoa*L, int i);#endifl 数据结构CPP文件#include stdafx.h#include squencelist.h/数据结构部分/sequenlist/datacoa *InitStruct()datacoa*L = (datacoa*)malloc(sizeof(datacoa);L-m = 0;L-n = 0;return L;/datacoa*L = new datacoa;int Length(datacoa*L)return L-m*L-n;int Insert(datacoa*L, datatype x, int i,int j)int k;if (L-m = maxsize - 1) | (L-n = maxsize - 1)cout 表已满 n; k = j; k-)L-dataik + 1 = L-dataik;L-dat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 好的教学课件怎么制作
- 教学课件怎么做动画
- 农业强国建设新质生产力
- 2025年安全管理员A类考试考点精粹解析及答案
- 2025-2026学年甘肃省白银市靖远第一中学生物高三上期末复习检测模拟试题
- 2025年资源型城市绿色转型与绿色金融产品创新与应用报告
- 初级社会工作者考试章节练习题及答案
- 陕西省宝鸡市金台中学2025年高三生物第一学期期末检测模拟试题
- 心肺复苏试题及答案
- 2025年铁路安全考试题库及答案
- 青少年运动员运动损伤的预防和处理
- 高中数学竞赛平面几何中几个重要定理
- 中建测评2024二测题库及答案
- 精准施肥技术的优化与创新
- 肺结核的个案护理
- 乒乓球裁判培训课件
- 铁道概论(第八版)佟立本主编
- 真心痛的护理常规课件
- 乡村振兴项目规划建设与运营方案
- 驾驶员服务外包合同范本
- 实际控制人证明书
评论
0/150
提交评论