网站建设资讯

NEWS

网站建设资讯

python3解方程函数 python解三元方程组

如何用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解方程问题,

完全的暴力:

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解数学方程,需要用到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 二分法解方程

def erfen(low,high):

while low high:

mid=(low+high)/2

if f(low)*f(mid)0:

high=mid

elif f(mid)*f(high )0:

low=mid

return mid

这个函数没有结束 检查一下如何设置退出条件


新闻标题:python3解方程函数 python解三元方程组
转载注明:http://cdweb.net/article/hpoocp.html