作业帮 > 综合 > 作业

matlab中Error:Function definitions are not permitted at the p

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/07/31 01:47:59
matlab中Error:Function definitions are not permitted at the prompt or in scripts.如何应对.
我想计算一个积分
{[1-(1-cos(x))/(2ε)]^c)*COS(mx)}/2π
从a到-a积分
其中ε>0
m=0或者1(这个条件应该如何表达?)
a=a=arccos(1-2ε)
c=1.5
ε=0.6
我写的code是
c=1.5
xi=0.6
m=0
a=acos(1-2*xi)
function w=pianxinfuhe([1-(1-cos(x))/(2*xi)]^c)*(cos(m*x))
Im=quadl(pianxinfuhe,a,-a)/(2*pi)
但是出现错误,
matlab中Error:Function definitions are not permitted at the p
首先写symbol function的时候.* , ./, .^ 一定要写对,你的代码里是错的
其次使用symbol function不能这样定义,你的程序可以直接这样写:
c = 1.5
xi = 0.6
m = 0
a = acos(1-2*xi)
w = @(x) ((1-(1-cos(x))./(2.*xi)).^c).*(cos(m.*x));
Im = quadl(w,a,-a)/(2*pi);
如果非要用function,你要新建一个m文件pianxinfuhe.m
里面这样写
function w = pianxinfuhe (x)
c = 1.5
xi = 0.6
m = 0
a = acos(1-2*xi)
w = ((1-(1-cos(x))./(2.*xi)).^c).*(cos(m.*x));
然后在外面窗口,执行如下语句:
xi = 0.6
a = acos(1-2*xi)
lm = quadl(@pianxinfuhe, a, -a)/(2*pi);
再问: w = @(x) ((1-(1-cos(x))./(2.*xi)).^c).*(cos(m.*x)); @是什么用法呢? 不好意思啊,matlab初心者
再答: @就是把函数符号化的符号,w = @(x) ((1-(1-cos(x))./(2.*xi)).^c).*(cos(m.*x));是把w写成x的方程,x作为w的变量 如果自定义了function,一般执行这个function时Matlab会返回计算好的函数值,如果function名字前面加了@,例如我上面写的@pianxinfuhe,Matlab使用function里定义的符号表达式 参考:http://www.mathworks.co.uk/help/matlab/ref/function_handle.html 或者打开Matlab帮助搜索function handle
再问: 哦~明白了。还有就是这个* 和.* 有什么区别啊?
再答: *在Matlab里被默认是矢量的乘法,乘号左右的矩阵的纬度要匹配才能相乘,.*是做标量的乘法。 如果A, B是都是同维度的方阵,A*B,按照矩阵乘法计算,A.*B按照对应元素相乘计算。 现在新版本作运算的时候已经不严格计较这两个符号的差别,系统会自动调整,但写符号函数的时候,仍需考虑两者区别