24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1901  |  回复: 10
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

bluethky

木虫 (著名写手)

[求助] matlab程序错误,提示如下【弄了半夜还是不行】已有2人参与

function [x,y,Y]=levydistrintheorytest(t0,lambda,T,a,b);
%  计算理论的二维levy分布的图象   画出来的3维曲面图
%   t0 :levy walk  趋于零的时间
%  lambda :幂律值
%   T:时间
%   a: 离散的大步长的最大值
%   b:小步长的最大值


error=0.125/180*pi;  %假定平行于坐标轴的误差角度
syms u
c=-gamma(2-lambda)*t0^(lambda-1)*cos(pi*lambda/2)/lambda;
h1=20;  %大的离散步长
h2=0.1; %小的离散步长
x1=-a:h1:-b;
x2=-(b-h2):h2b-h2);
x3=b:h1:a;
x=[x1,x2,x3];
disp('%%%%%%%%%%%计算的次数为%%%%%%%%%%%%%%%')
N=length(x)
y=x;
Z=zeros(N,N);
for i=1:1   %x坐标
    i
    for j=1:N  % y坐标
        theta=angle(complex(x(i),y(j)));
        if theta<error && theta>-error  % x轴正半轴
            Z(j,i)=double(int(cos(u.*x(i)/(c*T)^(1/lambda))*exp(-(abs(u))^lambda)./pi+cos(1/u.*x(i)/(c*T)^(1/lambda))*exp(-1/(abs(u))^lambda)/u^2./pi,0,1));
        elseif     theta<pi/2+error && theta>pi/2-error  % y轴正半轴
            Z(j,i)=double(int(cos(u.*y(j)/(c*T)^(1/lambda))*exp(-(abs(u))^lambda)./pi+cos(1/u.*y(j)/(c*T)^(1/lambda))*exp(-1/(abs(u))^lambda)/u^2./pi,0,1));
        elseif   theta>pi-error || theta<-pi+error  %x轴负半轴
            Z(j,i)=double(int(cos(u.*x(i)/(c*T)^(1/lambda))*exp(-(abs(u))^lambda)./pi+cos(1/u.*x(i)/(c*T)^(1/lambda))*exp(-1/(abs(u))^lambda)/u^2./pi,0,1));
        elseif   theta>-pi/2-error && theta<-pi/2+error   %y轴负半轴
            Z(j,i)=double(int(cos(u.*y(j)/(c*T)^(1/lambda))*exp(-(abs(u))^lambda)./pi+cos(1/u.*y(j)/(c*T)^(1/lambda))*exp(-1/(abs(u))^lambda)/u^2./pi,0,1));
        else
            Z(j,i)=double(int(cos(u.*x(i)/(c*T)^(1/lambda)/sin(theta))*exp(-(abs(u))^lambda)./pi+cos(1/u.*x(i)/(c*T)^(1/lambda)/sin(theta))*exp(-1/(abs(u))^lambda)/u^2./pi,0,1))*(double(int(cos(u.*y(j)/(c*T)^(1/lambda)/cos(theta))*exp(-(abs(u))^lambda)./pi+cos(1/u.*y(j)/(c*T)^(1/lambda)/cos(theta))*exp(-1/(abs(u))^lambda)/u^2./pi,0,1)));
            %zy=(double(int(cos(u.*y(j)/(c*T)^(1/lambda)/cos(theta))*exp(-(abs(u))^lambda)./pi+cos(1/u.*y(j)/(c*T)^(1/lambda)/cos(theta))*exp(-1/(abs(u))^lambda)/u^2./pi,0,1)));
            %Z(j,i)=zx*zy;
        end
    end
end      
Y=Z;
end







错误提示;


Error using mupadmex
Error in MuPAD command: DOUBLE cannot convert the input expression into a
double array.

If the input expression contains a symbolic variable, use the VPA function
instead.

Error in sym/double (line 710)
        Xstr = mupadmex('symobj::double', S.s, 0);

Error in levydistrintheorytest (line 37)
            Z(j,i)=double(int(cos(u.*x(i)/(c*T)^(1/lambda)/sin(theta))*exp(-(abs(u))^lambda)./pi+cos(1/u.*x(i)/(c*T)^(1/lambda)/sin(theta))*exp(-1/(abs(u))^lambda)/u^2./pi,0,1))*(double(int(cos(u.*y(
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bluethky

木虫 (著名写手)

引用回帖:
3楼: Originally posted by wurongjun at 2014-05-10 06:53:34
你的那个u值有问题!
你定义的它是一个符号变量:syms u
程序里又把它当数值变量使用,所以出错!
至于你说的在命令行可以运行,原因可能是,你的work space里面已经给u赋值了,你可以清空space再看一下!
纵观程序 u是 ...

我把它设置成   int(f1,'u',0,1)这种类型的,系统提示对Undefined function or variable 'u'。。。。。很诡异
5楼2014-05-10 10:14:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 11 个回答

bluethky

木虫 (著名写手)

程序本身在命令窗口可以计算,,,但是在m文件中一直报错。。。。我也没找到错哪了,,,求大侠给点意见,问度娘也没有找出原因。。。。。
太困了。。。。先谢谢了!
早安!
2楼2014-05-10 01:35:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wurongjun

专家顾问 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
你的那个u值有问题!
你定义的它是一个符号变量:syms u
程序里又把它当数值变量使用,所以出错!
至于你说的在命令行可以运行,原因可能是,你的work space里面已经给u赋值了,你可以清空space再看一下!
纵观程序 u是需要赋值的!
善恶到头终有报,人间正道是沧桑.
3楼2014-05-10 06:53:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bluethky

木虫 (著名写手)

引用回帖:
3楼: Originally posted by wurongjun at 2014-05-10 06:53:34
你的那个u值有问题!
你定义的它是一个符号变量:syms u
程序里又把它当数值变量使用,所以出错!
至于你说的在命令行可以运行,原因可能是,你的work space里面已经给u赋值了,你可以清空space再看一下!
纵观程序 u是 ...

由于程序里是关于u在(0,1)的积分,我们不是都是对其先设置成,符号变量在进行积分吗?我不是太明白。。不知我应该怎样将其设置成数值变量?求老师指点一下。。。
不过你的解答应该是正确的
4楼2014-05-10 10:03:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见