Azzera filtri
Azzera filtri

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

1 visualizzazione (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 Mathematics and Optimization 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