找回密码
 注册
Simdroid-非首页
查看: 87|回复: 2

分段积分的错误

[复制链接]
发表于 2009-7-16 17:34:23 | 显示全部楼层 |阅读模式 来自 山东青岛
本帖最后由 messenger 于 2009-7-16 18:50 编辑

大家好 在看了论坛里关于分段积分的帖子之后,学会了怎么用分段积分,用小程序也做了测试,是可行的
但是在做这个的时候出了点错误

以下为程序:
g = 9.80665;      
rou_a = 1.2255;   
rou_w = 1000;     
U10 = 10;

u_star = [num2str(U10),'.*sqrt((0.8+0.0065*',num2str(U10),')*1e-3)'];
c = ['sqrt(',num2str(g),'*k)'];
kp = g./((1.2*U10).^2);

h = ['1.24.*(k/',num2str(kp),'>=0 & k/',num2str(kp),'<0.31)+2.61.*(k/'...
    ,num2str(kp),').^0.65.*(k/',num2str(kp),'>=0.31 & k/',num2str(kp)...
    ,'<0.9)+2.28*(',num2str(kp),'/k).^0.65.*(k/',num2str(kp)...
    ,'>=0.9 & k/',num2str(kp),'<=10)'];               

P = ['exp(-1.22*(1.2*',num2str(U10),'.*k.^0.5/',num2str(sqrt(g)),'-1).^2)'];

F_str = ['0.00162*',num2str(U10),'./(k.^2.5)./',num2str(sqrt(g)),...
    '.*exp(-',num2str(g^2),'/(k.^2)./(1.2*',num2str(U10),').^4).*1.7.^',P,...
    '.*',h,'.*(sech(',h,'.*theta)).^2'];         

F = inline(F_str,'k','theta');

m0 = dblquad(F,1e-6,10*kp,-pi,pi)

式子见附件

以下为错误提示
??? Error using ==> inlineeval
Error in inline expression ==> 0.00162*10./(k.^2.5)./3.1316.*exp(-96.1704/(k.^2)./(1.2*10).^4).*1.7.^exp(-1.22*(1.2*10.*k.^0.5/3.1316-1).^2).*1.24.*(k/0.068102>=0 & k/0.068102<0.31)+2.61.*(k/0.068102).^0.65.*(k/0.068102>=0.31 & k/0.068102<0.9)+2.28*(0.068102/k).^0.65.*(k/0.068102>=0.9 & k/0.068102<=10).*(sech(1.24.*(k/0.068102>=0 & k/0.068102<0.31)+2.61.*(k/0.068102).^0.65.*(k/0.068102>=0.31 & k/0.068102<0.9)+2.28*(0.068102/k).^0.65.*(k/0.068102>=0.9 & k/0.068102<=10).*theta)).^2
??? Error using ==> mrdivide
Matrix dimensions must agree.
Error in ==> inline.subsref at 25
    INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);
Error in ==> quad at 62
y = f(x, varargin{:});
Error in ==> inline.feval at 20
    [varargout{1:max(1,nargout)}] = builtin('feval',varargin{:});
Error in ==> dblquad>innerintegral at 88
    Q(i) = feval(quadf, intfcn, xmin, xmax, tol, trace, y(i), varargin{:});
Error in ==> quad at 62
y = f(x, varargin{:});
Error in ==> inline.feval at 20
    [varargout{1:max(1,nargout)}] = builtin('feval',varargin{:});
Error in ==> dblquad at 64
Q = feval(quadf, @innerintegral, ymin, ymax, tol, trace, intfcn, ...
Error in ==> song at 37
m0 = dblquad(F,1e-6,10*kp,-pi,pi)

后面的先不管,现在想解决第一个错误,就是说F这个函数用inline不行的问题

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2009-7-16 18:46:54 | 显示全部楼层 来自 浙江杭州
Simdroid开发平台
1# aili

应该是你的除号有问题,有些本该写点除的写成除号了。

用下列代码算了一下,得出结果:
m0 =

    1.679489633307420e+000



  1. g = 9.80665;      
  2. rou_a = 1.2255;   
  3. rou_w = 1000;     
  4. U10 = 10;
  5. u_star = [num2str(U10),'.*sqrt((0.8+0.0065*',num2str(U10),')*1e-3)'];
  6. c = ['sqrt(',num2str(g),'*k)'];
  7. kp = g./((1.2*U10).^2);

  8. h = ['1.24.*(k./',num2str(kp),'>=0 & k./',num2str(kp),'<0.31)+2.61.*(k./'...
  9.     ,num2str(kp),').^0.65.*(k./',num2str(kp),'>=0.31 & k./',num2str(kp)...
  10.     ,'<0.9)+2.28*(',num2str(kp),'./k).^0.65.*(k./',num2str(kp)...
  11.     ,'>=0.9 & k./',num2str(kp),'<=10)'];               

  12. P = ['exp(-1.22*(1.2*',num2str(U10),'.*k.^0.5./',num2str(sqrt(g)),'-1).^2)'];

  13. F_str = ['0.00162*',num2str(U10),'./(k.^2.5)./',num2str(sqrt(g)),...
  14.     '.*exp(-',num2str(g^2),'./(k.^2)./(1.2*',num2str(U10),').^4).*1.7.^',P,...
  15.     '.*',h,'.*(sech(',h,'.*theta)).^2'];         

  16. F = inline(F_str,'k','theta');
  17. m0 = dblquad(F,1e-6,10*kp,-pi,pi)
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2009-7-16 18:58:22 | 显示全部楼层 来自 山东青岛
太感谢啦~~怪不得是优秀版主,真的好厉害哦
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-5-27 09:20 , Processed in 0.038237 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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