关于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)是什么意思
展开
 我来答
雨扬振1238
推荐于2017-11-25 · TA获得超过2782个赞
知道小有建树答主
回答量:586
采纳率:100%
帮助的人:985万
展开全部
@(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)里面在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函数差不多,只不过更方便调用而已
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我行我素850915
2013-07-19 · TA获得超过8241个赞
知道大有可为答主
回答量:5788
采纳率:77%
帮助的人:1778万
展开全部
y=@(x)4*3*sqrt(1-(2/3)^2.*sin(x).^2);true=quad(y,0,2*pi)
按上面语句试试
@(x)表示函数以x为自变量,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式