- 论坛徽章:
- 0
|
不需要化成一般形式,也不需要在系数和字母之间加入*号,只需要输入未知数和方程即可,已经打包,代码也在包里
解方程.zip
(2.06 MB, 下载次数: 947)
一下是核心代码(已经先通过另一个函数化成PYTHON的表达式才用这个计算)
一元一次方程:- def solve(eq,var='x'): #利用虚数型解方程
- eq1 = eq.replace("=","-(")+")"
- c = eval(eq1,{var:1j})
- return -c.real/c.imag
复制代码 二元一次方程:- def solve(eqa,eqb,x,y): #利用虚数型解方程
- #两方程整理后分别为ax+by+c=0,dx+ey+f=0 把用来带入方程2的x值放在put,x的终值为root1,y为root2
- eq1 = eqa.replace("=","-(")+")" #方程1移项
- #化简方程1
- eq1=cheaker1(x,y,eq1)
- a = (eval(eq1,{x:1j,y:0})).imag
- b = (eval(eq1,{x:0,y:1j})).imag
- c = (eval(eq1,{x:0,y:1j})).real
- #带入准备
- put = "(-("+str(b)+"y+"+str(c)+")/"+str(a)+")"
- eq2 = eqb.replace("=","-(")+")" #方程2移项
- #将x带入
- two = eq2.replace(x,put)
- #整理y
- two=cheaker1(x,y,two)
- #求y
- two1 = eval(two,{y:1j})
- root2=(-two1.real/two1.imag)
- #将y带入,求x
- one = eq1.replace(y,str(root2))
- one1 = eval(one,{x:1j})
- root1=(-one1.real/one1.imag)
-
- return (root1,root2)
复制代码 一元二次方程:- def solve(eqa,x): #利用虚数型解方程
- #方程整理后为ax^2+bx+c=0
-
- eq1 = eqa.replace("=","-(")+")" #方程移项
- #化简方程1
- c = eval(eq1,{(str(x)+"**2"):0,x:0})
- b =(eval(eq1,{(x+"**2"):0,x:1j})).imag
- a1=c-(eval(eq1,{(x+"**2"):0,x:1j})).real
- a =(eval(eq1,{(x+"**2"):1j,x:0})).imag+a1
- #代入公式
- d=b**2-4*a*c
- if d<=0 : return (None,None) #无实数解
- root1=(-b+sqrt(d))/(2*a)
- root2=(-b-sqrt(d))/(2*a)
-
- return (root1,root2)
复制代码 |
|