鱼C论坛

 找回密码
 立即注册
查看: 3201|回复: 9

[已解决]三个变量已知两个,求第三个变量

[复制链接]
发表于 2022-9-29 09:00:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如果等式a^2 +b^2 - c^2 =0
已知变量a和变量b的值,如何求得c的值,因为实际中的等式会更复杂,不希望等式被变形,这个有没有办法定义一个函数求解呢
最佳答案
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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-29 09:47:40 | 显示全部楼层
不就是正常的解方程吗?
def solove(a,b):
    import math
    return math.sqrt(a**2+b**2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

这玩意不就是能求近似值,没有精确值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-29 13:54:40 | 显示全部楼层

我运行了报错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-29 14:59:56 | 显示全部楼层

Python 3.11.0a2 (tags/v3.11.0a2:e2b4e4b, Nov  5 2021, 20:00:05) [MSC v.1929 64 bit (AMD64)] 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-29 15:15:31 | 显示全部楼层

谢谢,理解了。第6行和第9行把函数变形了,我的意思是如果这个函数很复杂,比方a^5 + b^12-c^15=0,可以设定一个函数,输入f(a,b,c),任意输入两个变量,返回第三个变量吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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)

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 05:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表