How can I store the values for a b mid fa fb fmid at every iteration?

1 view (last 30 days)
clear;
clc;
%Use (0, 1) as the initial bracketing interval thus:
a = 0;
b = 1;
%Computing the mid point
mid = (a+b)/2;
%Computing the function f(x) = xe^x - cos(x) at point a,b and mid
format long
fa = (a*exp(a)) - (cos(a));
fb = (b*exp(b)) - (cos(b));
fmid = (mid*exp(mid)) - (cos(mid));
%Code For Loop that identifies the sign and assigns variables accordingly
for k=1:6 %Number of Iterations
if sign(fa) ~= sign(fmid)
b=mid;
else
a=mid;
end
%Compute a b mid fa fb fmid
a;
b;
mid = (a+b)/2;
fa = (a*exp(a)) - (cos(a));
fb = (b*exp(b)) - (cos(b));
fmid = (mid*exp(mid)) - (cos(mid));
end
%Display Last Iteration Values
k
a
b
mid
fa
fb
fmid

Accepted Answer

Image Analyst
Image Analyst on 21 Jan 2022
Not sure what you want to do but you definitely need to add indexes to the array so perhaps it's this:
numberOfIterations = 6;
%Use (0, 1) as the initial bracketing interval thus:
a = zeros(1, numberOfIterations);
b = ones(1, numberOfIterations);
%Computing the mid point
mid = (a + b) / 2;
%Computing the function f(x) = xe^x - cos(x) at point a,b and mid
format long
fa = (a .* exp(a)) - (cos(a));
fb = (b .* exp(b)) - (cos(b));
fmid = (mid .* exp(mid)) - (cos(mid));
%Code For Loop that identifies the sign and assigns variables accordingly
for k = 1 : numberOfIterations % Number of Iterations
if sign(fa) ~= sign(fmid)
b(k)=mid(k);
else
a(k)=mid(k);
end
%Compute a b mid fa fb fmid
a(k);
b(k);
mid(k) = (a(k) + b(k))/2;
fa(k) = (a(k) * exp(a(k))) - (cos(a(k)));
fb(k) = (b(k) * exp(b(k))) - (cos(b(k)));
fmid(k) = (mid(k) * exp(mid(k))) - (cos(mid(k)));
end
%Display Last Iteration Values
k
a
b
mid
fa
fb
fmid
  4 Comments
Torsten
Torsten on 21 Jan 2022
for k=1:6 %Number of Iterations
if sign(fa) ~= sign(fmid)
b=mid;
else
a=mid;
end
%Compute a b mid fa fb fmid
a;
b;
mid = (a+b)/2;
fa = (a*exp(a)) - (cos(a));
fb = (b*exp(b)) - (cos(b));
fmid = (mid*exp(mid)) - (cos(mid));
K(k) = k;
A(k) = a;
B(k) = b;
MID(k) = mid;
FA(k) = fa;
FB(k) = fb;
FMID(k) = fmid;
end
And initialize the arrays K,A,B,MID,FA,FB,FMID before entering the loop.

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!