Why does this SIMPLE code not work

2 vues (au cours des 30 derniers jours)
Mak
Mak le 25 Mai 2017
Modifié(e) : Moe_2015 le 25 Mai 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!

Réponses (1)

Moe_2015
Moe_2015 le 25 Mai 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 commentaires
Mak
Mak le 25 Mai 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 le 25 Mai 2017
Modifié(e) : Moe_2015 le 25 Mai 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)

Connectez-vous pour commenter.

Catégories

En savoir plus sur General Applications dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by