数学建模-day1

一、位运算符

1.bin() 将整数转换为二进制

2.~x=-(x+1)

3.<<按位左移 5<<2=20

4.>>安慰友谊并去掉小数部分  5>>2=1

5.&

6.|

7.^

二、利用泰勒公式(麦克劳林公式)计算数学函数

from math import *
n=0 ;x1=float(input("请输入角度:"))
#将角度x1转化为弧度x
x=radians(x1)
s=a=x
while abs(a)>=1e-6 :
    a *= -x*x/(2*n+3)/(x*n+2)
    n+=1;s+=a
print(f"x={x1},sin(x)={s}")

三、几个序列操作函数

1.map()函数

接收一个函数和一个列表

map(func,*iterables)

a=map(pow,range(6),[2 for b in range(6)])
print(list(a))
# 输出[0, 1, 4, 9, 16, 25]
def f(x,y):
    return x*y
a=map(f,[1,3,5],[3,4,6])
print(list(a))
print(type(a))
# 输出:[3, 12, 30]
# <class 'map'>
def f(x,y):
    return x*y
a=map(f,[1,3,5],[3,4,6,10])
print(list(a))
print(type(a))
# 输出:[3, 12, 30]
# <class 'map'>

2.reduce()函数

reduce(function,sequence[,initial])

其中function是带有两个参数的函数,sequence是元组、列表、字典和字符串等可迭代对象,initial是可选的初始值。

from functools import reduce
print(reduce(lambda x,y:x*y,range(1,6)))

3.filter()函数

def check(x):
        if(x%3==0):  return True
print(list(filter(check,range(1,20))))
#output: [3, 6, 9, 12, 15, 18]
print(list(filter(None,range(1,20))))
#output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

4.zip()函数

与 zip 相反,zip(*) 可理解为解压,可用于矩阵的转置

a=range(1,5)
b=range(5,11)
c=zip(a,b)
print(list(c))
print(list(zip(*zip(a,b))))
#output: [(1, 5), (2, 6), (3, 7), (4, 8)]
#        [(1, 2, 3, 4), (5, 6, 7, 8)]

5.enumerate()函数

a=[(1,4),(2,5),(3,6)]
for b in enumerate(a): print(b)
#output: (0, (1, 4))
#(1, (2, 5))
#(2, (3, 6))

四、列表推导式

a=[(1,4),(2,5),(3,6)]
print([value[0] for (ind,value) in enumerate(a)])
print([value[1] for (ind,value) in enumerate(a)])
print([[0]*6 for i in range(4)])
m=[(1,2,3),(4,5,6),(7,8,9)]
print([d for c in m for d in c])
n=[-1,-2,6,8,-10,3]
print([i for i in n if i>0])
print([(x,y) for x in range(5) for y in range(5) if x%2==1 if y%2==0])

五,元组生成器推导式

g1=((i+1)**2 for i in range(6))

 g1既不是列表,也不是元组,而是一个生成器对象,可tuple(g1)/list(g1)

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用和引用的内容,如果要在数学建模中使用Python来穿越沙漠,可以考虑使用动态规划作为主要的求解方法。可以使用Python编写代码来实现动态规划算法,并根据问题的需求来定义状态转移方程和约束条件。 例如,引用中提到的状态转移方程可以用Python代码实现如下: ```python # 初始化dp数组 dp = [[[0 * (max_water + 1) for _ in range(max_food + 1)] for _ in range(max_days + 1)] # 动态规划求解 for k in range(1, max_days + 1): for jj in range(num_states): for w in range(max_water + 1): for f in range(max_food + 1): if not is_sandstorm_day(k): # 更新状态转移方程 dp[k][jj][w][f = max(dp[k-1][j][w-walk*xh_water[tq]][f-walk*xh_food[tq]] for j in range(num_states)) ``` 在上述代码中,`dp`代表状态数组,`k`表示第k天,`jj`表示状态,`w`表示剩余的水量,`f`表示剩余的食物量。`max_days`、`max_water`、`max_food`分别表示最大天数、最大水量和最大食物量。`is_sandstorm_day(k)`用来判断第k天是否是沙暴天气。 需要注意的是,以上只是一个示例,具体的数学建模问题可能需要根据实际情况进行适当的调整和修改。 综上所述,可以使用Python编程语言来进行穿越沙漠的数学建模。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [数学建模2020B题穿越沙漠](https://blog.csdn.net/qq_21561833/article/details/122783459)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值