迭代法求两点边值问题课程设计分解_不动点迭代法课程设计

2020-02-28 其他范文 下载本文

迭代法求两点边值问题课程设计分解由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“不动点迭代法课程设计”。

基于java实现电子时钟

迭代法求两点边值问题

(一)摘要

当今的环境下,数值计算越来越依赖于计算机。大规模科学计算和工程技术中许多问题的解决,最终归结为大型稀疏线性方程组的求解,其求解时间在整个问题求解时间中占有很大的比重,有的甚至达到80%。由于现今科学研究和大型项目中各种复杂的可以对计算精度和计算速度的要求越来越高。因此,作为大规模科学计算基础的线性代数方程组的高效数值求解引起了人们的普遍关注。这种方程组的求解一般采用迭代法。这次我做的迭代法求两点边值问题就是通过MATLAB来实现的。

关于迭代法,是有很多种解决公式的:Jacobi,G-S和超松弛迭代法。这三种方法的原理大致相同,jacobi需要给定初向量,G-S则需要给定初值,超松弛法是对Gua-Seidel迭代法的加权平均改造。而本文则是对大型稀疏线性方程组迭代求解与三种迭代法(Jacobi,Gau-Seidel和超松弛迭代法)的收敛速度与精确解的误差比较做出研究。

关键词:数值计算 迭代法 三种公式

基于java实现电子时钟

ITERATION METHOD FOR TWO-POINT BOUNDARY

VALUE PROBLEMS

ABSTRACT

Today's environment, numerical computation is more and more dependent on the computer.Many problems in the large-scale scientific computing and engineering solution, ultimately comes down to solving large sparse system of linear equations, the solution time occupies a large proportion in the whole problem solving time, some even reached 80%.Due to the current scientific research and large projects in various complex can claim to the computing precision and computing speed is higher and higher.Therefore, the linear algebraic equations, which is the basis for large-scale scientific computing efficient numerical solution has attracted widespread attention.To solve the general iterative method is used to this kind of equations.This time I do the iteration method of two-point boundary value problem is accomplished by MATLAB.About the iteration method, there are many kinds of solution formula is: Jacobi, GS requires the given initial value, a super relaxation method is weighted average of the transformation of Gau’Seidel and over relaxation iteration method)the error between the convergence speed and the exact solution of comparative research.Key words: numerical calculation iterative method three kinds of formula

基于java实现电子时钟

目 录课程目的与要求……………………………………………………………………………11、1课程目标……………………………………………………………………………11、2 课程的实现环境……………………………………………………………………1 2 概要设计……………………………………………………………………………………2 3 详细设计……………………………………………………………………………………5 4 测试结果与心得体会………………………………………………………………………8 5 参考文献…………………………………………………………………………………15 附录…………………………………………………………………………………………16 源程序代码…………………………………………………………………………………16

基于java实现电子时钟 课程的目的与要求1、1课程目标

利用我们所学的数值分析的迭代法知识对线性方程组的问题进行求解,同时把迭代法的求解过程用MATLAB程序语言实现其算法功能。

对实验结果进行记录,对比与分析最后得出结论。

1、2课程的实现环境

硬件要求能运行Windows 9.X操作系统的微机系统、Matlab软件。

基于java实现电子时钟

Eps=0.1 结果:

迭代次数k:4394 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)

共 23 页 第 11 页

基于java实现电子时钟

Eps=0.01 结果:

迭代次数k:379 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)

超松弛法:代码见附录 Eps=1 w=1.56

共 23 页 第 12 页

基于java实现电子时钟

结果:

迭代次数k:3503 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)

Eps=0.1 w=1.56 结果:

迭代次数k:1369 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)

共 23 页 第 13 页

基于java实现电子时钟

Eps=0.01 w=1.56 结果:

迭代次数k:131 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)

4、2三种方法的比较

共 23 页 第 14 页

基于java实现电子时钟

Jacobi、G-S、超松弛法,三者都能够取得对精确解的良好逼近,但是,在相同的精度条件下,三者的收敛速度是不一样的,jacobi

4、3心得体会

本次数值方法的题目是迭代法求两点边值问题。首先回去温习了数值方法的理论知识,把迭代法的原理弄清楚了,请教老师,上网查资料,忙的不亦乐乎。在设计的过程中我遇到的很多问题,在老师的帮助和自己的思考下还是很好的完成了。

事情就是如此,努力代表收获。这次课程设计,平时感觉挺简单的那些枯燥单调的代码和数学公式,真正到了自己运用的时候却无从下手,但是,解决问题的过程恰是不断学习的过程:数学算法转换为代码的过程要对题目有深入的了解,然后对程序函数定义还要有一定的掌握能力,通过这个的过程让我巩固了自己的数学知识,对数学专业知识和MATLAB的操作有了更深的体会。

课程设计中遇到的问题只凭自己苦思冥想是不能全部解决的,这是同学老师的建议和网络给了我很大的帮助。遇到自己解决不了的问题时,多多向老师同学请教,或许问题就能迎刃而解。另外,生在这个信息化社会,互联网的作用不言而喻,许多问题只要在网上搜索一下就能得到令人满意的解答。

参考文献

[1] 王建卫.MATLAB 7.X 程序设计.北京:中国水利水电出版社,2007.

[2] 李庆扬,王能超,易大义.数值分析[M] .武汉:华中科技大学出版社,2006.7. [3] 清华大学、北京大学计算方法编写组.计算方法[M] .北京:科学出版社,1980.

共 23 页 第 15 页

基于java实现电子时钟

附录

源程序代码:

Jacobi:

function [y,k]=jacobi2(a,eps,h,delta)n=1.0/h;A=ones(n-1);y=zeros(n-1,1);z=zeros(n-1,1);k=0;for i=1:n-1 for j=1:n-1 A(i,j)=0;end end

for i=1:n-1 A(i,i)=-(2*eps+h);end

for i=1:n-1 for j=1:n-1 if i==j+1 A(i,j)=eps;end

if i==j-1 A(i,j)=eps+h;end

end end

b=zeros(n-1,1);for i=1:n-2 b(i,1)=a*h^2;end

b(n-1,1)=a*h^2-eps-h;D=zeros(n-1);for i=1:n-1 D(i,i)=A(i,i);end

L=zeros(n-1);for i=1:n-1 for j=1:n-1 if i>j L(i,j)=-A(i,j);end

end

第 16 页

共 23 页

基于java实现电子时钟

end

U=zeros(n-1);for i=1:n-1 for j=1:n-1 if i

end end

B=D(L+U);g=Db;while 1 z=B*y+g;if norm(z-y,inf)

y=z;k=k+1;end

x=linspace(0,1);truy=(1-a)/(1-exp(-1/eps))*(1-exp(-x./eps))+x.*a;figure;plot(100*x,truy,'g','LineWidth',5);hold on;grid hold on;plot(y,'b')

G-S: function [y,k]=gs2(a,eps,h,delta)n=1.0/h;A=ones(n-1);y=zeros(n-1,1);z=zeros(n-1,1);k=0;for i=1:n-1 for j=1:n-1 A(i,j)=0;end

共 23 页 第 17 页

基于java实现电子时钟

end

for i=1:n-1 A(i,i)=-(2*eps+h);end

for i=1:n-1 for j=1:n-1 if i==j+1 A(i,j)=eps;end

if i==j-1 A(i,j)=eps+h;end

end end

b=zeros(n-1,1);for i=1:n-2 b(i,1)=a*h^2;end

b(n-1,1)=a*h^2-eps-h;D=zeros(n-1);for i=1:n-1 D(i,i)=A(i,i);end

L=zeros(n-1);for i=1:n-1 for j=1:n-1 if i>j L(i,j)=-A(i,j);end

end end

U=zeros(n-1);for i=1:n-1 for j=1:n-1 if i

end end

B=D(L+U);g=Db;while 1 z=(D-L)U*y+(D-L)b;if norm(z-y,inf)

第 18 页

共 23 页

基于java实现电子时钟

end

y=z;k=k+1;end

x=linspace(0,1);truy=(1-a)/(1-exp(-1/eps))*(1-exp(-x./eps))+x.*a;figure;plot(100*x,truy,'g','LineWidth',5);hold on;grid hold on;plot(y,'b')

超松弛:

function [y,k]=sor(a,eps,h,delta,w)n=1.0/h;A=ones(n-1);y=zeros(n-1,1);z=zeros(n-1,1);k=0;for i=1:n-1 for j=1:n-1 A(i,j)=0;end end

for i=1:n-1 A(i,i)=-(2*eps+h);end

for i=1:n-1 for j=1:n-1 if i==j+1 A(i,j)=eps;end

if i==j-1 A(i,j)=eps+h;end

end end

b=zeros(n-1,1);for i=1:n-2 b(i,1)=a*h^2;end

共 23 页 第 19 页

基于java实现电子时钟

b(n-1,1)=a*h^2-eps-h;D=zeros(n-1);for i=1:n-1 D(i,i)=A(i,i);end

L=zeros(n-1);for i=1:n-1 for j=1:n-1 if i>j L(i,j)=-A(i,j);end

end end

U=zeros(n-1);for i=1:n-1 for j=1:n-1 if i

end end

B=D(L+U);g=Db;Lw=((D-w*L)^-1)*((1-w)*D+w*U);while 1 z=Lw*y+w*(D-w*L)^-1*b;if norm(z-y,inf)

y=z;k=k+1;end

x=linspace(0,1);truy=(1-a)/(1-exp(-1/eps))*(1-exp(-x./eps))+x.*a;figure;plot(100*x,truy,'g','LineWidth',5);hold on;grid hold on;plot(y,'b')

共 23 页 第 20 页

《迭代法求两点边值问题课程设计分解.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
迭代法求两点边值问题课程设计分解
点击下载文档
相关专题 不动点迭代法课程设计 迭代法 分解 两点 不动点迭代法课程设计 迭代法 分解 两点
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文