quadl('t.^x*sin(x)',1,2,[],[],2)ans =2.1217>> quadl('q.^p*sin(p)',1,2,[],[],2)??? Error using ==> inlineevalError in inline expression ==> q.^p*sin(p)??? Error using ==> mtimesInner matrix dimensions must agree.Error in ==> inline.feval at 34INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);Error in ==> quadl at 64y = feval(f,x,varargin{:}); y = y(:).';>>
3 回答

哆啦的时光机
TA贡献1779条经验 获得超6个赞
@(x)是用来定义无名函数的。以你的函数为例
y=@(x)4*a*sqrt(1-(c/a)^2*sin(x).^2);
这就定义了这样的一个以x为自变量的函数y,但是与用function来定义的函数不同,它在matlab里没有函数名,并且只存在于内存中(关掉matlab后就被删除了)。
之后直接积分就可以
true=quad(y,0,2*pi,1e-8);
你用这个y='4*a*sqrt(1-(c/a)^2*sin(x).^2)';也可以,只是不能用a和c,要把a和c改成对应的数值。比如当a=2和c=1时,你要输入y='4*2*sqrt(1-(1/2)^2*sin(x).^2)';之后再用true=quad(y,0,2*pi,1e-8);

摇曳的蔷薇
TA贡献1793条经验 获得超6个赞
quadl('q.^p*sin(p)',1,2,[],[],2)
这个函数的变量是q而不是p,符号计算时,Matlab自动调用函数确定变量,默认为最靠近x的作为变量

呼唤远方
TA贡献1856条经验 获得超11个赞
y=@(x)4*3*sqrt(1-(2/3)^2.*sin(x).^2);true=quad(y,0,2*pi)
按上面语句试试
@(x)表示函数以x为自变量
- 3 回答
- 0 关注
- 156 浏览
添加回答
举报
0/150
提交
取消