How can I use arrayfun and integral as anonymous function?
    9 次查看(过去 30 天)
  
       显示 更早的评论
    
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
      
      
 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
      
      
 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
更多回答(1 个)
  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 Exchange 中查找有关 Loops and Conditional Statements 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!