My for loop is working but can't plot the out put

4 visualizzazioni (ultimi 30 giorni)
format long
l=1/2;
u=1/3;
I=[1,0,0;0,1,0;0,0,1];
A=[1,0,0;0,1,0;0,0,1];
%epsilon = input('Enter accuracy (Eps):');
%A=[6,3,1;8,7,5;3,6,2];
%AdjA= [-16,-1,27;0,9,-27;8,-22,18];
G_1=[1/3,0,0;0,1/2,0;0,0,1];
G_2=[1/4,0,0;0,1/5,0;0,0,1/6];
T=[1,0,0;0,1,0;0,0,1];
F=[1/2,0,0;0,1/2,0;0,0,1/2];
i=1;
x(1)=1;
y(1)=1;
z(1)=1;
X_i=[x(i);y(i);z(i)];
for i = 1:100
a_i = 1/i^(1/2);
t = 1/5;
Z_i = X_i-t*[(I-inv(I+l*G_1))*X_i + A*((I-inv(I+u*G_2)))*A*X_i];
i = i+1
X_i = a_i*F*X_i+(1-a_i)*T*Z_i
E = norm(X_i)
n=[3:1:100];
end
plot(n,E)

Risposta accettata

Mathieu NOE
Mathieu NOE il 16 Nov 2020
hello
your E remains a scalar in your code; I assumed it was supposed to be indexed (with i )
so my suggestion below :
format long
l=1/2;
u=1/3;
I=[1,0,0;0,1,0;0,0,1];
A=[1,0,0;0,1,0;0,0,1];
%epsilon = input('Enter accuracy (Eps):');
%A=[6,3,1;8,7,5;3,6,2];
%AdjA= [-16,-1,27;0,9,-27;8,-22,18];
G_1=[1/3,0,0;0,1/2,0;0,0,1];
G_2=[1/4,0,0;0,1/5,0;0,0,1/6];
T=[1,0,0;0,1,0;0,0,1];
F=[1/2,0,0;0,1/2,0;0,0,1/2];
i=1;
x(1)=1;
y(1)=1;
z(1)=1;
X_i=[x(i);y(i);z(i)];
for i = 1:100
a_i = 1/i^(1/2);
t = 1/5;
Z_i = X_i-t*[(I-inv(I+l*G_1))*X_i + A*((I-inv(I+u*G_2)))*A*X_i];
i = i+1;
X_i = a_i*F*X_i+(1-a_i)*T*Z_i;
E(i) = norm(X_i); % look here
end
n=[3:1:100];
% plot(n,E)
plot(n,E(n)) % and here

Più risposte (1)

Walter iacomacci
Walter iacomacci il 16 Nov 2020
Hi Feeroz, I see what you are trying to dom try this:
format long
l=1/2;
u=1/3;
I=[1,0,0;0,1,0;0,0,1];
A=[1,0,0;0,1,0;0,0,1];
%epsilon = input('Enter accuracy (Eps):');
%A=[6,3,1;8,7,5;3,6,2];
%AdjA= [-16,-1,27;0,9,-27;8,-22,18];
G_1=[1/3,0,0;0,1/2,0;0,0,1];
G_2=[1/4,0,0;0,1/5,0;0,0,1/6];
T=[1,0,0;0,1,0;0,0,1];
F=[1/2,0,0;0,1/2,0;0,0,1/2];
i=1;
x(1)=1;
y(1)=1;
z(1)=1;
X_i=[x(i);y(i);z(i)];
E=0;
for i = 1:100
a_i = 1/i^(1/2);
t = 1/5;
Z_i = X_i-t*[(I-inv(I+l*G_1))*X_i + A*((I-inv(I+u*G_2)))*A*X_i];
i = i+1
X_i = a_i*F*X_i+(1-a_i)*T*Z_i
E(i) = norm(X_i)
n=[0:1:100];
end
plot(n,E)
Basically I changed only 2 things, added a value for E as 0 before the for loop and added that little E(i) inside the loop which will store the value of norm(X_i) in E on the i position every iteration, if you don't include this you will have a flat value of E and thats why you can't see anything when you plot n vs e. Also changed n size since E and n must have equal sizes so you can plot that otherwise you will have plot error because sizes are different.

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Tag

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by