Hi all, I am trying to write a Fixed Point Iteration program but when I enter in the command line it kept giving me an error message. Can you please look over my program and tell me what might have gone wrong? Thank you very much!

First, I defined a function in a new M-File:

function y=FUN3(x)
y=5/(sin(x)*exp(-x./2));

Then, I opened up another M-File and wrote the program:

function Xs = FixedIterationRoot3(FUN3,Xest,imax)
syms x FUN3 FunDer3
Xi(1)=Xest;
FUN3=5/(sin(x)*exp(-x./2));
FunDer3 = diff(FUN3) % To find g'(x)

if abs(subs(FunDer3,x,Xest))>=1 % to check if g'(x) diverges
return;
fprintf('not valid')
end

for i=2:imax
Xi(i)=feval(FUN3,Xest);
Xest=Xi(i);
Xs=Xi;
end

When I enter in the command line:
>> xSolutions=FixedIterationRoot3('FUN3',-3,10)

it gave me error message:
syms x FUN3 FunDer3

??? Output argument "Xs" (and maybe others) not assigned during call
to
"C:\Users\Jane\Documents\MATLAB\FixedIterationRoot 3.m>FixedIterationRoot3".

Can you please help me fix something that is wrong or suggest an alternate method for Fixed Point Iteration?

2. Originally Posted by pjkily
Hi all, I am trying to write a Fixed Point Iteration program but when I enter in the command line it kept giving me an error message. Can you please look over my program and tell me what might have gone wrong? Thank you very much!

First, I defined a function in a new M-File:

function y=FUN3(x)
y=5/(sin(x)*exp(-x./2));

Then, I opened up another M-File and wrote the program:

function Xs = FixedIterationRoot3(FUN3,Xest,imax)
syms x FUN3 FunDer3
Xi(1)=Xest;
FUN3=5/(sin(x)*exp(-x./2));
FunDer3 = diff(FUN3) % To find g'(x)

if abs(subs(FunDer3,x,Xest))>=1 % to check if g'(x) diverges
return;
fprintf('not valid')
end

for i=2:imax
Xi(i)=feval(FUN3,Xest);
Xest=Xi(i);
Xs=Xi;
end

When I enter in the command line:
>> xSolutions=FixedIterationRoot3('FUN3',-3,10)

it gave me error message:
syms x FUN3 FunDer3

??? Output argument "Xs" (and maybe others) not assigned during call
to
"C:\Users\Jane\Documents\MATLAB\FixedIterationRoot 3.m>FixedIterationRoot3".

Can you please help me fix something that is wrong or suggest an alternate method for Fixed Point Iteration?

Do not use FUN3 for both a symbolic object and a .m function.

CB

3. I need help with that problem too! ECM 6?

4. Originally Posted by mcnuggets
I need help with that problem too! ECM 6?
yeaaa, haha we're on the same boat

5. Originally Posted by CaptainBlack
Do not use FUN3 for both a symbolic object and a .m function.

CB
so I fixed my program:
function Xs = FixedIterationRoot3(FUN3,Xest,imax)
syms x
Xi(1)=Xest;
FunDer3 = diff('FUN3');

if abs(subs(FunDer3,x,Xest))>=1
return;
fprintf('this function does not converge')
end
for i=2:imax
Xi(i)=feval(FUN3,Xest);
Xest=Xi(i);

end
Xs=Xi;

Apparently, this gives me the same error. I've also noticed that if I do this :
syms x
Xi(1)=Xest;
FunDer3 = diff('FUN3');

it doesn't give me the right derivative, it gives me the number 1. How can I fix this to get the symbolic derivative?