如何解决 Python 中多变量的限制?



我正在尝试使用 Python 中解决多变量函数(三个变量(的限制sympy但 limit(( 方法仅适用于一个变量;而且,如果我尝试使用 subs,它适用于 2 个参数 f(x, y(,但我需要三个参数 f(x, y, z(。

尝试使用 limit(( 方法:

from sympy import *
import math
x, y, z = symbols('x y z')
exp = limit((x**3 + y*x**2)/sqrt(x**4 + y**2 + z**4), x, 0, y, 0, z, 0)
print(exp)

类型错误:limit(( 需要 3 到 4 个位置参数,但给出了 7

个尝试使用潜艇:

from sympy import *
import math
x, y, z = symbols('x y z')
exp = (x**3 + y*x**2)/sqrt(x**4 + y**2 + z**4)
res_exp = exp.subs([x,0], [y,0], [z,0])
print(res_exp)

值错误:subs 接受 1 或 2 个参数

我不擅长这些任务,但我会尽力帮助你:
您在第一个代码中的错误是:TypeError: limit(( 需要 3
到 4 个位置参数,但给出了 7个,
这段代码是 limit(( 函数,因为这个函数需要 3 个参数应该找到,另外 1 个作为可选参数,如下所示:
1- 表达式 – 要对其执行极限运算的数学表达式,即 f(x(。
2- 变量 – 它是数学表达式中的变量,即 x
3- 值 – 它是极限趋向的值,即 a.Returns
:返回给定条件下数学表达式的极限。

所以,我能做的是我会给你一个提示来解决这个问题,你可以尝试这段代码,然后几乎使用相同的模式。

from sympy import *
import math
x, y, z = symbols('x, y, z')
exp = limit((x**3 + y*x**2)/sqrt(x**4 + y**2 + z**4), (x, 0, y, 0, z, 0), 0)
print(exp)

确保在最后一行放置了 3 或 4 个参数。
我知道这些信息对你来说还不够,但我只是尽力帮助你。

多亏了答案,对我来说工作的方式是制作一个类似于 limit(( 的方法,该方法接受 7 个参数,然后在每个轴变为 0 时计算方程。函数接收方程和要计算的点。

from sympy import *
x, y, z = symbols('x y z')
exp1 = (3*x*z**2*y + y**2) / (x**2 + 2*y**2 + z**4)
exp2 = (x*y + y*z +x*z) / (x**2 + y**2 + z**2)
exp3 = (x*z**2 + 2*y**2) / (x**2 + 2*y**2 + z**4)
def limit3var(eq, var1, val1,var2, val2, var3, val3):
res_eqx = eq.subs([(var2, val2), (var3, val3)]) #x goes to 0.
res_eqy = eq.subs([(var1, val1), (var3, val3)]) #y goes to 0.
res_eqz = eq.subs([(var1, val1), (var2, val2)]) #z goes to 0.
print("Evaluate x-axis : {}".format(res_exp))
print("Evaluate y-axis : {}".format(res_exp2))
print("Evaluate z-axis : {}".format(res_exp3))
if res_exp != res_exp2 or res_exp != res_exp3 or res_exp2 != res_exp3:
print("The limit does not exist in that point: ")
else:
print("The function is continuous in that point")

在控制台中运行:

In[45]: limit3var(exp1, x, 0, y, 0, z, 0)
Evaluate x-axis : 0
Evaluate y-axis : 1/2
Evaluate z-axis : 0
The limit does not exist in that point
In[46]: limit3var(exp2, x, 0, y, 0, z, 0)
Evaluate x-axis : 0
Evaluate y-axis : 0
Evaluate z-axis : 0
The function is continuous
In[47]: limit3var(exp3, x, 0, y, 0, z, 0)
Evaluate x-axis : 0
Evaluate y-axis : 1
Evaluate z-axis : 0
The limit does not exist in that point 

如果有人没有找到subs解决方案,您可以通过编辑代码来做到这一点

from sympy import *
import math
x, y, z = symbols('x y z')
exp = (x**3 + y*x**2)/sqrt(x**4 + y**2 + z**4)
# ***
res_exp = exp.subs(x,0).subs(y,0).subs(z,0)
# ***
print(res_exp)

这对你来说应该很好...

最新更新