how can I use summation and index for the series

how can I use summation and index for the following series by using matlab
Edit:
the pervious Equation solution for
My trying to write the following code, but i don't know if it is right ot no
u0=0;
alpha=0.5;%[0.1 0.3 0.5 0.6 0.66 0.9 1]; matrix
a=0; b=1;n=100;
h=(b-a)/n;
t=a:h:b;
f=@(t,u) (-u.^4) + ( gamma(2*alpha+1)./gamma(alpha+1) ).*(t.^alpha) - ( 2./gamma(3-alpha) ).*(t.^(2-alpha)) + (t.^(2*alpha)-t.^2).^4;
exact=@(t) t.^(2*alpha)-t.^2;
%-----a'ks---------------------------------------
a_kth=@(k) (k+1).^(1-alpha)-(k).^(1-alpha);
u_p=zeros(1,n); z_p=zeros(1,n); u=zeros(1,n);
s=0;
for i=1
u_p(i)=a_kth(i-1)*u0; %s=s+q^keval(subs(fun,xq^k));
z_p(i)=gamma(2-alpha)*( h.^alpha ) * f(t(i),u_p(i));
u(i)=u_p(i)+gamma(2-alpha)*( h.^alpha ) * f(t(i),u_p(i)+z_p(i));
end
%--------------------------------------
for i=2:n
for k=1:i-1
s=s+(a_kth(i-1-k)-a_kth(i-k))*u(k);
u_p(i)=a_kth(i-1)*u0+s; %s=s+q^keval(subs(fun,xq^k));
z_p(i)=gamma(2-alpha)*( h.^alpha ) * f(t(i),u_p(i));
u(i)=u_p(i)+gamma(2-alpha)*( h.^alpha ) * f(t(i),u_p(i)+z_p(i));
end
end
u1=[ u0 u];
plot(t,u1)
exact1=exact(t);
error=exact1-u1;

17 commentaires

I suspect that in practice you are going to need to use a loop or arrayfun()
@Walter Roberson thank you for your comment, please can you guid me about code?
Be careful with the 0-indices for u and a, but check whether
sum(-diff(a).*u(n:-1:1))
works for
sum_{k=1}^(n-1)(a_{n-1-k}-a_{n-k})*u_{k}
work wolf
work wolf le 24 Mai 2022
Modifié(e) : work wolf le 24 Mai 2022
@Torsten Thank you for your comment. please help me to find full code for that summation.
Torsten
Torsten le 24 Mai 2022
Then supply a, n alpha, h, f and t.
Is it correct that f depends on u_n and thus the equation above must be solved for u_n by a root finder ?
u0=0;
alpha=[0.1 0.3 0.5 0.6 0.66 0.9 1]; %multi values (matrix)
a=0; b=1;n=100;
h=(b-a)/n;
t=a:h:b;
f=@(t,u) (-u.^4) + ( gamma(2*alpha+1)./gamma(alpha+1) ).*(t.^alpha) - ( 2./gamma(3-alpha) ).*(t.^(2-alpha)) + (t.^(2*alpha)-t.^2).^4;
exact=@(t) t.^(2*alpha)-t.^2;
%-----a'ks---------------------------------------
a_kth=@(k) (k+1).^(1-alpha)-(k).^(1-alpha);
%----------------------------------------------
Torsten
Torsten le 25 Mai 2022
In f, how do you want to evaluate t^alpha ? t and alpha have a different number of elements.
You should explain the background of your question so that we are able to understand what you are trying to do in your code.
the code for each alpha, i.e the code run for o.1 then repeate all steps for another value as 0.3. in same time, can you evaluate for one element as alpha= 0.1 then change alpha to 0.3, manually. i hope understand me :)
Torsten
Torsten le 25 Mai 2022
Again my question:
Is it correct that f depends on u_n and thus the equation above must be solved for u_n by a root finder ?
work wolf
work wolf le 25 Mai 2022
Modifié(e) : work wolf le 25 Mai 2022
@Torsten yes. f depends on u_n , where u_n denotes the approximate value of u(t) at t= t_n .
Note: i am trying to write the folowing code , but i don't know if it right or wrong?!
u0=0;
alpha=0.5;%[0.1 0.3 0.5 0.6 0.66 0.9 1]; matrix
a=0; b=1;n=100;
h=(b-a)/n;
t=a:h:b;
f=@(t,u) (-u.^4) + ( gamma(2*alpha+1)./gamma(alpha+1) ).*(t.^alpha) - ( 2./gamma(3-alpha) ).*(t.^(2-alpha)) + (t.^(2*alpha)-t.^2).^4;
exact=@(t) t.^(2*alpha)-t.^2;
%-----a'ks---------------------------------------
a_kth=@(k) (k+1).^(1-alpha)-(k).^(1-alpha);
u_p=zeros(1,n); z_p=zeros(1,n); u=zeros(1,n);
s=0;
for i=1
u_p(i)=a_kth(i-1)*u0; %s=s+q^keval(subs(fun,xq^k));
z_p(i)=gamma(2-alpha)*( h.^alpha ) * f(t(i),u_p(i));
u(i)=u_p(i)+gamma(2-alpha)*( h.^alpha ) * f(t(i),u_p(i)+z_p(i));
end
%--------------------------------------
for i=2:n
for k=1:i-1
s=s+(a_kth(i-1-k)-a_kth(i-k))*u(k);
u_p(i)=a_kth(i-1)*u0+s; %s=s+q^keval(subs(fun,xq^k));
z_p(i)=gamma(2-alpha)*( h.^alpha ) * f(t(i),u_p(i));
u(i)=u_p(i)+gamma(2-alpha)*( h.^alpha ) * f(t(i),u_p(i)+z_p(i));
end
end
u1=[ u0 u];
plot(t,u1)
exact1=exact(t);
error=exact1-u1;
Torsten
Torsten le 25 Mai 2022
But then - starting from u(1) - you will have to solve a nonlinear equation for u(i). Is that true ?
work wolf
work wolf le 25 Mai 2022
Modifié(e) : work wolf le 25 Mai 2022
yeah u(t_o) is known as following
Torsten
Torsten le 25 Mai 2022
I have no experience with fractional order differential equations, but since your computations diverge, something must be wrong with the implementation.
@Torsten thank you so much for your comments. i will editing my question to add more infromation by your converstion.
Torsten
Torsten le 25 Mai 2022
You should include a link where the forum can find the discretization used in your code.
@Torsten How is that?
Torsten
Torsten le 25 Mai 2022
A link where the solution scheme for your equation is derived and explained.

Connectez-vous pour commenter.

Réponses (0)

Catégories

Question posée :

le 24 Mai 2022

Commenté :

le 25 Mai 2022

Community Treasure Hunt

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

Start Hunting!

Translated by