声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2415|回复: 9

[编程技巧] 积分出问题,求解决

[复制链接]
发表于 2016-3-28 09:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x


Eq  39    -----------------------------------------
alpha=4

L=100;
K=50;
R=1;

r1=R*sqrt(rand(1,L));
seta1=2*pi*rand(1,L);
x1=r1.*cos(seta1);
y1=r1.*sin(seta1);
% plot(x1,y1,'rd')


r2=R*sqrt(rand(1,K));
seta2=2*pi*rand(1,K);
x2=r2.*cos(seta2);
y2=r2.*sin(seta2);
% plot(x2,y2,'b*')


gamma1=zeros(K,L);
d=zeros(1,K);
for u=1:K
    for b=1:L
        gamma1(u,b) = sqrt((x2(u)-x1(b))^2+(y2(u)-y1(b))^2);
%         gamma(u,b) = gamma1(u,b)^(-alpha/2);
    end
    d(u) = min(gamma1(u,:));
end

f=zeros(1,K);
syms R  t;
R=@(t) exp(-t)/t;
for k = 1:K
    f(k)=integral(R,d(k),Inf);
end
plot(d,f,'r*');

出错Output of the function must be the same size as the input. If FUN is an array-valued integrand, set the 'ArrayValued' option to true. 怎么解决??

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2016-3-28 09:36 | 显示全部楼层
integral 这个matlab自带函数中好像没有

从提示语句上来看输入输出变量的问题

点评

这个是2012a以后版本才增加的函数  详情 回复 发表于 2016-3-28 13:04
 楼主| 发表于 2016-3-28 10:07 | 显示全部楼层
suffer 发表于 2016-3-28 09:36
integral 这个matlab自带函数中好像没有

从提示语句上来看输入输出变量的问题

就是积分下限是个数组……怎么解决?

点评

不明白你的意思  详情 回复 发表于 2016-3-28 10:22
发表于 2016-3-28 10:22 | 显示全部楼层
bedynamic 发表于 2016-3-28 10:07
就是积分下限是个数组……怎么解决?

不明白你的意思
 楼主| 发表于 2016-3-28 10:25 | 显示全部楼层
本帖最后由 bedynamic 于 2016-3-28 10:26 编辑
suffer 发表于 2016-3-28 10:22
不明白你的意思

积分下限是代码中求出的d,上限是Inf,我用循环的方式好像有问题,怎么解决啊?

点评

现在问题是出现在integral这个函数里边,别人不知道这个函数是真么回事,没办法解决  详情 回复 发表于 2016-3-28 10:28
发表于 2016-3-28 10:28 | 显示全部楼层
bedynamic 发表于 2016-3-28 10:25
积分下限是代码中求出的d,上限是Inf,我用循环的方式好像有问题,怎么解决啊?

现在问题是出现在integral这个函数里边,别人不知道这个函数是真么回事,没办法解决
 楼主| 发表于 2016-3-28 10:38 | 显示全部楼层
suffer 发表于 2016-3-28 10:28
现在问题是出现在integral这个函数里边,别人不知道这个函数是真么回事,没办法解决

有没有其它什么函数可以求的?或者换个其它方式求?
发表于 2016-3-28 13:04 | 显示全部楼层
suffer 发表于 2016-3-28 09:36
integral 这个matlab自带函数中好像没有

从提示语句上来看输入输出变量的问题

这个是2012a以后版本才增加的函数
发表于 2016-3-28 14:17 | 显示全部楼层
后面部分修改为:

  1. f=zeros(1,K);
  2. syms R  t;
  3. R=@(t) exp(-t)/t;
  4. for k = 1:K
  5.     f(k)=integral(R,d(k),Inf);
  6. end
  7. plot(d,f,'r*');
复制代码
 楼主| 发表于 2016-3-29 08:40 | 显示全部楼层
happy 发表于 2016-3-28 14:17
后面部分修改为:

谢谢了。哈哈
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-5 22:50 , Processed in 0.060443 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表