Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.matlab

Topic: Integration with variable limits
Replies: 17   Last Post: Aug 20, 2013 10:20 AM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Steven Lord

Posts: 17,944
Registered: 12/7/04
Re: Integration with variable limits
Posted: Jul 31, 2013 9:59 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply



"Torsten " <Torsten.Hennig@umsicht.fraunhofer.de> wrote in message
news:ktad6k$gtn$1@newscl01ah.mathworks.com...
> "Torsten" wrote in message <ktacg3$fkj$1@newscl01ah.mathworks.com>...
>> "Sanaa" wrote in message <kt9bf4$56h$1@newscl01ah.mathworks.com>...
>> > "Torsten" wrote in message <kst5mn$h75$1@newscl01ah.mathworks.com>...
>> > > "Sanaa" wrote in message <kss3h5$50n$1@newscl01ah.mathworks.com>...
>> > > > "Torsten" wrote in message
>> > > > <ksrcel$2k$1@newscl01ah.mathworks.com>...

>> > > > > "Sanaa" wrote in message
>> > > > > <ksrbia$r0l$1@newscl01ah.mathworks.com>...

>> > > > > > Hi all,
>> > > > > > How to integrate a function within a loop and the limits of
>> > > > > > integration are variables?
>> > > > > > For instance, y(i)*(1-y(i)) is the function I wish to integrate
>> > > > > > from 0.25*i to t where t \in (0.25*i, 0.25*(i+1)).
>> > > > > > Any help is really appreciated.
>> > > > > > Sanaa Moussa

>> > > > >
>> > > > > I think y(i)*(1-y(i)) is just a real number, not a function,
>> > > > > isn't it ?
>> > > > >
>> > > > > Best wishes
>> > > > > Torsten.

>> > > >
>> > > > Thanks for replying. You are right, but I mean the function is
>> > > > y*(1-y) which I want to put it into a loop
>> > > > My code is
>> > > > itermax=300;min=itermax-9;% That is we plot from 291:300 i.e. 10
>> > > > values of x only.
>> > > > r=0.25;
>> > > > for rho=0:0.001:4
>> > > > %x0=0.1;
>> > > > x(1)=0.1;
>> > > > for i=1:itermax-1
>> > > > %t=linspace(i*r,(i+1)*r,itermax)
>> > > > y(i+1)=x(i);
>> > > > x(i+1)=x(i)+ rho*int(y(i)*(1-y(i)),i*r,(i+1)*r);
>> > > > end
>> > > > %fix(y)
>> > > > plot(rho*ones(10),x(min:itermax),'b.','linewidth',0.1)
>> > > > hold on
>> > > > end
>> > > > fsize=15;
>> > > > xlabel('\rho','FontSize',fsize)
>> > > > ylabel('\itx','FontSize',fsize)
>> > > > %title('r=0.25, \alpha=1','FontSize',fsize)
>> > > > hold off
>> > > > % print(gcf, '-djpeg', '-zbuffer', 'bif.png');
>> > > >
>> > > > I get the error
>> > > > Function 'int' is not defined for values of class 'double'.
>> > > > what does this mean and how to fix it please?
>> > > > Many thanks in advance.

>> > >
>> > > It means what I said before:
>> > > y(i)*(1-y(i)) is a scalar value and not a function.
>> > > So "int" does not know how to handle this because it expects a
>> > > function, not a scalar as its first input argument.
>> > >
>> > > Best wishes
>> > > Torsten.

>> >
>> > Sorry for not posing my question correctly. The function I want to
>> > integrate is
>> > y(s)*(1-y(s)) ds from (n*0.25) to t, and t/in(n*0.25, (n+1)*0.25).
>> > Do you have any idea on how to format my code above to solve my
>> > problem?
>> > Thanks a lot in advance

>>
>> int_{n*0.25}^{t} (y(s)*(1-y(s)) ds = (1/2*t^2 - 1/3*t^3) -
>> (1/2*(n*0.25)^2 - 1/3*(n*0.25)^3)
>> for t/in(n*0.25, (n+1)*0.25).
>> Is it that what you asked for ?
>>
>> Best wishes
>> Torsten.

>
> No sorry, this is wrong - I integrated s*(1-s).
> For integration, you will have to know the explicit form of y as a
> function of s,
> e.g. y(s)=sin(s) or something like that.


If Y is only known as data, you will need to do one of two things:

1) Use TRAPZ or CUMTRAPZ.
2) Interpolate the Y data to obtain the value of the "function" at
intermediate points. This can be dangerous if your data does not
sufficiently represent your actual function:

x = 0:10
y = sin(x*pi).^2
answer1 = integral(@(t) interp1(x, y, t), 0, 10)
syms z
answer2 = int(sin(z*pi)^2, 0, 10)

Your numeric data makes your function "look like" the constant function y =
0 and so answer1 is very close to 0. The symbolic integration gives an
answer2 of 5, which is correct. Evaluating y at more points (x = 0:0.1:10
for example) would show the true form of the curve and gives an answer very
close to 5.

--
Steve Lord
slord@mathworks.com
To contact Technical Support use the Contact Us link on
http://www.mathworks.com




Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.