为了账号安全,请及时绑定邮箱和手机立即绑定

为什么改变变量名称就错了,前面已经定义了变量?

为什么改变变量名称就错了,前面已经定义了变量?

沧海一幻觉 2022-07-26 14:15:24
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);

查看完整回答
反对 回复 2022-08-01
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

quadl('q.^p*sin(p)',1,2,[],[],2)
这个函数的变量是q而不是p,符号计算时,Matlab自动调用函数确定变量,默认为最靠近x的作为变量

查看完整回答
反对 回复 2022-08-01
?
呼唤远方

TA贡献1856条经验 获得超11个赞

y=@(x)4*3*sqrt(1-(2/3)^2.*sin(x).^2);true=quad(y,0,2*pi)
按上面语句试试
@(x)表示函数以x为自变量

查看完整回答
反对 回复 2022-08-01
  • 3 回答
  • 0 关注
  • 156 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号