猿问

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

quadl('t.^x*sin(x)',1,2,[],[],2)

ans =

2.1217

>> quadl('q.^p*sin(p)',1,2,[],[],2)
??? Error using ==> inlineeval
Error in inline expression ==> q.^p*sin(p)
??? Error using ==> mtimes
Inner matrix dimensions must agree.

Error in ==> inline.feval at 34
INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);

Error in ==> quadl at 64
y = feval(f,x,varargin{:}); y = y(:).';

>>

沧海一幻觉
浏览 157回答 3
3回答

哆啦的时光机

@(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);

摇曳的蔷薇

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

呼唤远方

y=@(x)4*3*sqrt(1-(2/3)^2.*sin(x).^2);true=quad(y,0,2*pi)按上面语句试试@(x)表示函数以x为自变量
随时随地看视频慕课网APP
我要回答