Why does this SIMPLE code not work

1 view (last 30 days)
Mak
Mak on 25 May 2017
Edited: Moe_2015 on 25 May 2017
The first and last f1 return the same result, even though x has been changed along the way. Why is this and how to fix it?
x = 1.5
f1= sin(x) + x*cos(x)
f2 = 2*cos(x)-x*sin(x)
x = x - (f1/f2)
f1
Thank you in advance!

Answers (1)

Moe_2015
Moe_2015 on 25 May 2017
In the last line, you are just printing to the screen the result you got in the 2nd line. If you want f1 to be calculated again you need to do so.
x = 1.5
f1= sin(x) + x*cos(x)
f2 = 2*cos(x)-x*sin(x)
x = x - (f1/f2)
f1_new = sin(x) + x*cos(x) % renamed so you can see that it is different than the original f1.
  2 Comments
Mak
Mak on 25 May 2017
Thanks! I was thinking it might be something like that. I just find it completely illogical. The system should not work like that, but instead always recalculate it. Weird...
Moe_2015
Moe_2015 on 25 May 2017
Edited: Moe_2015 on 25 May 2017
If you want it to work like that you can create an anonymous function making f1 a function handle like this (and f2 also just to remain consistent):
x = 1.5;
f1= @(x) sin(x) + x*cos(x);
f1(x)
f2 = @(x) 2*cos(x)-x*sin(x);
x = x - (f1(x)/f2(x))
f1(x)

Sign in to comment.

Categories

Find more on General Applications in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!