关于matlab的quad函数
y='4*a*sqrt(1-(c/a)^2*sin(x)^2))';true=quad(y,0,2*pi,10^-6);为什么输入这样的指令总是出现如下错误???Erro...
y='4*a*sqrt(1-(c/a)^2*sin(x)^2))';
true=quad(y,0,2*pi,10^-6);
为什么输入这样的指令总是出现如下错误
??? Error using ==> inline.subsref at 14
Not enough inputs to inline function.
Error in ==> quad at 77
y = f(x, varargin{:});
Error in ==> Untitled5 at 9
true=quad(y,0,2*pi,10^-6)
还有我想问下那个@(x)是什么意思 展开
true=quad(y,0,2*pi,10^-6);
为什么输入这样的指令总是出现如下错误
??? Error using ==> inline.subsref at 14
Not enough inputs to inline function.
Error in ==> quad at 77
y = f(x, varargin{:});
Error in ==> Untitled5 at 9
true=quad(y,0,2*pi,10^-6)
还有我想问下那个@(x)是什么意思 展开
展开全部
@(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);
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);
更多追问追答
追问
你的函数y=@(x)4*a*sqrt(1-(c/a)^2*sin(x).^2)里面在sin(x)后面有个点,这是为什么呢?
追答
quad是数值积分,所以输入的函数必须可以进行向量运算。若没有这个点,x就不能是向量,也就不能进行向量运算了。
2013-07-19
展开全部
你这个函数是第二类完全椭圆积分,Matlab提供了现成的方法:
[K,E]=ellipke % 分别返回两类椭圆积分的结果,你查一下Help
M2=[0: 0.01 : 0.99] %其中M2 = (c/a)^2
[K,E]=ellipke(M2); %不知道你的前面系数a、c代表什么含义?
plot(M2, E) % E就是你需要的第二类椭圆积分,K是第一类椭圆积分
@是匿名函数,和inline函数差不多,只不过更方便调用而已
[K,E]=ellipke % 分别返回两类椭圆积分的结果,你查一下Help
M2=[0: 0.01 : 0.99] %其中M2 = (c/a)^2
[K,E]=ellipke(M2); %不知道你的前面系数a、c代表什么含义?
plot(M2, E) % E就是你需要的第二类椭圆积分,K是第一类椭圆积分
@是匿名函数,和inline函数差不多,只不过更方便调用而已
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
y=@(x)4*3*sqrt(1-(2/3)^2.*sin(x).^2);true=quad(y,0,2*pi)
按上面语句试试
@(x)表示函数以x为自变量,
按上面语句试试
@(x)表示函数以x为自变量,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询