wolfram-mathematica - Nsolve什么都不做
问题描述
当我尝试使用 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}]
解决方案
您正在处理巨大的近似十进制数,因此将所有内容都转换为精确的有理数
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)
然后看一个 Plot 来估计一个解在 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 之间有一个解决方案
因此 x==3.092*10^-9 和 x==3.0376*10^-9 之间的解决方案
使用 FindRoot 和边界值来避免更多的数值问题
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}
检查每一步以确保我没有犯任何错误。
推荐阅读
- json - 在 cloudformation 中创建 ELB 时出错
- sas - 使用宏变量在 SAS 中创建列
- google-apps-script - 如何将带有格式(图像,图表等)的谷歌文档整个页面内容从谷歌文档文件复制到谷歌文档脚本编辑器中的另一个文档?
- javascript - 我的图像滑块有问题,真的不知道为什么
- android - 当进度条可见时隐藏片段的内容
- jointjs - 如何用纯JointJS实现Rappid提供的拖拽连接功能?
- javafx - 我可以在不绑定每个小部件的情况下使用窗口 JavaFx 的大小调整场景的大小吗?
- python - 如何在不将可迭代转换为字典的情况下完成任务?
- php - 重新排列数组数据并在新数组php中分开
- mysql - 如何使用 where 命令只使用一次联合?