我想知道为什么此代码无法正常工作。如果有人对导致matlab发现这么多错误的原因有任何了解,将不胜感激。
m = 1;
c = 1.5;
fun =@(x, epsilon) 1 .* (1 - (1 - cos(x))/(2.*epsilon)).^c .* cos(m.*x);
a = @(ep) acos(1-(2*ep));
lm =@(e) 1/(2.*pi) .* integral(@(x)fun(x, e), -1.*a(e), a(e));
fprintf('ball bearing at 0.6 is %4.4f', lm(0.6));
我要复制的功能是() =1/2∫[1 − (1 − cos())/2]^ cos()dx
据我所知,在乘法时不需要使用点修饰符,但是Matlab抱怨说,即使不涉及矩阵,这也需要按元素进行运算。
答案 0 :(得分:1)
根据integral
的文档,要集成的功能必须矢量化:
对于标量值问题,函数
y = fun(x)
必须接受向量参数x
,并返回向量结果y
。通常,这意味着乐趣必须使用数组运算符而不是矩阵运算符。例如,使用.*
( times )而不是*
( mtimes )。