刚刚开始学习想写一个程序来练手,顺便帮我算多元函数的偏导和对应值但是输出时没有代入函数值而是将原函数转化为浮点数后输出
代码如下:
# -*- coding: utf-8 -*-
#引入模组
import sympy as sp
import numpy as np
import math
def compute(function):
x,y = sp.symbols('x y')
z=function
#计算下,y的偏导
zx=sp.diff(z,x)
zy=sp.diff(z,y)
#返回偏导
return zx,zy
def dairu(x,y):
# 将字符串转换为数值类型
x_value = int(x)
y_value = int(y)
# 计算偏导数在给定点的值
print(zx,zy)
zx_value = zx.evalf(subs={x:x_value,y:y_value})
zy_value = zy.evalf(subs={x:x_value,y:y_value})
print("在点 ({}, {}) 处,zx = {}".format(x_value, y_value, zx_value))
print("在点 ({}, {}) 处,zy = {}".format(x_value, y_value, zy_value))
function=input("请输入想要求导的函数:")
zx,zy= compute(function)
print("zx=",zx)
print("zy=",zy)
#判断是否需要赋值
fuzhi =input("是否需要赋值计算:")
if fuzhi == "yes":
x=input("请输入x的值")
y=input("请输入y的值")
dairu(x,y)
else:
print("谢谢使用")
我用x^2+y^2,x=2,y=3做例子,输出结果如下:
请输入想要求导的函数:x2+y2
zx= 2x
zy= 2y
是否需要赋值计算:yes
请输入x的值2
请输入y的值3
2x 2y
在点 (2, 3) 处,zx = 2.0x
在点 (2, 3) 处,zy = 2.0y
进程已结束,退出代码0
我另外编写了一段代码测试evalf函数发现是可以正常代入的,但是在这边不行,求解答