Integration of a function
Afficher commentaires plus anciens
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) )
Réponses (2)
Oleg Komarov
le 2 Fév 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
1 commentaire
George
le 2 Fév 2011
Walter Roberson
le 2 Fév 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 commentaires
George
le 2 Fév 2011
Walter Roberson
le 2 Fév 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
le 3 Fév 2011
George
le 9 Fév 2011
Walter Roberson
le 9 Fév 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
le 10 Fév 2011
T
le 27 Fév 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?
Catégories
En savoir plus sur Code Performance dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!