作业帮 > 综合 > 作业

关于matlab的quad函数

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 23:07:29
关于matlab的quad函数
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)是什么意思
@(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就不能是向量,也就不能进行向量运算了。
再问: 那如果我不是要进行向量运算,是不是直接不要那个点就可以了?还有这个点放在外面和里面有什么差别呢?
再答: 当你使用quad时,就默认是在做向量运算了。如果用在其他不需要向量运算的地方,这个点就不用加。
因为在做乘方这个运算时用到这个点,所以它必须紧连^符号。点只适用在乘法,乘方和除法这三个运算,加减法加不加都一样。sin(x.)语法上是不对的。