Integration of a function
Show older comments
I want to integrate fp(z) with z(0,x). I want an analytic expression.
I have done this:
f2z=@(z) 1./(z.^2+1);
fpz=@(z) f2z(z)./quadl(f2z,0,1);
--> the answer must be:4/(pi*(1 + x^2)) but it doesn't work
sol=int('fpz','z',0,'x')
y=solve('y=sol',x)
xf=@ (y) y ;
and it gives me -->
sol = fpz*x
Warning: Explicit solution could not be found.
In solve at 81
In sampling2 at 81 y = [ empty sym ] ,
(81 line is :y=solve('y=sol',x) )
Answers (2)
Oleg Komarov
on 2 Feb 2011
This is what I get:
syms z
f = 1./(z.^2+1);
sol = f./int(f,z,0,1)
sol =
4/(pi*(z^2 + 1))
Oleg
Walter Roberson
on 2 Feb 2011
sol=int('fpz(z)','z',0,'x'); %different
y = solve(subs('y=sol'),x); %different
A) You cannot use symbolic integration on a function handle.
B) When you create a variable at the Matlab level, then by default it is not known in a quoted string being passed to the MuPad level.
7 Comments
George
on 2 Feb 2011
Walter Roberson
on 2 Feb 2011
I probably should have said
sym x z
sol = int(fpz(z),z,0,x);
y = solve(subs('y=sol'),x);
Though on the other hand, instead of using subs, just use
sym y
yinv = solve(sol - y,x);
xf = @(y) yinv(y);
Having y as both the name assigned to and the name to be solved for is likely to cause problems later, such as the next time through the loop.
George
on 3 Feb 2011
George
on 9 Feb 2011
Walter Roberson
on 9 Feb 2011
No, with your fpz, the integral of fpz(z)*z from 0 to x is
2*ln(x^2+1)/Pi
The result you say it "must" give is obviously wrong, as you are integrating to the indefinite endpoint x but your result has no x in it.
George
on 10 Feb 2011
T
on 27 Feb 2013
When I attempt to integrate functions with MATLAB, I get an error when I declare the variable:
syms x Undefined function 'syms' for input arguments of type 'char'.
What's wrong?
Categories
Find more on Code Performance in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!