MATLAB: with My Fixed Point Iteration Program

AI Thread Summary
The discussion revolves around troubleshooting a Fixed Point Iteration program in MATLAB. The user encounters an error indicating that the output argument "Xs" is not assigned during the function call. Key issues identified include the need to assign a value to "Xs" before the return statement and the incorrect placement of the fprintf command, which should precede the return to ensure it executes. Additionally, the user is advised to ensure proper function definitions and variable assignments to avoid similar errors. This highlights the importance of debugging and understanding function outputs in MATLAB programming.
pjkily
Messages
4
Reaction score
0

Homework Statement


Fixed Point Iteration MATLAB program


Homework Equations


To test for convergence: abs(g'(x))<1


The Attempt at a Solution



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\FixedIterationRoot3.m>FixedIterationRoot3".
 
Physics news on Phys.org
pjkily said:

Homework Statement


Fixed Point Iteration MATLAB program


Homework Equations


To test for convergence: abs(g'(x))<1


The Attempt at a Solution



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\FixedIterationRoot3.m>FixedIterationRoot3".

In your test for divergence you should attribute a value to Xs before returning.
Also the printf command should come before return, otherwise it will not be executed.
 
Back
Top