simple Fixed Point Iteration

조회 수: 7 (최근 30일)
지민 이
지민 이 2021년 11월 7일
댓글: 지민 이 2021년 11월 7일
clear all;
clc;
x(1)=0;
g=@(x) exp(-x);
f=@(x) exp(-x)-x;
true_root=0.56714329;
disp('----------------------------------------------------');
disp('i xi Ea(%) Et(%) ');
disp('----------------------------------------------------');
for i=1:10
x(i+1)=g(x(i));
end
if x~=0
ea=100*abs(x(i+1)-g(x(i))/x(i+1));
end
e_t=100*abs(x-true_root)/true_root;
res=[[0:10]' x' ea' e_t'];
fprintf('%d %1.6f %3.3f %3.3f\n', res');
i want to add the ea. but i can. how can i this??

채택된 답변

Alan Stevens
Alan Stevens 2021년 11월 7일
Probably more like this (though you don't seem to have used function f anywhere):
n = 11;
x = zeros(1,numel(n));
ea = zeros(1,numel(n));
g=@(x) exp(-x);
f=@(x) exp(-x)-x;
true_root=0.56714329;
disp('----------------------------------------');
----------------------------------------
disp('i xi Ea(%) Et(%) ');
i xi Ea(%) Et(%)
disp('----------------------------------------');
----------------------------------------
for i=1:n-1
x(i+1)=g(x(i));
if x(i+1)~= 0
ea(i+1) = 100*abs(x(i+1)-x(i))/x(i+1);
end
end
e_t = 100*abs(x-true_root)/true_root;
res=[(0:n-1)' x' ea' e_t'];
fprintf('%d %10.6f %10.3f %10.3f\n', res');
0 0.000000 0.000 100.000 1 1.000000 100.000 76.322 2 0.367879 171.828 35.135 3 0.692201 46.854 22.050 4 0.500474 38.309 11.755 5 0.606244 17.447 6.894 6 0.545396 11.157 3.835 7 0.579612 5.903 2.199 8 0.560115 3.481 1.239 9 0.571143 1.931 0.705 10 0.564879 1.109 0.399

추가 답변 (0개)

카테고리

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

태그

Community Treasure Hunt

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

Start Hunting!

Translated by