logo资料库

微分方程数值解课程设计(含代码).doc

第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
资料共24页,剩余部分请下载后查看
椭圆型方程
·设计题目、原理:
·设计思路、算法步骤:
·函数文件、命令文件:
·对计算过程与结果的分析:
抛物线方程
·设计题目、原理:
·函数文件、命令文件:
·对计算过程与结果的分析:
双曲线方程
·设计题目、原理:
·函数文件、命令文件:
·对计算过程与结果的分析:
课程体会心得
微分方程数值方法课程设计 姓名:康 洋 班级:信息与计算科学 1 班
目录 椭圆型方程 .............................................................................3 · 设计题目、原理: .....................................................3 · 设计思路、算法步骤:............................................. 4 · 函数文件、命令文件:............................................. 4 · 对计算过程与结果的分析: ..................................... 9 抛物线方程 ...........................................................................10 · 设计题目、原理: ...................................................11 · 函数文件、命令文件:........................................... 12 · 对计算过程与结果的分析: ....................................15 双曲线方程 ...........................................................................17 · 设计题目、原理: ...................................................17 · 函数文件、命令文件:........................................... 20 · 对计算过程与结果的分析: ....................................23 课程体会心得.......................................................................23
椭圆型方程 编程计算:采用五点差分格式求如下椭圆型方程: ;  f (x, y), (x, y)   2 u  2 x   2 u  2 y  其中f (x, y) 、 及边条件为:   f (x, y)  u(x,0)   u(0, y)    ,且边条件如下:    (0,2) (0,1) 4, 2 2 x 1; (x 2) 0 x , u(x,2)     , 2 2 (y 1) , 0 2. y y , u(1, y)     ) ( , ) ( x y u x y   2 问题存在精确解为: · 设计题目、原理: 为了说明对椭圆型方程边值问题建立差分格式的过程,首先考虑 方程的离散化,在矩形区域 上,对于如题 Poisson 方程的差分格式离散化,我们可以采用中心差商代替导数: 将以上两式代入 Poisson 方程化简得: 之后写成矩阵形式:
通过解方程组的方法求出数值解。 · 设计思路、算法步骤: 算法步骤就是要用代码表示出 H 矩阵和 g 向量,之后解出 的值 即为精确解的数值近似。 · 函数文件、命令文件: function [g,u0]=fivepointdiff(x1,x2,y1,y2,M,N) %变步长法,g 是数值解,u0 是精确解 h=abs(x1-x2)/M; k=abs(y1-y2)/N; m=M-1; n=N-1; h1=h^2; r=h1/k^2; t=2+2*r; %横轴步长 %纵轴步长 %五点中的上下两个点的系数 %五点中的中心点的系数 x=x1+(x2-x1)*(0:M)/M; %x,y 向量表示横纵坐标 y=y1+(y2-y1)*(0:N)/N; a=zeros(m*n,m*n); b=zeros(m*n,1);%初始化 a,b 矩阵,a 为系数矩阵
%内部的(m-2)*(n-2)个点 for i=2:m-1 for j=2:n-1 a(i+(j-1)*m,:)=[zeros(1,i-1+(j-2)*m) -r zeros(1,m-2) -1 t -1 zeros(1,m-2) -r zeros(1,(n-j)*m-i)]; b(i+(j-1)*m)=h1*f(x(i+1),y(j+1)); end end %下边界 j=1; for i=2:m-1 a(i+(j-1)*m,:)=[zeros(1,i-2) -1 t -1 zeros(1,m-2) -r zeros(1,(n-j)*m-i)]; b(i+(j-1)*m)=h1*f(x(i+1),y(j+1))+r*bottom(x(i+1)); end; %右边界 i=m; for j=2:n-1 a(i+(j-1)*m,:)=[zeros(1,(j-1)*m-1) -r zeros(1,m-2) -1 t zeros(1,m-1) -r zeros(1,(n-j)*m-i)]; b(i+(j-1)*m)=h1*f(x(i+1),y(j+1))+right(y(j+1)); end %上边界
j=n; for i=2:m-1 a(i+(j-1)*m,:)=[zeros(1,i-1+(j-2)*m) -r zeros(1,m-2) -1 t -1 zeros(1,m-i-1)]; b(i+(j-1)*m)=h1*f(x(i+1),y(j+1))+r*top(x(i+1)); end %左边界 i=1; for j=2:n-1 a(i+(j-1)*m,:)=[zeros(1,i-1+(j-2)*m) -r zeros(1,m-1) t -1 zeros(1,m-2) -r zeros(1,(n-j)*m-i)]; b(i+(j-1)*m)=h1*f(x(i+1),y(j+1))+left(y(j+1)); end; %左下角的那个点 i=1;j=1; a(1,:)=[t -1 zeros(1,m-2) -r zeros(1,(n-1)*m-1)]; b(1)=h1*f(x(2),y(2))+r*bottom(x(2))+left(y(2)); %右下角的那个点 i=m;j=1; a(i+(j-1)*m,:)=[zeros(1,m-2) -1 t zeros(1,m-1) -r zeros(1,(n-2)*m)]; b(i+(j-1)*m)=h1*f(x(i+1),y(j+1))+r*bottom(x(i+1))+right(y(j+1)); %左上角的那个点
i=1;j=n; a(i+(j-1)*m,:)=[zeros(1,(n-2)*m) -r zeros(1,m-1) t -1 zeros(1,m-2)]; b(i+(j-1)*m)=h1*f(x(i+1),y(j+1))+r*top(x(i+1))+left(y(j+1)); %右上角的那个点 i=m;j=n; a(i+(j-1)*m,:)=[zeros(1,(n-1)*m-1) -r zeros(1,m-2) -1 t]; b(i+(j-1)*m)=h1*f(x(i+1),y(j+1))+r*top(x(i+1))+right(y(j+1)); u=a\b; g=zhengli(u,N,M); ux=jie1(M,N,h,k); u0=ux'; function k=bottom(x) %下边界函数 k=x^2; function k=right(y) %右边界函数 k=(y-1)^2; function k=top(x) %上边界函数 k=(x-2)^2; function k=left(y) %左边界函数 k=y^2; function k=f(x,y) %f(x,y)函数 k=-4;
function k=jie(x,y) %精确解 k=(x-y)^2; function u0=jie1(M,N,h,k) %将精确解表示为矩阵形式 for i=1:M-1 for j=1:N-1 u0(i,j)=jie(j*h,i*k); end end function g=zhengli(u,N,M) %由于求得 u 是向量,故该函数将 u 表示成矩阵 j=1; t=1; for i=1:(N-1)*(M-1) g(t,j)=u(i); t=t+1; if(mod(i,M-1)==0) j=j+1; t=1; end end
分享到:
收藏