数值积分,尽管使用了 .^ 和 .*,但尺寸不一致
Numerical integration, dimensions do not agree despite use of .^ and .*
我对 Matlab 集成有疑问。它告诉我尺寸有误。但是他们确实同意,并且使用矢量化运算符(.^ .* 等...)正确地完成了操作。这是简单的代码,但我被卡住了
A = 1:10;
B = 1:10;
K_fun = @(x) (x ./ sqrt((x + A.^2 ) .* (x + B.^2) .* (x + B.^2)) );
K = integral( K_fun, 0,Inf );
这里是命令中的错误消息 window:
Error using +
Matrix dimensions must agree.
Error in @(x)(x./sqrt((x+A.^2).*(x+B.^2).*(x+B.^2)))
Error in integralCalc/iterateScalarValued (line 314)
fx = FUN(t);
Error in integralCalc/vadapt (line 133)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
Error in integralCalc (line 84)
[q,errbnd] = vadapt(@AToInfInvTransform,interval);
Error in integral (line 89)
Q = integralCalc(fun,a,b,opstruct);
Error in PROVA_New_Drag3 (line 21)
K = integral( K_fun , 0 , Inf);
提前致谢
它评估了向量中的两个积分限制,因此函数中的 x
实际上是 [0 Inf],这就是长度不一致的原因。
您可以在积分调用中将'ArrayValued'标志设置为true
K = integral( K_fun, 0,Inf,'ArrayValued', true );
让它分别评估它们。
我收到了另一个关于奇点的警告,但这可能是因为您使用的是 0、无穷大和除法,所以它与您的函数的关系比与集成调用的关系更大。在 K_fun
周围撒一些 eps
可能会有所帮助。
更新:请参阅 Troy 对奇点警告的解释,并注意 eps
实际上对此没有帮助。
我对 Matlab 集成有疑问。它告诉我尺寸有误。但是他们确实同意,并且使用矢量化运算符(.^ .* 等...)正确地完成了操作。这是简单的代码,但我被卡住了
A = 1:10;
B = 1:10;
K_fun = @(x) (x ./ sqrt((x + A.^2 ) .* (x + B.^2) .* (x + B.^2)) );
K = integral( K_fun, 0,Inf );
这里是命令中的错误消息 window:
Error using +
Matrix dimensions must agree.
Error in @(x)(x./sqrt((x+A.^2).*(x+B.^2).*(x+B.^2)))
Error in integralCalc/iterateScalarValued (line 314)
fx = FUN(t);
Error in integralCalc/vadapt (line 133)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
Error in integralCalc (line 84)
[q,errbnd] = vadapt(@AToInfInvTransform,interval);
Error in integral (line 89)
Q = integralCalc(fun,a,b,opstruct);
Error in PROVA_New_Drag3 (line 21)
K = integral( K_fun , 0 , Inf);
提前致谢
它评估了向量中的两个积分限制,因此函数中的 x
实际上是 [0 Inf],这就是长度不一致的原因。
您可以在积分调用中将'ArrayValued'标志设置为true
K = integral( K_fun, 0,Inf,'ArrayValued', true );
让它分别评估它们。
我收到了另一个关于奇点的警告,但这可能是因为您使用的是 0、无穷大和除法,所以它与您的函数的关系比与集成调用的关系更大。在 K_fun
周围撒一些 eps
可能会有所帮助。
更新:请参阅 Troy 对奇点警告的解释,并注意 eps
实际上对此没有帮助。