How can I use arrayfun and integral as anonymous function?

조회 수: 5 (최근 30일)
work wolf
work wolf 2021년 6월 10일
댓글: work wolf 2021년 6월 11일
t=0:0.1:1;
v=0.2;
fun1=@(s,t) s .* exp(-s).* ( (t-s) .^(v-1) ) ;
%gex= @(t) arrayfun(@(t) integral (@(s) fun1(s,t) ,0,t), t);
if t==0
gex= @(t) 0;
else
gex= @(t) arrayfun(@(t) integral (@(s) fun1(s,t) ,0,t), t);
end
How do I exclude input
t=0
and make it into a new value inside the matrix namely, gex, i.e, gives
gex(t)
as one matrix and set the value of
gex(t(1))=0
in same time?
  댓글 수: 2
David Hill
David Hill 2021년 6월 10일
I have no idea what you are trying to do. What is the array t?
work wolf
work wolf 2021년 6월 10일
편집: work wolf 2021년 6월 10일
I edited a question to define t

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

채택된 답변

David Hill
David Hill 2021년 6월 10일
I am doing a little guessing. I assume you want to integrate with respect to s (0,t) then look at t from 0:0.1:1.
syms s t
v=0.2;
fun=s*exp(-s)*(t-s)^(v-1);
fun1=int(fun,s,0,t);
n=0:.1:1;
for k=1:length(n)
b(k)=vpa(subs(fun1,t,n(k)));
end
  댓글 수: 3
David Hill
David Hill 2021년 6월 10일
Works, but does not get exact answers. Answers good for several decimal places.
v=0.2;
t=0:.1:1;
fun1=zeros(1,length(t));
for k=2:length(t)
fun=@(s)s.*exp(-s).*(t(k)-s).^(v-1);
fun1(k)=integral(fun,0,t(k));
end
work wolf
work wolf 2021년 6월 11일
Thanks, do you have another idea to exclude zero, i.e output NaN, as anonymous function?
The problem when substitution zero, gives NaN. That is, (t-s).^(v-1) gives (t-s).^(-0.8). So, i am thinking to make two anonymous function, the first, t>0 and another t==0.

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

추가 답변 (1개)

Kapil Gupta
Kapil Gupta 2021년 6월 10일
I assume you want to know how you can use integral function as anonymous function. The following MATLAB Answers link has a similar query, you can check this out:

카테고리

Help CenterFile Exchange에서 Assumptions에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by