Нсольве ничего не делает - PullRequest
0 голосов
/ 25 апреля 2020

Когда я пытаюсь использовать Nsolve для решения двух переменных, он просто возвращает входные данные. Что это значит?

NSolve[{(1 - x)/x^2 == 2*1.2/Pi^2*5.5*10^(-10)*0.5^2*0.06/0.02*(2*Pi*T/(0.51*10^6))^(3/2)*Exp[13.6/T], 
  x*T^(3/2) == (Pi^2/(2*1.2))*67/(2*10^(-15)*5.5*10^(-10)*0.5^2*0.06/0.02*2.7^(3/2))}, {x, T}]

1 Ответ

0 голосов
/ 25 апреля 2020

Вы имеете дело с огромными приблизительными десятичными числами, поэтому превращайте все в точные рациональные числа

Simplify[{(1 - x)/x^2 == 2*(12/10)/Pi^2*(55/10)*10^(-10)*(5/10)^2*(6/100)/(2/100)*
  (2*Pi*T/((51/100)*10^6))^(3/2)*Exp[(136/10)/T], 
  x*T^(3/2) == (Pi^2/(2*(12/10)))*67/(2*10^(-15)*(55/10)*10^(-10)*(5/10)^2*
  (6/100)/(2/100)*(27/10)^(3/2))},x>0&&T>0]

возвращает

{(1 - x)/x^2 == (11*E^(68/(5*T))*Sqrt[3/(34*Pi)]*T^(3/2))/425000000000000000,
  24057*T^(3/2)*x == 33500000000000000000000000000*Sqrt[30]*Pi^2}

при условии x> 0 и T> 0 и т. Д. Со второго уравнение

x == 33500000000000000000000000000*Sqrt[30]*Pi^2/(24057*T^(3/2))

заменить для исключения x из первого уравнения и

Simplify[(1 - (33500000000000000000000000000*Sqrt[30]*Pi^2/(24057*T^(3/2))))/
  (33500000000000000000000000000*Sqrt[30]*Pi^2/(24057*T^(3/2)))^2 ==
   2*(12/10)/Pi^2*(55/10)*10^(-10)*(5/10)^2*(6/100)/(2/100)* 
   (2*Pi*T/((51/100)*10^6))^(3/2)*Exp[(136/10)/T],T>0]

возвращает

33500000000000000000000000000*Sqrt[6]*Pi^2*(210681*Sqrt[5] + 
6700000000000*Sqrt[17]*E^(68/(5*T))*Pi^(3/2)) == 5068352817*T^(3/2)

, а затем посмотреть на график, чтобы оценить местоположение решения в T

Plot[33500000000000000000000000000*Sqrt[6]*Pi^2*(210681*Sqrt[5] + 
  6700000000000*Sqrt[17]*E^(68/(5*T))*Pi^(3/2)) - 5068352817*T^(3/2),{T,10^22,10^23}]

, который показывает, что есть решение между T == 8,4 * 10 ^ 22 и T == 8,5 * 10 ^ 22 * ​​1019 *

и, таким образом, решение между x == 3,092 * 10 ^ -9 и x == 3,0376 * 10 ^ -9

Используйте Find Root с ограничивающими значениями, чтобы избежать дополнительных числовых проблем

FindRoot[{(1 - x)/x^2 == 2*(12/10)/Pi^2*(55/10)*10^(-10)*(5/10)^2*(6/100)/(2/100)*
  (2*Pi*T/((51/100)*10^6))^(3/2)*Exp[(136/10)/T], 
  x*T^(3/2) == (Pi^2/(2*(12/10)))*67/(2*10^(-15)*(55/10)*10^(-10)*(5/10)^2*
  (6/100)/(2/100)*(27/10)^(3/2))},
  {{x,3092*10^-12,30376*10^-13},{T,84*10^21,85*10^21}},WorkingPrecision->32]

, который возвращает

{x -> 3.0625719427168463423734410827584827274789818044761`32.*^-9, 
 T -> 8.45379297284849685875884058676955508420831`32.*^22}

затем

{(1 - x)/x^2==2*(12/10)/Pi^2*(55/10)*10^(-10)*(5/10)^2*(6/100)/(2/100)*
  (2*Pi*T/((51/100)*10^6))^(3/2)*Exp[(136/10)/T], 
 x*T^(3/2)==(Pi^2/(2*(12/10)))*67/(2*10^(-15)*(55/10)*10^(-10)*(5/10)^2*
  (6/100)/(2/100)*(27/10)^(3/2))}/.
{x -> 3.0625719427168463423734410827584827274789818044761`32.*^-9,
 T -> 8.45379297284849685875884058676955508420831`32.*^22}

возвращает

{True,True}

Проверьте каждый шаг этого, чтобы убедиться, что я не ошибся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...