189 8069 5689

python解方程函数 Python怎么解方程

用python如何得到一个方程的多个解

方法/步骤

创新互联专注于蒙阴网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供蒙阴营销型网站建设,蒙阴网站制作、蒙阴网页设计、蒙阴网站官网定制、成都小程序开发服务,打造蒙阴网络公司原创品牌,更为您提供蒙阴网站排名全网营销落地服务。

用Python解数学方程,需要用到Python的一个库——SymPy库。

SymPy是符号数学的Python库,它的目标是成为一个全功能的计算机代数系统,同时保持代码简洁、易于理解和扩展。

如果你的电脑上还没有安装sympy库,那就赶紧安装吧,安装命令:

pip3 install sympy

请点击输入图片描述

先来解一个简单点的方程吧。

题目: 5x + 20 = 100

先直接上代码:

from sympy import *

x = Symbol('x')

print(solve([5*x + 20 - 100], [x]))

请点击输入图片描述

再来一个复杂点的二元一次方程吧。

题目:3x + 4y =49, 8x- y = 14

代码如下:

from sympy import *

x = Symbol('x')

y = Symbol('y')

print(solve([3*x + 4*y - 49, 8*x - y - 14], [x, y]))

请点击输入图片描述

有没有发现规律呢,简单总结一下:

1)变量赋值,使用symbol函数转换;

2)将方程式移到方程的左边,使右边等于0;

3)使用solve函数解方程。

当然了,python的基础语法必须掌握,至少需要掌握python最基础的算数运算符。

+  加 ---- 两个对象相加

-  减 ----- 得到负数或是一个数减去另一个数

*  乘 ----- 两个数相乘或是返回一个被重复若干次的字符串

/  除 ----- x 除以 y

%  取模 ----- 返回除法的余数

**  幂 ----- 返回x的y次幂

log()  对数-----对数 log()

下面来个难度大点的方程。

请点击输入图片描述

代码如下:

from sympy import *

t = Symbol('t')

x = Symbol('x')

m = integrate(sin(t)/(pi-t), (t, 0, x))

print(integrate(m, (x, 0, pi)))

请点击输入图片描述

怎么用python解一元二次方程

import numpy as np

def solve_quad(a,b,c):

if a == 0:

print('您输入的不是二次方程!')

else:

delta = b*b-4*a*c

x = -b/(2*a)

if delta == 0:

print('方程有惟一解,X=%f'%(x))

return x

elif delta  0:

x1 = x-np.sqrt(delta)/(2*a)

x2 = x+np.sqrt(delta)/(2*a)

print('方程有两个实根:X1=%f,X2=%f'%(x1,x2))

return x1,x2

else:

x1 = (-b+complex(0,1)*np.sqrt((-1)*delta))/(2*a)

x2 = (-b-complex(0,1)*np.sqrt((-1)*delta))/(2*a)

print('方程有两个虚根,如下所示:')

print(x1,x2)

return x1,x2

如何用python计算三元方程

(1) variable = a if exper else b

(2)variable = (exper and [b] or [c])[0]

(2) variable = exper and b or c

上面三种用法都可以达到目的,类似C语言中 variable = exper ? b : c;即:如果exper表达式的值为true则variable = b,否则,variable = c

例如:

a,b=1,2

max = (a if a b else b)

max = (a b and [a] or [b])[0] #list

max = (a b and a or b)

现在大部分高级语言都支持“?”这个三元运算符(ternary operator),它对应的表达式如下:condition ? value if true : value if false。很奇怪的是,这么常用的运算符python居然不支持!诚然,我们可以通过if-else语句表达,但是本来一行代码可以完成的非要多行,明显不够简洁。没关系,在python里其实还是有对应的表达方式的。

在Python下编写一个函数,求方程ax^2+bx+c=0的根,用三个函数分别求当b^2-4ac大于0

import math

a=int(input('请输入a的值:'))

b=int(input('请输入b的值:'))

c=int(input('请输入c的值:'))

derta=(b**2-4*a*c)

if a == 0:

print('您输入的a为0,方程ax^2+bx+c=0不能作为一元二次方程')

elif derta0:

print('方程无实数解')

elif derta==0:

print('方程有解,有一个实数解:')

print(b*(-1)/(a*2))

else:

print('方程有解,有两个实数解:')

print((-1*b+math.sqrt(derta))/2*a)

print((-1*b-math.sqrt(derta))/2*a)

用python解方程问题,

完全的暴力:

i=0

while (~i1) or (i%3!=2) or (i%5!=4) or (i%6!=5):

i+=7

print i

考虑数学上的优化——

设阶梯数为x,则可联立以下同余方程:

x=1(mod 2)

x=2(mod 3)

x=4(mod 5)

x=5(mod 6)

x=0(mod 7)

前四个同余方程又可改写为:

x=2-1=-1(mod 2)

x=3-1=-1(mod 3)

x=5-1=-1(mod 5)

x=6-1=-1(mod 6)

联立得:x=-1(mod lcm(2,3,5,6)=30)

交上最后一个同余方程得:x%30==29且x%7==0

到这步时,便可以再打一个暴力:

i=0

while i%30!=29:

i+=7

print i

考虑继续优化——

原同余方程又可改写为:

x=30*m+29(m∈N)

x=7*n(n∈N+)

联立得:

30*m+29=7*n

即:n=(30*m+29)/7=4*m+4+(2*m+1)/7

∵n∈N+

∴(2*m+1)/7∈N

∴m=3(mod 7)

∴m最小为3,n最小为17,x最小为119

于是有O(1)的程序:

print 119


分享文章:python解方程函数 Python怎么解方程
当前地址:http://cdxtjz.cn/article/dodpoch.html

其他资讯