作业帮 > 综合 > 作业

matlab怎么表示含参变量的积分

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/07/13 13:20:19
matlab怎么表示含参变量的积分
matlab中,
我想表示一个函数g(a)=(函数f(a,x)在[0,a]上对x的积分)
终于知道怎么做了,很直接地
function F=g(a)
F=quad(@(x)myfun(x,a),0,a);
我一直不清楚的是含两个自变量的函数怎么指定其中一个的值然后只以另一个作为积分变量积分.
原来quad直接有这个功能,我的确很菜!
不过我又碰到问题了,对于这个函数f1(x,a)=cos(x)./sqrt(cos(x)-cos(a)),其中a=2.28
命令
quad(@(x)f1(x,2.28),0,2.28);运行正常
但命令
quad(@(x)f1(x,2.28),pi/2,2.28);则出现以下错误
Warning:Infinite or Not-a-Number function value encountered.
> In quad at 95
ans =
NaN
其中的pi/2换成其它数如1.5也是这样出错,这是怎么回事,a值一样,只是积分区间从[0,2.28]变为[1.5,2.28],积分区间缩小了而积分反而不能积了,这也奇怪了吧!难道是我的matlab坏了?
刚才我又试了下,发现更惊人的,
quad(@(x)f1(x,2.28),0,pi./2);运行正常!
难道quad(@(x)f1(x,2.28),0,2.28)-quad(@(x)f1(x,2.28),0,pi./2)
与quad(@(x)f1(x,2.28),pi/2,2.28)不是相等的吗
a确定,一元函数f1(x,2.28)在[0,2.28]上的积分不是等于它在[0,pi./2]上的积分与在[pi/2,2.28]上的积分之和吗?
matlab怎么表示含参变量的积分
function F=g(a)
F=quad(@myfun,0,a);%调用匿名函数,
%子函数
function f=myfun(a,x)
f=.
积分一般用quad比较多,还有其他几个函数,基本原理都差不多,结果好像也差不多.
-------------------------------------------------
是在别的函数或脚本里调用g(a),把变量赋予函数1,函数1再利用匿名函数的形式调用函数2,绝对是可行的,我写过几个完全一样的程序.
放在同一个文件里也可,存成函数文件亦可,文件名就取g.m和myfun.m
实在不行就给我发消息
-------------------------------------------------
请把公式改成f1(x,a)=cos(x)./sqrt(cos(x)-cos(a+1e-12));