matlab code for iterative equation

96 views (last 30 days)
segun egbekunle
segun egbekunle on 18 Jun 2016
Commented: Alper Olca on 27 Mar 2020
Please I need matlab code to solve this iterative equation X (k+1)= c+ Tx(k) For k=0,1,2,3… with the input value c, T and x and stops when the iteration converges .
  1 Comment
Star Strider
Star Strider on 18 Jun 2016
Use a while loop. Decide on what ‘converges’ means in this context.
Write your code. If you have problems, post it here, along with any error it throws (copy and paste all the red text in the Command Window to a Comment here).
Experiment! Unless your code somehow manages to connect to the nuclear missile command codes, the world will not come to an end if it throws an error.

Sign in to comment.

Answers (3)

Roger Stafford
Roger Stafford on 18 Jun 2016
If you like the lazy approach to problems, note that if abs(T) < 1, you can rewrite your equation as:
x(k+1)-b = T*(x(k)-b)
where b = c/(1-T), and therefore
x(k+1)-b = T^k*(x(1)-b).
In this form it is obvious what x(k) will converge to, namely b, since x(k)-b must converge to zero. Accordingly, carrying out all those tedious iterations becomes unnecessary. As I say, that is the lazy method.
  1 Comment
Alper Olca
Alper Olca on 27 Mar 2020
x1=5;
x2=5;
x3=5;
x4=5;
td=10^-2;
a=0;
for i= 1:10
a=0+i;
if( (abs(x1-x1)<td && abs(x2-x2)<td) && (abs(x3-x3)<td)&& abs(x4-x4)<td)
x1=(-23+x2-x3+2*x4)/4;
x2=(-21-2*x1+x3-3*x4)/6;
x3=(-11+x1+2*x2-x4)/5;
x4=(22+x1-2*x2+3*x3)/6;
end
k=(4*x1-x2+x3-2*x4);
l=(2*x1+6*x2-x3+3*x4);
m=(-x1-2*x2+5*x3+x4);
n=(-x1+2*x2-3*x3+6*x4);
end
rslt=[k l m n ; x1 x2 x3 x4]

Sign in to comment.


segun egbekunle
segun egbekunle on 26 Jun 2016
Edited: Walter Roberson on 26 Jun 2016
x0=zeros(1,n)';
for k=1 :itmax+1
x= c + T*x;
disp(x)
need improvement for the iteration to stop after obtaining the same value twice
  3 Comments
segun egbekunle
segun egbekunle on 29 Jun 2016
it gives error message at if all(x == xold) and xold(end) = x; i have modified it to num_previous = 2; xold = nan(1, num_previous); for k = 1 : itmax + 1; x= c + G*x;
end
xold(1:end-1) = xold(2:end);
disp(x)
now it converges but i need little modification to display the number of iterations before convergence and to display no convergence when there is no convergence
Alper Olca
Alper Olca on 27 Mar 2020
x1=5;
x2=5;
x3=5;
x4=5;
td=10^-2;
a=0;
for i= 1:10
a=0+i;
if( (abs(x1-x1)<td && abs(x2-x2)<td) && (abs(x3-x3)<td)&& abs(x4-x4)<td)
x1=(-23+x2-x3+2*x4)/4;
x2=(-21-2*x1+x3-3*x4)/6;
x3=(-11+x1+2*x2-x4)/5;
x4=(22+x1-2*x2+3*x3)/6;
end
k=(4*x1-x2+x3-2*x4);
l=(2*x1+6*x2-x3+3*x4);
m=(-x1-2*x2+5*x3+x4);
n=(-x1+2*x2-3*x3+6*x4);
end
rslt=[k l m n ; x1 x2 x3 x4]

Sign in to comment.


segun egbekunle
segun egbekunle on 29 Jun 2016
i have modified my previuos answer to
num_previous = 2; xold = nan(1, num_previous); for k = 1 : itmax + 1; x= c + T*x;
end
xold(1:end-1) = xold(2:end);
disp(x)
now it converges but i need little modification to display the number of iterations before convergence and to display no convergence when there is no convergence

Categories

Find more on Programming in Help Center and File Exchange

Tags

No tags entered yet.

Community Treasure Hunt

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

Start Hunting!