how can i convert from one value to multi values

1 view (last 30 days)
how can i replace value of
alpha = 0.5
by multi values as
alpha =[0.1 0.3 0.5 0.6 0.66 0.9 1]
in the following code:
alpha = 0.5;
u0 = 0;
a_k = @(k) (k + 1)^(1 - alpha) - (k)^(1 - alpha);
n = 100;
a = 0;
b = 1;
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;
up = zeros(1, n);
uc = zeros(1, n);
zp = zeros(1, n);
uc = zeros(1, n); % ??? is this your "u"?
C = gamma(2 - alpha) * h ^ alpha;
for ni = 1:n
up(ni) = a_k(ni - 1) * u0;
for k = 1:ni - 1
up(ni) = up(ni) + (a_k(ni - 1 - k) - a_k(ni - k)) * uc(k);
end
zp(ni) = C * f(t(ni), up(ni));
uc(ni) = up(ni) + C * f(t(ni), up(ni) + zp(ni));
end
fprintf('%g\n', up(1:20))

Accepted Answer

Image Analyst
Image Analyst on 20 Jun 2022
Try this:
% Define all the alphas that we want to use.
allAlpha =[0.1 0.3 0.5 0.6 0.66 0.9 1]
% Iterate the code for each value of alpha.
for kk = 1 : length(allAlpha)
alpha = allAlpha(kk);
% Existing code below:
u0 = 0;
a_k = @(k) (k + 1)^(1 - alpha) - (k)^(1 - alpha);
n = 100;
a = 0;
b = 1;
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;
up = zeros(1, n);
uc = zeros(1, n);
zp = zeros(1, n);
uc = zeros(1, n); % ??? is this your "u"?
C = gamma(2 - alpha) * h ^ alpha;
for ni = 1:n
up(ni) = a_k(ni - 1) * u0;
for k = 1:ni - 1
up(ni) = up(ni) + (a_k(ni - 1 - k) - a_k(ni - k)) * uc(k);
end % of k loop
zp(ni) = C * f(t(ni), up(ni));
uc(ni) = up(ni) + C * f(t(ni), up(ni) + zp(ni));
end % of ni loop
fprintf('%g\n', up(1:20))
end % of kk loop
  6 Comments
work wolf
work wolf on 23 Jun 2022
@Image Analyst thank you so much again. it's done with edite
up = zeros(kk, n+1);
uc = zeros(kk, n+1);
zp = zeros(kk, n+1);
before loop (for kk = 1 : length(allAlpha) ) and replace kk by length(allAlpha).
Best regards

Sign in to comment.

More Answers (1)

Ayush Kumar Jaiswal
Ayush Kumar Jaiswal on 19 Jun 2022
Edited: Ayush Kumar Jaiswal on 19 Jun 2022
You want to calculate that function at different values of alpha, it can done using
arrayfun (func, arr);

Categories

Find more on Linear Algebra in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by