How can I use arrayfun and integral as anonymous function?

4 ビュー (過去 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 Center および File ExchangeEnvironment and Settings についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by