三个变量已知两个,求第三个变量
如果等式a^2 +b^2 - c^2 =0已知变量a和变量b的值,如何求得c的值,因为实际中的等式会更复杂,不希望等式被变形,这个有没有办法定义一个函数求解呢 不就是正常的解方程吗?
def solove(a,b):
import math
return math.sqrt(a**2+b**2) 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)
he3080611091 发表于 2022-9-29 09:56
这样函数还是要自己进行手动转化,主要实际计算中函数变换太费力有时候也不好求出来,像W-(k×π×m + S...
这玩意不就是能求近似值,没有精确值 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) jhq999 发表于 2022-9-29 11:58
我运行了报错了 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
jhq999 发表于 2022-9-29 14:59
谢谢,理解了。第6行和第9行把函数变形了,我的意思是如果这个函数很复杂,比方a^5 + b^12-c^15=0,可以设定一个函数,输入f(a,b,c),任意输入两个变量,返回第三个变量吗 本帖最后由 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) 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]