the loop is not converging it is giving me an infinite value(it is increasing)

1 visualizzazione (ultimi 30 giorni)
clear variables
close all
clc
A = [1 1 2; 1 2 4; 1 2 5];
x = [1; 2; 3];
Error = 0.00001;
Diff= 1;
while Diff>Error
x1=A*x;
Diff=norm(x1-x);
x=x1;
end

Risposte (1)

Torsten
Torsten il 20 Mag 2023
Spostato: Matt J il 20 Mag 2023
Why do you think your fixed-point iteration should converge ?
If the absolute values of the eigenvalues of A were all < 1, it would work. But it is not the case:
A = [1 1 2; 1 2 4; 1 2 5];
eig(A)
ans = 3×1
7.1842 0.5728 0.2430
  5 Commenti
Torsten
Torsten il 20 Mag 2023
Spostato: Matt J il 20 Mag 2023
What do you mean by "make it work" ? It works as you have programmed it and gives you the correct result for the matrix A and the initial vector x: Divergence.
Mahmoud Chawki
Mahmoud Chawki il 20 Mag 2023
Spostato: Matt J il 20 Mag 2023
i found the answer, i need to normalize the new vector before using it again. thank you

Accedi per commentare.

Categorie

Scopri di più su Mathematics in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by