2013-05-01 5 views
1

У меня есть уравнение, которое я пытаюсь решить, используя NSolve в Mathematica. Вот как я это делаю:Более быстрая альтернатива NSolve

T == (0.000242895 E^(-(2.09472*10^11/(5.70068*10^8 + 
      7.76206*10^12 T))))/(1 + 
    0.969073 E^(-(4.18945*10^11/(5.70068*10^8 + 7.76206*10^12 T))) - 
    1.96883 Cos[8.77331*10^6/(2.28027*10^9 + 7.76206*10^12 T)]) 

NSolve[T == (0.000242895 E^(-(2.09472*10^11/(5.70068*10^8 + 
      7.76206*10^12 T))))/(1 + 
    0.969073 E^(-(4.18945*10^11/(5.70068*10^8 + 7.76206*10^12 T))) - 
    1.96883 Cos[8.77331*10^6/(2.28027*10^9 + 7.76206*10^12 T)]) 
, {T}, Reals] 

Проблема заключается в том, что она занимает много времени (~ 1мин), чтобы найти решение. Есть ли более быстрый способ получить решение, кроме использования NSolve?

+0

Возможно, ограничив интервал для NSolve? – BillyJean

ответ

2

Знаменатель вашего выражения проходит через нуль при приблизительно T = 215. Другое решение T = 0. Если вы хотите, чтобы ненулевое решение просто использовало

где T0 - любое положительное число. Это занимает миллисекунду.

+0

Это подразумевает, что существует только 2 решения: нуль и ненулевое решение. Может случиться так, что есть 3, поэтому я думаю, что мне нужно использовать NSolve – BillyJean

+0

Пределы вашей функции для больших положительных или отрицательных T - это единство. Существует сингулярность около 215. Корень в нуле может быть кратным, но числовые погрешности препятствуют его разрешению. NSolve дает вам 3 корня? Где? – KennyColnago

Смежные вопросы