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

조회 수: 1 (최근 30일)
Mahmoud Chawki
Mahmoud Chawki 2023년 5월 20일
이동: Matt J 2023년 5월 20일
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

답변 (1개)

Torsten
Torsten 2023년 5월 20일
이동: Matt J 2023년 5월 20일
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
Torsten
Torsten 2023년 5월 20일
이동: Matt J 2023년 5월 20일
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 2023년 5월 20일
이동: Matt J 2023년 5월 20일
i found the answer, i need to normalize the new vector before using it again. thank you

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Mathematics에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by