本文目录一览:
- [用Python语言解决高中的古典概率问题: 有A、B两个袋子,A袋中装有4个白](#用Python语言解决高中的古典概率问题: 有A、B两个袋子,A袋中装有4个白)
- 用python解方程问题,
- python怎么做数学函数题
- 使用python解决提到数学题
- 用python如何得到一个方程的多个解
- 如何利用python自学数
用Python语言解决高中的古典概率问题: 有A、B两个袋子,A袋中装有4个白
这是个数学问题,我可以模拟这种情况,测试的次数越多越接近正确答案。(只是接近,毕竟是模拟这个过程)
# coding:utf-8
import random
def test(n, T): # n代表各取n个球 T代表测试的次数
count = 0
count1 = 0
while count1 < T:
a = [0, 0, 0, 0, 1, 1] # 0代表白球,1代表黑球
b = [0, 0, 0, 1, 1, 1, 1]
if int(n) == len(a):
list1 = random.sample(a, n)
for i in list1:
a.remove(i)
list2 = random.sample(b, n)
for i1 in list2:
b.remove(i1)
b.append(i)
a.append(i1)
print(a, b)
count1 += 1
if a.count(0) == 4:
count += 1
print('p = %d/%d' % (count, T))
用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 ≡ -1 (mod 2)
x ≡ -1 (mod 3)
x ≡ -1 (mod 5)
x ≡ -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做数学函数题的方法:
- 打开CMD命令行以后我们先来看一个求平方的函数,如下图所示,用pow即可计算某个数的几次方
- 接下来我们可以运用abs函数来求某一个数的绝对值,如下图所示
- 在遇到小数的时候,我们经常需要舍弃小数的部分直接用整数,那么就可以用floor函数了,但是直接用的话是报错的,如下图所示
- 这个时候我们需要导入math模块,因为floor函数在math模块中,如下图所示
- 接下来我们还会用到math函数中的开平方根的函数sqrt,如下图所示
- 最后我们在应用数学函数的时候可以直接将起赋值给某个变量,然后直接调用该变量即可,如下图所示
使用python解决提到数学题
先设s=25x+20y+60z 再随便设y=0,z=0.得到x=60. 这说明解中的x的范围在[0,60]内. 之后就是在[0,60]范围内寻找这个解的过程了 简单的可以让x取遍从0到60这61个数,找出其中最大的就行了 y的值也做同样遍历.z只取最大的就可以了
max_val, maxy = 0, 0
for x in range(61):
maxy = 200 - x
if maxy > (180 - 3 * x):
maxy = 180 - 3 * x
for y in range(maxy + 1):
z = 200 - x - 2 * y
if z > (180 - 3 * x - y):
z = (180 - 3 * x - y)
if max_val < (25 * x + 20 * y + 60 * z):
max_val = (25 * x + 20 * y + 60 * z)
print("x = %d, y = %d, z = %d, max = %d" % (x, y, z, max_val))
好久没写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]))
有没有发现规律呢,简单总结一下:
- 变量赋值,使用symbol函数转换;
- 将方程式移到方程的左边,使右边等于0;
- 使用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自学数
关于自学python,个人最大的3点经验:
- 找一本浅显易懂,例程比较好的教程,从头到尾看下去。不要看很多本,专注于一本。把里面的例程都手打一遍,搞懂为什么。我当时看的是《简明python教程》,不过这本书不是非常适合零基础初学者。
- 去找一个实际项目练手。我当时是因为要做一个网站,不得已要学python。这种条件下的效果比你平时学一门新语言要好很多。所以最好是要有真实的项目做。可以找几个同学一起做个网站之类。注意,真实项目不一定非要是商业项目,你写一个只是自己会用的博客网站也是真实项目,关键是要核心功能完整。
- 最好能找到一个已经会python的人。问他一点学习规划的建议(上知乎也是个途径),然后在遇到卡壳的地方找他指点。这样会事半功倍。但是,要学会搜索,学会如何更好地提问。没人愿意帮你写作业或是回答“一搜便知”的问题。