使用quad的错误(第75行)integrand函数必须返回与输入向量长度相同的输出向量。

8次浏览(最近30天)
我已经根据答案编辑了代码。
谁能解释一下错误背后的原因,并帮助我纠正以下代码:
U = 1;
E = @(q) 2*(1-cos(2* *q));
hq = @(q,n0) ((e(q)).^2+2*U*n0*(e(q))).^0.5;
y = @(q,n0) ((e(q))+(U*n0))/hq(q,n0))-1;
A = -0.5;
B = 0.5;
V = @(n0) quad(@(q) y(q,n0),a,b);
CV =@(n0) n0+(0.5*v(n0))-1;
U < 20
N0 = 0.1;
Options = optimset(“显示”“通路”);
N = fsolve(cv(n0),n0,0.1,options);
情节(U, n)
持有
U = U + 1;
结束
错误:
错误使用quad(第75行)
被积函数必须返回与输入向量长度相同的输出向量。
错误@ (n0)四(@ (q) y (q, n0), a, b)
错误@ (n0) n0 + (0.5 * v (n0)) 1
错误在simulv1中(第12行)
N = fsolve(cv(n0),n0,0.1,options);

接受的答案

明星黾
明星黾 2015年2月25日
你忘了把这些方程完全矢量化。将它们更改为:
q = @(q,n0) ((eq(q)).^2+2*U*n0*(eq(q))).^0.5;
y = @(q,n0) ((eq(q))+(U*n0))./hq(q,n0))-1;
看看这是否有帮助。
5个评论
明星黾
明星黾 2015年2月25日
@jayash - 评估 “y (q, n0)” (以及您的其他函数),以获取两个参数的代表性值,看看它是怎么做的。 总是 首先评估您提供给求解程序例程的函数,以确保它们能够工作并给出您期望的结果。
@A Jenkins 谢谢你!这很可能就是问题所在。

登录评论。

更多答案(2)

dpb
dpb 2015年2月25日
_ “我在用。但是……”
但你并非无处不在。错误信息给出的行是——
hq = @(q,n0) ((eq(q))^2+2*U*n0*(eq(q))).^0.5;
这个词 (eq (q)) ^ 2 没有'。'操作符,就像错误所说的那样。
顺便说一句,做 使用 情商 作为变量名或函数名;这是内置逻辑“相等”函数的别名 == eq ()
>>哪个方程
内置的matlab工具箱(C: \ ML_R2012b \ \ \行动\ @double \情商)%双法
>>

一个詹金斯
一个詹金斯 2015年2月25日
这条线上有两种幂,而你只替换了一种。
@ (q, n0) ((eq (q)) 2 + 2 *你* n0 * (eq (q))) ^。 0.5

类别

了解更多有关循环和条件语句帮助中心文件交换

s manbetx 845

社区寻宝

在MATLAB Central中寻找宝藏,并了解社区如何帮助您!

开始狩猎!