【问题标题】:Warning: Explicit integral could not be found.警告:找不到显式积分。
【发布时间】:2014-03-10 23:18:17
【问题描述】:

我正在尝试做一个简单的集成,我已经附上了代码。你能帮我看看我在代码中做错了什么吗?

function [f_value] = SurfArea ()

        a=[1.78E-05 3.39E-04 0.0104 -0.05791 -16.36];

        R = 30;

        da = polyder(a);

        syms x

        integrand = int((x*sqrt(1+1/(poly2sym(da)).^2)),-R,0);

        f_value = sym2poly(integrand);

end

我想删除警告,请帮忙。

【问题讨论】:

  • Silencing warning messages in MATLAB 的可能重复项-尽管@RodyOldenhuis 在这里的回答更具体...
  • @horchler 我尝试使用 vpa 功能,但仍然收到相同的警告。您能否解释那里提到的“双重”的实施。我没听懂。
  • @Sagar:使用vpa 不会抑制警告,因为您仍然需要运行int。警告告诉您积分无法以符号方式求解。但是,有时您可以将输出从int 传递到vpadoubleeval,积分将以数字方式计算。尽管在这种情况下您可能会考虑将您的方程式调整为 integral

标签: matlab int warnings integration explicit


【解决方案1】:

如果你发出命令

>> [~,ID] = lastwarn

在发出警告后,您将获得相关的警告 ID 以供使用。你可以这样使用:

%// Force the warning off
warnstate = warning('off', 'symbolic:sym:int:warnmsg1');

%// ... do the integration etc.

%// Switch warning back into original state
warning(warnstate);

顺便说一句:

  • 您似乎想返回一个多项式系数向量。您如何期望积分会产生多项式?!
  • 如果您想要数字结果,请查看 integral (R2013) 或 quadgk (快很多。

【讨论】:

    猜你喜欢
    • 2013-12-03
    • 1970-01-01
    • 2013-08-15
    • 2023-03-28
    • 1970-01-01
    • 2017-11-23
    • 2015-09-19
    • 2013-06-08
    • 2015-06-11
    相关资源
    最近更新 更多