声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1351|回复: 6

[编程技巧] 数值积分的问题

[复制链接]
发表于 2007-5-18 14:57 | 显示全部楼层 |阅读模式

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

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

x
a=0:0.1:5;
num=exp(0.5);
mul=1./(2.*pi);
F=1:1:length(a);
R=1:1:length(a);
result=1:1:length(a);
for i=1:1:length(a)
    R(i)=a(i)*exp((-a(i)^2)./2);
    F(i)=quad(@(y)y.*exp(-y.^2./2).*(log(1+besl(R(i).*y)./num)+(besl(R(i).*y)./num).*log(1+num./besl(R(i).*y))),0,100);
    result(i)=log(2)-0.5.*F(i);
end
figure;
plot(a,result,'k-');

function r=besl(x)
  syms x;
  r=quad(@(z)(exp(x.*cos(z))),0,2.*pi);

老是出错,请问各位大虾,应该怎样改正,或是怎样调用下面的函数?
小弟感激不尽啊!!!

[ 本帖最后由 eight 于 2007-5-18 18:46 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-5-18 15:29 | 显示全部楼层
quad 是数值积分,不能用于符号计算

评分

1

查看全部评分

 楼主| 发表于 2007-5-18 15:33 | 显示全部楼层
那怎么用,符号积分?谢谢
发表于 2007-5-18 15:56 | 显示全部楼层
你的F函数太复杂,没时间调试。改了一个简单的,能运行。你自己改吧
a=0:0.1:5;
num=exp(0.5);
mul=1./(2.*pi);
F=1:1:length(a);
R=1:1:length(a);
besel=@(x)quad(@(z)(exp(x.*cos(z))),0,2.*pi);
result=1:1:length(a);
for i=1:1:length(a)
    R(i)=a(i)*exp((-a(i)^2)./2);
    F(i)=quad(@(y)besel(R(i))*y,0,100);
    result(i)=log(2)-0.5.*F(i);
end
figure;
plot(a,result,'k-');

评分

1

查看全部评分

发表于 2007-5-18 18:45 | 显示全部楼层
 楼主| 发表于 2007-5-18 19:13 | 显示全部楼层
F(i)=quad(@(y)besel(R(i))*y,0,100);
应该是将y放在besel()里,如:besel(R(i)*y)
在里边就出不来了,请sffei和eight帮忙解答一下,小弟先谢过了!
:@)
发表于 2007-5-18 22:29 | 显示全部楼层
这个函数exp(x.*cos(z))对z进行积分根本积不出来,只能用数值积分,而数值积分想求这个besel(y)的表达式是做不到的

[ 本帖最后由 eight 于 2007-5-18 23:24 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-19 04:26 , Processed in 0.062842 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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