摘要: 转载至 http://wenku.baidu.com/view/d3adc6d03186bceb19e8bb6a.html在标准C中规定变量定义必须放在所有的执行语句之前!一旦在运行语句之间再有定义的话,会报错误!见以下式例:#include <stdio.h> int main() { char char1='A'; printf("大写字符=%c的ASCII码=%d\n",char1,char1); char char2=char1+32; printf("小写字符=%c的ASCII码=%d\n",char2,char2) 阅读全文
posted @ 2013-01-16 14:19 liang_l 阅读(9870) 评论(1) 推荐(1) 编辑
摘要: 36阶的矩阵和向量,形式为Ax=b原始的数据:这是左端的系数矩阵AView Code 4 -2 0 0 0 0 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-1 4 -1 0 0 0 0 -2 0 0 0 0 0 0 0 0... 阅读全文
posted @ 2013-01-11 17:01 liang_l 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 参考文献:科学计算中的偏微分方程有限差分法B=[4 -2 0 0 0;-1 4 -1 0 0;0 -1 4 -1 0;0 0 -1 4 -1;0 0 0 -2 4];I=eye(5);Z=zeros(5);A=[B -2*I Z Z Z;-I B -I Z Z;Z -I B -I Z;Z Z -I B -I;Z Z Z -2*I B];为了保持形式上的对称,试着将A改写为A=[1.0/2*B -I Z Z Z;-I B -I Z Z;Z -I B -I Z;Z Z -I B -I;Z Z Z -1*I 1.0/2*B]; 阅读全文
posted @ 2013-01-10 22:24 liang_l 阅读(352) 评论(0) 推荐(0) 编辑
摘要: View Code function [x]=testRL(A,b)%%测试删除一行一列的结果%u=sin(3*pi*x+pi/4)*sin(2*pi*y+pi/4)delta_y=1.0/(sqrt(length(A))-1);for i=1:sqrt(length(A)):length(A) x(i)=sin(3*pi*0+pi/4)*sin(2*pi*delta_y*(i-1)+pi/4); for j=1:length(A) A(i,j)=0; end A(i,i)=1; b(i)=x(i);end% for i=1:length(... 阅读全文
posted @ 2013-01-06 10:50 liang_l 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 针对于 利用matlab的PDE工具箱求解Neumann边界的Poisson方程之2 出现的问题,后面察觉是由于 对法向导数理解的误解。首先明白:Poisson方程的第二边值问题:n是外法线方向向量.例如:对于下图所示下边界时条件为 对于左边边界为 在左边边界设定的时候,前面添加一负号。 原方程在PDE工具箱中的设置上边界与下边界 sin(3*pi*x+pi/4)*sin(pi/4)(注意:此处不能为'x',后同)左边界 -3*pi*sin(2*pi*y+pi/4)*cos(pi/4)右边界 -3*pi*sin(2*pi*y+pi/4)*cos(pi/4)方程设置:13*pi* 阅读全文
posted @ 2012-12-30 16:22 liang_l 阅读(1596) 评论(0) 推荐(0) 编辑
摘要: 对于表达式u=sin(3*pi*x+pi/4)*sin(2*pi*y+pi/4),用Matlab将其图像画出来;具体实现的代码如下:View Code [x,y]=meshgrid(0:0.025:1);u=sin(3*pi*x+pi/4).*sin(2*pi*y+pi/4);mesh(x,y,u);出来的图像为其X-Y平面图为方程为上一篇博文的方程,利用Matlab的PDE工具箱 得出的数值结果为:X-Y平面图:如果全部为第一类边界条件数值解的图像如下:其X-Y平面图(云图)为或者显示为从上面几幅图可以看出,第一类边界条件下的解与精确解吻合比较好。而第二类边界条件下的解与精确解差别很大。 阅读全文
posted @ 2012-12-29 21:18 liang_l 阅读(4774) 评论(0) 推荐(0) 编辑
摘要: 我们求解的问题是上述问题的精确解为 u=sin(3*pi*x+pi/4)*sin(2*pi*y+pi/4);接下来用Matlab工具箱求解首先打开matlab,命令窗口处输入:pdetool将看到如下界面:显示栅格:Options->Grid选择求解区域:Draw (这个地方我们的求解区域为[0 1]X[0 1])->Rectange/square 在面板上随意拖动,双击出现的区域,输入如下数值进入边界条件设置:上边界与下边界 sin(3*pi*x+pi/4)*sin(pi/4)(注意:此处不能为'x',后同)左边界 3*pi*sin(2*pi*y+pi/4)*co 阅读全文
posted @ 2012-12-28 00:57 liang_l 阅读(6787) 评论(0) 推荐(0) 编辑
摘要: 相关链接:http://wenku.baidu.com/view/f17e57e8856a561252d36f5e.html问题描述:求解泊松方程 -Δu=1 求解区域为单位圆盘,边界条件为在圆盘边界上u=0 下面求它的数值解,编写程序如下:%(1)问题定义 g='circleg'; %单位圆 b='circleb1'; %边界上为零条件 c=1;a=0;f=1; %(2)产生初始的三角形网格 [p,e,t]=initmesh(g); %(3)迭代直至得到误差允许范围内的合格解 error=[]; err=1; while e... 阅读全文
posted @ 2012-12-26 16:11 liang_l 阅读(7301) 评论(0) 推荐(0) 编辑
摘要: 求解的方法:有限差分法(FDM)求解第二类边界条件的Poisson方程,其方程如下:上述的k为一常数。为了保证解的唯一性,在此令k为一个小量或者微量。上述方程的精确解为利用c/C++来实现,暂时还没有用到线性方程组求解器,只是测试系数矩阵和右端向量是否正确。代码在VS2008平台上来操作。包含以下几个文件:GMRES.hmatvec.cppmatvec.hsolpoisson.htestposmain.cpp共5个。GMRES.hView Code #include "matvec.h"void gmres(SparseMtx<double> a,Vcr< 阅读全文
posted @ 2012-12-25 23:11 liang_l 阅读(3911) 评论(0) 推荐(0) 编辑
摘要: E0=[2 -1/2 0 0;-1/2 4 -1/2 0;0 -1/2 4 -1/2;0 0 -1/2 4];E1=[7/2 -1/2 0 0;-1/2 8 -1/2 0;0 -1/2 8 -1/2;0 0 -1/2 8];K=[-3/2 0 0 0;0 -3 0 0;0 0 -3 0;0 0 0 -3];Z=zeros(4);EE=[E0 K Z Z Z;K 2*E0 K Z Z;Z K 2*E0 K Z;Z Z K 2*E0 K;Z Z Z K E0];mE0=[-50 25 0 0 0 0;25 -100 25 0 0 0;0 25 -100 25 0 0;0 0 25 -100 25 阅读全文
posted @ 2012-12-24 23:58 liang_l 阅读(497) 评论(0) 推荐(0) 编辑