Integrating without using the symbolic toolbox

43 次查看(过去 30 天)
syms x
f=log(45.*sin(x.^2) + cos(x)); % initial function
g=sqrt(1+diff(f).^2); % requirement step 1
h=int(g,0,pi/2) ;% requirement final step
instead of int i want to use " integral " and solve numerically ,if i remove the syms and introduce @(x) then i won't get a displayed result
and the result of final step while using the syms method is :
int(((sin(x) - 90*x*cos(x^2))^2/(45*sin(x^2) + cos(x))^2 + 1)^(1/2), x, 0, pi/2)
x belongs (0,pi/2)
How can i get rid of syms ?

采纳的回答

John D'Errico
John D'Errico 2020-12-14
编辑:John D'Errico 2020-12-14
This is an arc length integral. Apparently you wish to compute the length of that curve in the plane, with x going from 0 to pi/2. As a numerical integral, this is easy.
syms x
f=log(45.*sin(x.^2) + cos(x)); % initial function
fplot(f,[0,pi/2])
g=sqrt(1+diff(f).^2); % requirement step 1
gfun = matlabFunction(g);
First, it alway makes sense to plot everything, before you just throw it into any general tool.
fplot(g,[0,pi/2])
I don't epect that arc length integral has an exact solution. I might also be slightly worried about what seems to be a singularity at 0, though an integration tool should survive that. You can use vpaintegral, if you wish to stay in the symbolic domain.
vpaintegral(g,[0,pi/2])
ans = 
4.73865
Or you can use integral.
integral(gfun,0,pi/2)
ans = 4.7386
Which seems to agree.
And, since I have a tool on the file exchange that can compute the arclength of a curve, I might try this:
ffun = matlabFunction(f);
xint = linspace(0,pi/2);
arclength(xint,ffun(xint),'spline')
ans =
4.7383
which also seems to agree pretty well.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Symbolic Math Toolbox 的更多信息

产品


版本

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by