作业帮 > 综合 > 作业

用matlab画三维图出错误,下面是程序

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/13 21:25:25
用matlab画三维图出错误,下面是程序
clc;
clear;
x=0:0.1:60;%预测点离排放点的距离,m
y=0:0.1:20; %预测点离排放点的横向距离,m
Cp=input('污水中污染物浓度mg/l=');
Qp=input('污水流量m3/s=');
Ck=3.77*10.^-6; %污染物本底浓度,mg/l
H=18; %河流平均水深,m
My=9.97*10.^-3; %河流横向弥散系数,m2/s
u=0.998; %河流流速,m/s
B=20;%河流平均宽度,m
[xx,yy]=meshgrid(x,y);
j1= -u*y.^2;
j2=4*My*x;
j3= -u*(2*B-y).^2;
j4=4*My*x;
s1=j1/j2;
s2=j3/j4;
k1=Cp*Qp/(H*(pi*My*x*u).^0.5);
Cxy=Ck+k*(exp(s1)+exp(s2));
zz=reshape(Cxy,191,191);
mesh(xx,yy,zz);
xlabel('x/m');
ylabel('y/m');
zlabel('污染物浓度/(mg/l)');
title('污染物浓度扩散图');
其实我就是想弄出浓度关于xy坐标的图来
式中:
x——预测点离排放点的距离,m;
y——预测点离排放口的横向距离(不是离岸距离,有正负值),m;
c——预测点(x,y)处污染物的浓度,mg/l;
cp——污水中污染物的浓度,mg/l;
Qp——污水流量,m3/s;
ch——河流上游污染物的浓度(本底浓度),mg/l;
H——河流平均水深,m;
My——河流横向混合(弥散)系数,m2/s;
u——河流流速,m/s;
B——河流平均宽度,m;
π——圆周率.
% 以下代码调试通过
clc;
clear;
x=0:0.1:60;%预测点离排放点的距离,m
y=0:0.1:20; %预测点离排放点的横向距离,m
Cp=input('污水中污染物浓度mg/l=');
Qp=input('污水流量m3/s=');
Ck=3.77*10.^-6; %污染物本底浓度,mg/l
H=18; %河流平均水深,m
My=9.97*10.^-3; %河流横向弥散系数,m2/s
u=0.998; %河流流速,m/s
B=20;%河流平均宽度,m
[xx,yy]=meshgrid(x,y);
% 以下需要修改
j1= -u*yy.^2;
j2=4*My*xx;
j3= -u*(2*B-yy).^2;
j4=4*My*xx;
s1=j1./j2;
s2=j3./j4;
k=Cp*Qp./(H*(pi*My*xx*u).^0.5);
Cxy=Ck+k.*(exp(s1)+exp(s2));
mesh(xx,yy,Cxy);
xlabel('x/m');
ylabel('y/m');
zlabel('污染物浓度/(mg/l)');
title('污染物浓度扩散图');
再问: 怎么改呢 根据那个公式
再答: 上面的代码是可以直接运行的, 以j1为例: 不应该是 j1= -u*y.^2; 应该改为 j1= -u*yy.^2; %% yy 是通过 meshgrid 生成的 下面的改法类似。还有就是要注意除法( x/y )和点除( x./y )的区别,前者是矩阵除法,后者是对应元素相除,你的代码里有混淆
再问: 哥我有点乱,能给整个现成的不。。。
再答: % 以下代码调试通过 % 就是这个,我写的“以下需要修改”是指我已经修改过了。。。 clc; clear; x=0:0.1:60;%预测点离排放点的距离,m y=0:0.1:20; %预测点离排放点的横向距离,m Cp=input('污水中污染物浓度mg/l='); Qp=input('污水流量m3/s='); Ck=3.77*10.^-6; %污染物本底浓度,mg/l H=18; %河流平均水深,m My=9.97*10.^-3; %河流横向弥散系数,m2/s u=0.998; %河流流速,m/s B=20;%河流平均宽度,m [xx,yy]=meshgrid(x,y); j1= -u*yy.^2; j2=4*My*xx; j3= -u*(2*B-yy).^2; j4=4*My*xx; s1=j1./j2; s2=j3./j4; k=Cp*Qp./(H*(pi*My*xx*u).^0.5); Cxy=Ck+k.*(exp(s1)+exp(s2)); mesh(xx,yy,Cxy); xlabel('x/m'); ylabel('y/m'); zlabel('污染物浓度/(mg/l)'); title('污染物浓度扩散图');