用Matlab作图的问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 22:38:07
函数是f(x,t)=1/exp[(x-u)/kt+1],u=5.06e-19和k=1.38e-23为常数.作出三维图象,x范围是(0,8e-19),t范围是(0,100).
求建立M文件后的程序.不胜感激!!
注:本人所用Matlab版本为7.9.0,所写程序最好能在此版本下运行.
function f=zhidao_1000(u,k)
u=5.06e-19;k=1.38e-23;

maxval=1e-37;%当物理量超过这个值时就用这个值代替

x=linspace(0,0.05e-19,8e-18);
t=linspace(0,0.01,50);
[xx,tt]=meshgrid(x,t);
f=1./exp(((xx-u)/k./tt)+1); %这里是把t当成分子上面,如果在分母,请将*改为/
f(find(f>maxval))=maxval; %当物理量超过这个值时就用这个值代替
surf(xx,tt,f)
shading interp
xlabel('x');
ylabel('t');
zlabel('f');
这段程序输入后出现
Error using ==> surf at 78
Z must be a matrix, not a scalar or vector.

Error in ==> zhidao_1000 at 12
surf(xx,tt,f)
这个问题

不错,7.9刚出来就已经装上了。
下面代码在6.5和7.8测试通过。

在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function f=zhidao_1000(u,k)
%u=5.06e-19;k=1.38e-23;

maxval=1e10;%当物理量超过这个值时就用这个值代替

x=linspace(0,8e-19,50);
t=linspace(0,0.01,50);
[xx,tt]=meshgrid(x,t);
f=1./exp((xx-u)/k.*tt+1); %这里是把t当成分子上面,如果在分母,请将*改为/
f(find(f>maxval))=maxval; %当物理量超过这个值时就用这个值代替
surf(xx,tt,f)
shading interp
xlabel('x');
ylabel('t');
zlabel('f');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

在Matlab下面输入:
f=zhidao_1000(5.06e-19,1.38e-23);
就可以看见图了。