- UID
- 70324
- 帖子
- 8170
- 积分
- 11605
- 阅读权限
- 70
- 注册时间
- 2007-9-24
- 最后登录
- 2015-4-16
- 在线时间
- 2264 小时
|
程序已经调试过,可以用。程序必须是英文字母,注释%后面可以写汉字。
matlab是矩阵运算,所以变量乘、除、平方前面加字符“.”,例如*应该写成.*
回复不能加.m的附件,我压缩成了。rar的文件,在附件中。
例子中,取时间t=10,你也可以取别的值(50,100,200,500s),我有事,所以简单的这样编了。
x分点我取了100个,不应该取得太大,否则间距dx太小,第二个方程dx的平方在分母上,会得到很大的值,应该避免。
t=10; % 输入时间t,这里取t=10,t也可以取50,100,200,500s
x=linspace(0,100,99); % x 范围[0,100],平均分为100个点,改变第三个输入参数99,可以改变分的点数,x如果分得太大,dx太小,浓度计算有问题,自己分析
C=1/((2*3.14*0.5^2)^0.5)*exp((-(x-50).^2)/(2*0.5^2)); %计算x对应的C值,共1000个
C(1)=0;c(1000)=0; %边界为零
%计算时间t的浓度
dt=0.05;
dx=x(2)-x(1) %计算x的间距dx
D=0.5;
n=t/dt;
for i=1:n
for j=2:length(x)-1 %边界为零,只改变除边界的其他值
C(j)=dt*D/(dx^2)*(C(j+1)+C(j-1)-2*C(j))+C(j);
end
end
% 输出t时间的浓度值
C, |
|