When do I use FindRoot instead of NSolve?
Like Solve, NSolve is designed primarily for solving polynomial equations.
In[1]:= NSolve[4 - r^2 == r, r]
Out[1]= {{r -> -2.56155}, {r -> 1.56155}}
The algebraic methods available in NSolve cannot handle general equations with transcendental functions—for example:
In[2]:= NSolve[4 Cos[r] == r, r]
NSolve::nsmet: This system cannot be solved with the methods available to NSolve.
Out[2]= NSolve[4 Cos[r] == r, r]
FindRoot uses numerical methods for starting at an initial value for the independent variable and locating a solution:
In[3]:= fr = FindRoot[ 4 Cos[r] == r, {r, 1}]
Out[3]= {r -> 1.25235}
Verify that the returned value solves the equation:
In[4]:= (4 Cos[r] - r) /. fr // Chop
Out[4]= 0
FindRoot finds one solution per evaluation. To obtain further solutions with FindRoot, initial values need to be chosen sufficiently close to the other root locations:
In[5]:= Plot[ 4 Cos[r] - r, {r, -2 Pi, 2 Pi}]
In[6]:= FindRoot[ 4 Cos[r] == r, {r, -4}]
Out[6]= {r -> -3.5953}
In[7]:= FindRoot[ 4 Cos[r] == r, {r, -2}]
Out[7]= {r -> -2.13333}
See also the tutorial on numerical equation solving.
Обратиться в службу поддержки
Если у вас есть вопросы о ценах и оплате, активации или сомнения по техническим темам, мы готовы вам помочь.
1-800-WOLFRAM (+1-217-398-0700 для международных звонков)
Служба поддержки
Понедельник-пятница
с 08:00 до 17:00 по центральному времени США
- Регистрация или активация продукта
- Предпродажная информация и заказ
- Помощь в установке и первом запуске
Расширенная техническая поддержка (для правомочных клиентов)
Понедельник-четверг
с 08:00 до 19:00 по центральному времени США
Пятница
с 08:30 до 10:00 и с 11:00 до 17:00 по центральному времени США
- Приоритетная техническая поддержка
- Поддержка по продуктам от экспертов Wolfram
- Помощь специалистов по программированию на Wolfram Language
- Расширенная поддержка установки