数值分析实验报告(matlab实现)

上传人:第*** 文档编号:61810161 上传时间:2018-12-13 格式:PDF 页数:25 大小:678.56KB
返回 下载 相关 举报
数值分析实验报告(matlab实现)_第1页
第1页 / 共25页
数值分析实验报告(matlab实现)_第2页
第2页 / 共25页
数值分析实验报告(matlab实现)_第3页
第3页 / 共25页
数值分析实验报告(matlab实现)_第4页
第4页 / 共25页
数值分析实验报告(matlab实现)_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《数值分析实验报告(matlab实现)》由会员分享,可在线阅读,更多相关《数值分析实验报告(matlab实现)(25页珍藏版)》请在金锄头文库上搜索。

1、学学 生生 实实 验验 报报 告告 实验课程名称实验课程名称数值分析数值分析 开课实验室开课实验室数学与统计学院实验室数学与统计学院实验室 学学院院2010年级年级 数学与应用数学数学与应用数学专业班专业班 01 班班 学学 生生 姓姓 名名学学号号 开开 课课 时时 间间2012至至2013学年第学年第一一学期学期 总总 成成 绩绩 教师签名教师签名 1 课程课程 名称名称 数值分析数值分析 实验项目实验项目 名名称称 GaussGauss 消元法消元法 实验项目类型实验项目类型 验证验证演示演示综合综合设计设计其他其他 指导指导 教师教师 何光辉何光辉成成绩绩 一、一、实验目的:实验目的:

2、 (1)高斯列主元消去法求解线性方程组的过程 (2)熟悉用迭代法求解线性方程组的过程 (3)设计出相应的算法,编制相应的函数子程序 二、二、实验内容实验内容 分别用高斯列主元消元法和直接消元法求解线性方程组: 7 2 5 10 139144 4321 131243 30102 4 3 2 1 x x x x 三、三、实验原理实验原理 对于线性方程组 11 112211 21 122222 n1 122n =b =b =b nn nn nnnn a xa xa x a xa xa x a xa xa x (1) 常记为矩阵形式 Axb(2) 根据高等代数的知识,若0A ,上式的解存在且唯一。 (

3、1)Gauss 直接消元法 考虑上述线性方程组的增广矩阵: A b,对增广矩阵进行行变换,将(2)式化为等价的三角形方 阵,然后回代解之,这就是 Gauss 消元法。具体如下: a) 消元 令 (1) , ,1,2n ijij aai j,; (1) ,1,2n ii bbi, 对 k=1 到 n-1,若 ( ) 0 k kk a,进行 2 ( ) ( ) (1) (1)( )( ) (1)( ) ,1,2,n 0,1,2,n ,1,2,n ,1,2,n k ik ik k kk k ik kkk ijijikkj kkk iiikk a likk a aikk aalai jkk bblbi

4、kk , , , , b) 回代,若a0 n nn ( )( ) 1 1 () n n n n nn n ii iiijj i j k ii b x b xba x a (2)Gauss 列主元消元法 设列主元消元法已完成Axb的第 k-1(11kn)次消元,的到方程组 ( )( )kk AxbAxb 在进行第 k 次消元前,先进行 2 个步骤: a) 在 ( )k kk a至 ( )k nk a这一列内选出最大值,即 ( )( ) ,max k kk ikik k i n aa ,若 ( ) , 0 k k ik a,此时0A 方程组无确定解,应给出退出信息。 b) 若 ( ) , 0 k

5、k ik a,则交换第 k i行和k行,然后用 Gauss 消元法进行消元。 四、四、MATLABMATLAB 软件实现软件实现 (1)写出 Gauss 消元法和列主元消元法实现的 MATLAB 函数 根据以上的算法,写出如下程序: %Gauss消元法% function y=Gauss1(A,b) m,n=size(A); %检查系数正确性 if m=n error(矩阵A的行数和列数必须相同); return; end if m=size(b) error( b的大小必须和A的行数或A的列数相同); return; end %再检查方程是否存在唯一解 if rank(A)=rank(A,b

6、) error( A矩阵的秩和增广矩阵的秩不相同,方程不存在唯一解); return; 3 end %这里采用增广矩阵行变换的方式求解 c=n+1; A(:,c)=b; %消元过程 for k=1:n-1 A(k+1:n, k:c)=A(k+1:n, k:c)-(A(k+1:n,k)/ A(k,k)*A(k, k:c); end %回代结果 x=zeros(length(b),1); x(n)=A(n,c)/A(n,n); for k=n-1:-1:1 x(k)=(A(k,c)-A(k,k+1:n)*x(k+1:n)/A(k,k); end %显示计算结果 %disp(x=); %disp(x

7、); y=x; % %高斯列主元消元法求解线性方程组Ax=b% %A为输入矩阵系数,b为方程组右端系数 %方程组的解保存在x变量中 function y=Gauss_line(A,b) format long;% 设置为长格式显示,显示15位小数 m,n=size(A); %先检查系数正确性 if m=n error(矩阵A的行数和列数必须相同); return; end if m=size(b) error( b的大小必须和A的行数或A的列数相同); return; end %再检查方程是否存在唯一解 if rank(A)=rank(A,b) error( A矩阵的秩和增广矩阵的秩不相同,方

8、程不存在唯一解); return; end c=n+1; A(:,c)=b; %(增广) for k=1:n-1 r,m=max(abs(A(k:n,k);%选主元 m=m+k-1;%修正操作行的值 4 if(A(m,k)=0) if(m=k) A(k m,:)=A(m k,:); %换行 end A(k+1:n, k:c)=A(k+1:n, k:c)-(A(k+1:n,k)/ A(k,k)*A(k, k:c);%消去 end end x=zeros(length(b),1); %回代求解 x(n)=A(n,c)/A(n,n); for k=n-1:-1:1 x(k)=(A(k,c)-A(k,

9、k+1:n)*x(k+1:n)/A(k,k); end y=x; format short;% 设置为默认格式显示,显示5位 (2)建立 MATLAB 界面 利用 MATLAB 的 GUI 建立如下界面求解线性方程组: 详见程序。 五、五、计算实例、数据、计算实例、数据、结果结果、分析、分析 下面我们对以上的结果进行测试,求解: 5 7 2 5 10 139144 4321 131243 30102 4 3 2 1 x x x x 输 入 数 据 后 点 击和, 得 到 如 下 结 果 : 更改以上数据进行测试,求解如下方程组: 1 2 3 4 43211 34321 23431 12341

10、x x x x 得到如下结果: 6 六、六、实验中遇到的问题及解决办法实验中遇到的问题及解决办法 在本实验中,遇到的问题主要有两个: (1)如何将上述的 Gauss 消元法的算法在 MATLAB 中实现 针对此问题我借鉴了网上以及课本上的算法的 MATLAB 实现的程序; (2)如何将建立界面使得可以随意输入想要求解的相关矩阵后就可以直接求解 针对此问题,我通过网上的一些关于 MATLAB 的 GUI 设计的相关资料,总结经验完 成了此项任务。 七、七、实验结论实验结论 通过以上的测试,我们发现以上算法和程序能够求出线性方程组的比较精确解。 八、八、参考文献参考文献 1杨大地,王开荣 .200

11、6.数值分析.北京:科学出版社 2何光辉.2008. 数值分析实验. 重庆大学数理学院数学实验教学中心 3百度文库,百度知道 教师签名 年月日 课程课程 名称名称 数值分析数值分析 实验项目实验项目 名名称称 插值方法插值方法 实验项目类型实验项目类型 验证验证演示演示综合综合设计设计其他其他 指导指导 教师教师 何光辉何光辉成成绩绩 一、一、实验目的:实验目的: (1)学会拉格朗日插值、牛顿插值等基本方法 (2)设计出相应的算法,编制相应的函数子程序 (3)会用这些函数解决实际问题 二、二、实验内容实验内容 (1)设计拉格朗日插值算法,编制并调试相应的函数子程序 (2)设计牛顿插值算法,编制

12、并调试相应的函数子程序 (3)给定函数四个点的数据如下: X1.12.33.95.1 Y3.8874.2764.6512.117 试用拉格朗日插值确定函数在 x=2.101,4.234 处的函数值。 (4)已知,392411用牛顿插值公式求5的近似值。 三、三、实验原理实验原理 (1)拉格朗日插值 7 n 次拉格朗日插值多项式为:Ln(x)=y0l0(x)+y1l1(x)+y2l2(x)+ynln(x) n=1 时,称为线性插值,L1(x)=y0(x-x1)/(x0-x1)+ y1(x-x0)/(x1-x0)=y0+(y1-x0)(x-x0)/(x1-x0) n=2 时,称为二次插值或抛物线插

13、值,精度相对高些 L2(x)=y0(x-x1)(x-x2)/(x0-x1)/(x0-x2)+y1(x-x0)(x-x2)/(x1-x0)/(x1-x2)+y2(x-x0)(x-x1)/(x2-x0)/(x2-x1) 对节点 xi(i=0,1,n)中任一点 xk(0=k=n)作一 n 次多项式 lk(xk),使它在该点上取值为 1,而在其 余点 xi(i=0,1,k-1,k+1,n)上为 0,则插值多项式为 Ln(x)=y0l0(x)+y1l1(x)+y2l2(x)+ynln(x) 上式表明:n 个点 xi(i=0,1,k-1,k+1,n)都是 lk(x)的零点。 (2)牛顿插值 插商公式 12

14、3 1 111 () ,.; ().()().() k j k j jjjjjjk f x f x x xx xxxxxxxx Newton 插值多项式为 112112312 123121 ( )() ,() ,()() ,.()().(); n nn Nxf xf x xxxf x x xxxxx f x x xxxxxxxx 四、四、MATLABMATLAB 软件实现软件实现 (1)分别写出 lagrange 插值法和 Newton 插值法的求解函数 %lagrange插值法求解函数% %x,y为初始数据,z为插值点 function z=lagrange(x,y,a) format long;% 显示15位 n=length(x);% 取长度 %初始计算 s=0; %进入公式计算 for j=0:(n-1) t=1; for i=0:(n-1) if i=j t=t*(a-x(i+1)/(x(j+1)-x(i+1); end end s=s+t*y(j+1); end z=s; %显示输出结果 format short; %Newton插值法求解函数% %x,y为初始数据,z为插值点 function j=Newton(x

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号