我的方程太复杂,matlab无法积分吗?

我的方程太复杂,matlab无法积分吗?,matlab,integral,Matlab,Integral,我有一个需要评估以下弧长方程的代码: syms x a = 10; b = 10; c = 10; d = 10; fun = 4*a*x^3+3*b*x^2+2*c*x+d int((1+(fun)^2)^.5) 但回报如下: ans = int(((40*x^3 + 30*x^2 + 20*x + 10)^2 + 1)^(1/2), x) 为什么matlab不计算这个积分?我在下面添加了一行,检查它是否会计算int(x),并返回所需的结果。涉及函数平方根的问题可能很难计算。我不确定

我有一个需要评估以下弧长方程的代码:

syms x

a = 10; b = 10; c = 10; d = 10;

fun = 4*a*x^3+3*b*x^2+2*c*x+d

int((1+(fun)^2)^.5)
但回报如下:

ans = int(((40*x^3 + 30*x^2 + 20*x + 10)^2 + 1)^(1/2), x)

为什么matlab不计算这个积分?我在下面添加了一行,检查它是否会计算int(x),并返回所需的结果。

涉及函数平方根的问题可能很难计算。我不确定这个积分是否存在,但是如果你查一个二阶多项式的积分,你会发现这个积分已经很混乱了。你会得到,在平方根内展开函数,是一个九阶多项式。如果这个积分真的存在,它可能太复杂而无法计算

无论如何,如果你仔细想想,有人真的会因为找到了这个问题的解析解而变得更聪明吗?如果情况并非如此,则数值解就足够了

编辑

因此,计算这类积分的一般规则是有价值的,但了解特定积分的原始函数可能会有点过分(如果能找到解决方案的话)

而是将函数定义为匿名函数

fun = @(x) sqrt((4*a*x.^3+3*b*x.^2+2*c*x+d).^2+1);
并使用
integral
计算某个范围内的函数,例如

integral(fun,0,100);

用于评估闭合区间[0100]内的函数。

WolframAlpha,并非所有函数都可以通过分析整合。你不能用数值近似吗?你最好试试数值积分。看,它看起来像是一个。这些不能用初等函数表示,通常当我尝试用数值方法求解时,它会返回一个错误,说明它无法计算X=1/10(或某个数字),并且X必须是符号。我在下面的答案中贴出了错误。如果很多人能够积分这些积分,他们会变得更聪明。这是场论中的一个主要问题;)我同意你的观点,如果我知道这个问题的解析解,这并不重要,但是我知道这个问题的数值解,从0到100,这是至关重要的。当我运行int(fun,x1,x2)代码时,它返回:int((((((3377699720527821*z^3)/1267650600228229401496703205376+(4644337115725789*z^2)/633847351602688+2*z+87490099089/225179985248)^(1/2),z=-874909087/225179948..-32486388706911/1125899968424)使用sym/int时出错(第123行)无法与'z==-3811553342128227/562949953421312'进行集成。积分变量必须是一个符号变量。我不确定当我在上面的代码中给它分配了一个sym变量(它适用于一阶积分)时,为什么它将一个值赋给Z@WayWewalk我不怀疑知道平方根函数的积分是否有用。对不起,如果这是听起来的话。我的意思是,即使有可能找到这个函数的解决方案,特定的答案也会很长,没有任何用处。所以不要担心,我没有忽略为这类函数制定一般规则的有用性:)对不起,如果我不遵守,我对使用句柄是新手。我定义了fun=@(x)sqrt(blah),然后调用整数命令int(fun,0100)?