he3080611091 发表于 2022-9-29 09:00:16

三个变量已知两个,求第三个变量

如果等式a^2 +b^2 - c^2 =0
已知变量a和变量b的值,如何求得c的值,因为实际中的等式会更复杂,不希望等式被变形,这个有没有办法定义一个函数求解呢

specail 发表于 2022-9-29 09:47:40

不就是正常的解方程吗?
def solove(a,b):
    import math
    return math.sqrt(a**2+b**2)

he3080611091 发表于 2022-9-29 09:56:58

specail 发表于 2022-9-29 09:47
不就是正常的解方程吗?

这样函数还是要自己进行手动转化,主要实际计算中函数变换太费力有时候也不好求出来,像W-(k×π×m + S + m×Z×0.014904384)÷ cos(a)=0这个函数,我想要求得a的值。我想了个办法可以用迭代求出近似值。不知道有没有别的更好的办法
a = None
b = None
c = None
d = 0.000001


def fun_1(a, b):
    c = float(0)
    while a*a + b*b -c*c > d:
      c = c+0.1

    return c



a = float(input('请输入a的值'))
b = float(input('请输入b的值'))


c = fun_1(a, b)
print(c)

wp231957 发表于 2022-9-29 11:57:13

he3080611091 发表于 2022-9-29 09:56
这样函数还是要自己进行手动转化,主要实际计算中函数变换太费力有时候也不好求出来,像W-(k×π×m + S...

这玩意不就是能求近似值,没有精确值

jhq999 发表于 2022-9-29 11:58:05

def fun (a,b,c):
    import math
    if None==c:
      return math.sqrt(a**2+b**2)
    if(None==a):
      a=b
    return math.sqrt(c**2-a**2)

he3080611091 发表于 2022-9-29 13:54:40

jhq999 发表于 2022-9-29 11:58


我运行了报错了

jhq999 发表于 2022-9-29 14:59:56

he3080611091 发表于 2022-9-29 13:54
我运行了报错了


Python 3.11.0a2 (tags/v3.11.0a2:e2b4e4b, Nov5 2021, 20:00:05) on win32
Type "help", "copyright", "credits" or "license()" for more information.
def fun (a,b,c):
    import math
    if None==c:
      return math.sqrt(a**2+b**2)
    if(None==a):
      a=b
    return math.sqrt(c**2-a**2)

print(fun(None,3,5))
4.0
print(fun(4,None,5))
3.0
print(fun(4,5,None))
6.4031242374328485

he3080611091 发表于 2022-9-29 15:15:31

jhq999 发表于 2022-9-29 14:59


谢谢,理解了。第6行和第9行把函数变形了,我的意思是如果这个函数很复杂,比方a^5 + b^12-c^15=0,可以设定一个函数,输入f(a,b,c),任意输入两个变量,返回第三个变量吗

jhq999 发表于 2022-9-29 15:44:13

本帖最后由 jhq999 于 2022-9-29 15:57 编辑

he3080611091 发表于 2022-9-29 15:15
谢谢,理解了。第6行和第9行把函数变形了,我的意思是如果这个函数很复杂,比方a^5 + b^12-c^15=0,可以设 ...
a^5 + b^12-c^15=0
asg*a^apw+bsg*b^bpw+csg*c^cpw=0
a=((-1*(bsg*b^bpw+csg*c^cpw))/asg)^(1/apw)
a=((-1*(1*b^12+-1*c^15))/1)^(1/5)
a=(c^15-b^12)^0.2

def fun (a,b,c,apw,bpw,cpw,asg=1,bsg=1,csg=-1):###apw是a的次幂,asg是正负号,例如-c^3,csg=-1
    if(None==a):
      return ((b**bpw*bsg*-1+c**cpw*csg*-1)*asg)**(1/apw)
    if(None==b):
      return ((a**apw*asg*-1+c**cpw*csg*-1)*bsg)**(1/bpw)
    if(None==c):
      return ((a**apw*asg*-1+b**bpw*bsg*-1)*csg)**(1/cpw)

he3080611091 发表于 2022-9-29 16:10:57

jhq999 发表于 2022-9-29 15:44
a^5 + b^12-c^15=0
asg*a^apw+bsg*b^bpw+csg*c^cpw=0
a=((-1*(bsg*b^bpw+csg*c^cpw))/asg)^(1/apw)


{:10_277:}
页: [1]
查看完整版本: 三个变量已知两个,求第三个变量