声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1317|回复: 7

[编程技巧] 初学者求助复杂函数定积分

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

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

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

x
初学matlab,很多不懂,求教各位大侠。
函数为fun=1./(2.*pi).*((cos(k./2).^2)/(1.-cos(k./2).^2)).*(sin(sqrt(1.-cos(k./2).^2)).^2).*t;先对变量k求定积分,范围为[-pi,pi],得到一个只含变量t 的函数,再作出关于变量t 的函数图像。
由于函数复杂,int不能给出结果。
求教各位!

[ 本帖最后由 ChaChing 于 2009-3-4 22:02 编辑 ]

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2009-3-4 17:57 | 显示全部楼层
for 给定一个值,t
   那么下面只要一个参数进行数值积分,用quad就可以了
end
只是增加一个循环而已
发表于 2009-3-4 18:40 | 显示全部楼层

回复 楼主 feinman 的帖子

列出LZ的程序吧!
 楼主| 发表于 2009-3-4 19:04 | 显示全部楼层

回复 沙发 无水1324 的帖子

尝试了一下,似乎不行啊
首先 for 的步长必须是整数,我尝试用i=[1,10],t=i/10来解决这个问题;
但是t 此时不能出现在积分运算中,否则quadl无法应用。
继续请教!
发表于 2009-3-5 15:43 | 显示全部楼层
t=linspace(0,10);
for ii=1:length(t)
    quad()
end

评分

1

查看全部评分

 楼主| 发表于 2009-3-6 11:21 | 显示全部楼层

回复 5楼 feinman 的帖子

这样可能还是不行
我在quad命令后加了个句柄函数@(k),虽然可以运行,但是无法绘制图像。
发表于 2009-3-7 22:01 | 显示全部楼层
继续观望结果中。。。
 楼主| 发表于 2009-3-19 12:55 | 显示全部楼层
采纳了主任的建议,将程序修改为:
t=linspace(0,10,1001);
y=zeros(size(t))
for i=1:length(t)
y(i)=quadl(@(k)1/(2*pi)*((cos(k).^2)/(1-cos(k).^2)).*(sin((sqrt(1-cos(k).^2))*t(i)).^2),-pi,pi);
end
plot(t,y)
即可做出图像,但是如何剔除奇异点呢?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-17 11:53 , Processed in 0.074874 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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