Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 基础科学 > 数学
数学 A discussion board for Mathematics.
回复
 
主题工具 显示模式
旧 2009-05-11, 09:56   #1
summer_xueer
初级会员
 
注册日期: 2009-04-01
年龄: 36
帖子: 4
声望力: 0
summer_xueer 正向着好的方向发展
默认 如何求这个数值积分,老是出错啊,不知道为什么?

先建了一个M文件
function y= myfun(x)
y=exp(20./(5+1./sin(x).^2))/(5+sin(x).^2);
然后在命令窗口键入
Q=quad(@myfun,-pi/2,pi/2)
就会提示出错:??? Index exceeds matrix dimensions.
这是为什么啊?
summer_xueer 当前离线   回复时引用此帖
旧 2009-06-20, 22:00   #2
cfchenchen
初级会员
 
注册日期: 2009-06-20
住址: 学校
年龄: 38
帖子: 24
声望力: 16
cfchenchen 正向着好的方向发展
默认 回复: 如何求这个数值积分,老是出错啊,不知道为什么?

y=exp(20./(5+1./sin(x).^2))./(5+sin(x).^2);
你在/(5+sin(x).^2)前少一个点.上面是加上之后的.结果得:8.6554;
还有一个问题,就是在-pi/2与pi/2处,没有意义的,所以我们可以让它们分别加上一个与减去一个非常小的数,这样结果不变,也不会出现这样的情况了,比如说:可以从-pi/2+0.00000001到pi/2-0.00000001处积分,这样就行了,我也是新手噢!!
cfchenchen 当前离线   回复时引用此帖
旧 2009-06-24, 15:23   #3
summer_xueer
初级会员
 
注册日期: 2009-04-01
年龄: 36
帖子: 4
声望力: 0
summer_xueer 正向着好的方向发展
默认 回复: 如何求这个数值积分,老是出错啊,不知道为什么?

首先非常感谢楼上的给予帮助,但是由于本人matlab学得太烂,按照你说的去再重新改过来,好像还是得不到答案,最后还是NaN
summer_xueer 当前离线   回复时引用此帖
旧 2009-06-27, 11:10   #4
cfchenchen
初级会员
 
注册日期: 2009-06-20
住址: 学校
年龄: 38
帖子: 24
声望力: 16
cfchenchen 正向着好的方向发展
默认 回复: 如何求这个数值积分,老是出错啊,不知道为什么?

我把那个东西完整地发给你看一下.
M文件中函数:
function y=myfun(x)
y=exp(20./(5+1./sin(x).^2))./(5+sin(x).^2);
然后在命令窗口键入
Q=quad(@myfun,-pi/2-0.000001,pi/2-0.000001)


结果如下:>> Q=quad(@myfun,-pi/2-0.000001,pi/2-0.000001)

Q =

8.6554
你再看一下,那儿出错了!
cfchenchen 当前离线   回复时引用此帖
旧 2009-06-29, 12:22   #5
summer_xueer
初级会员
 
注册日期: 2009-04-01
年龄: 36
帖子: 4
声望力: 0
summer_xueer 正向着好的方向发展
默认 回复: 如何求这个数值积分,老是出错啊,不知道为什么?

按照你说的,我已经得出了结果,确实是需要注意添加那个.,现在我还有一个问题要请教,当积分表达式当中有另外一个变量(除了积分变量之外),而这个积分又如何求出来呢?是不是应该用一个for循环呢?可是我这么做的话会提示出错
summer_xueer 当前离线   回复时引用此帖
旧 2009-06-29, 13:12   #6
cfchenchen
初级会员
 
注册日期: 2009-06-20
住址: 学校
年龄: 38
帖子: 24
声望力: 16
cfchenchen 正向着好的方向发展
默认 回复: 如何求这个数值积分,老是出错啊,不知道为什么?

按你这样说的,好像不是求数值积分,好像是求符号积分的.对符号积分应该用int积分函数的!
例如:
syms x y
f=sqrt(exp(x)+1)*y;
F=int(f,x)
结果得:
F =

y*(2*(exp(x)+1)^(1/2)-2*atanh((exp(x)+1)^(1/2)))
这个是不定积分,如果要求定积分的话,可以这样改一下int函数
int(f,x,0,2)意思是对x积分是从0到2的.

另外对数值积而言,在表达式只能有一个变量了,只这样才能算出结果啊!
对于以上说的是符号积分就不一样了,它可以有多个变量的.
cfchenchen 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 12:05


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.