我有一个代码需要评估下面的弧长方程:
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)并返回所需的结果。
答案 0 :(得分:0)
涉及函数平方根的问题可能很难整合。我不确定积分是否存在,但如果你查看二阶多项式的积分,你会发现这个已经非常混乱了。你会有什么,你会扩展平方根内的函数,将是一个九阶多项式。如果实际上存在这个积分,那么计算它可能太复杂了。
无论如何,如果你考虑一下,通过找到这个的分析解决方案,任何人真的会变得更聪明吗?如果不是这种情况,那么数值解就足够了。
修改强>
作为thewaywewalk said in the comment,计算这些积分的一般规则是有价值的,但要知道特定积分的原始函数可能是过度的(如果可以找到解决方案)。
而是将函数定义为匿名函数
fun = @(x) sqrt((4*a*x.^3+3*b*x.^2+2*c*x+d).^2+1);
并使用integral
来评估某个范围之间的函数,例如
integral(fun,0,100);
用于评估闭区间[0,100]中的函数。