Hi. I'm wondering if it is possible to use, in some way, variable or symbolic interval values for the integral function. I need to solve a similar kind of problem shown below, can't think of a way to do it (my functions are quite huge, so it's not easy to somehow simplify it).
  • Function 1: f(s)=...
  • Function 2: g(x)=...
  • f_new = integral(@(s) f, 0, x)
Now, both f_new and g is a function of x.
  • Final function = integral(@(x) f_new*g, 0, 2)
Hope the question is somewhat clear. If not, just ask. Any help is appreciated! :)

 채택된 답변

Walter Roberson
Walter Roberson 2014년 1월 20일
Assuming that f is a function handle already, such as
f = @(s) tan(s^2 + exp(-s));
then
f_new = @(x) integral(f, 0, x);
final_function = @(b) integral( @(x) f_new(x) .* g(x), 0, b);
and
final_function(2)

댓글 수: 2

You will need to vectorize f_new with arrayfun, e.g.
f_new = @(v)arrayfun(@(x)integral(f,0,x),v)
or, alternatively, prevent the outer integral from passing in non-scalars with the 'ArrayValued' option:
final_function = @(b)integral(@(x)f_new(x).*g(x), 0, b,'ArrayValued',true);
I've copied the answer from Walter in an easier version, as follows:
fun=@(y)integral(@(x)x,0,y)
integral(fun,0,1)
But what I've obtained is the following:
Error using integral (line 85)
A and B must be floating-point scalars.
Error in @(y)integral(@(x)x,0,y)
Error in integralCalc/iterateScalarValued (line 314)
fx = FUN(t);
Error in integralCalc/vadapt (line 132)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
Error in integralCalc (line 75)
[q,errbnd] = vadapt(@AtoBInvTransform,interval);
Error in integral (line 88)
Q = integralCalc(fun,a,b,opstruct);
I can't understand where is the problem, can you help me?

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Brede Løvik Lillehammer
Brede Løvik Lillehammer 2014년 1월 21일

1 개 추천

Thanks for your help guys! This works. Also found the function int(), which seems to do the same thing if I'm not mistaken.

댓글 수: 1

int() is for symbolic integration. integral() is for numeric integration.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터 및 File Exchange에서 Linear Algebra에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by