像这类曲线积分的表达式很难求出解析表达式的,没有办法。
从计算定积分的角度来说,你没必要过于纠结解析表达式,其实只要知道这是一个函数,只要给定了自变量,都能够求出函数值来,就够了。例如,按照你的要求,上限是一个具体的数例如8133.2,但下限是a,那么我们就可以定义一个匿名函数J(a):
syms x;
y=3251*exp(-(x-8555)^2/2550^2)+378.4*exp(-(x-1.178e+004)^2/1281^2)...
+ 5.157e+017*exp(-(x-5.89e+005)^2/1.007e+005^2);
b = 8133.2;
J = @(a) quadl( @(t) subs(sqrt((diff(y,x))^2+1),x,t), a, b);
然后,只要你指定a的值,就可以计算出定积分的结果来,例如
>> J(7500)
ans =
842.4111
你的积分表达式太复杂了,sqrt(diff(y,x)^2+1)的符号表达式有很多项,非线性特别强,matlab无法求出的符号解,在这种情况下,只能先求出sqrt(diff(y,x)^2+1)的符号表达式,然后转换为函数表达式,再用数值解法求解。
例如,我修改建议如下:
syms x;
y=3251*exp(-(x-8555)^2/2550^2)+378.4*exp(-(x-1.178e+004)^2/1281^2)+ 5.157e+017*exp(-(x-5.89e+005)^2/1.007e+005^2);
y1=sqrt((diff(y,x))^2+1)
y2=inline(y1)
quad(y2,0,1)
再0-1内的定积分结果:
ans =
1.0035
希望对你有帮组