数学建模(Python)

数学建模(Python)

循环语句

for i in range(1, 10, 1):
    print(i, end=" ")
#输出:
#1 2 3 4 5 6 7 8 9

i = 1
n = 10
while i < n:
    print(i, end=" ")
#输出:
#1 2 3 4 5 6 7 8 9

输出在同一行并以空格区分写法:在print函数里写end=" "

range(start, end, step)左闭右开所以不包括end,step表示以step个间隔

列表—可修改

#自然语言:输出0到10的所有偶数
a = [x for in x range(1, 10) if x%2 == 0]
print(a)
#输出
#2 4 6 8

元组—不可修改,同列表类似,[]换成()

格式化字符串

print("我叫%s, 今年%d岁了" %("lzl", 100))
#我叫lzl,今年100岁了

字典—>用{}

#字典的声明
tinydict = {'name': 'runoob', 'likes': 123, 'url': 'www.runoob.com'}
#类似于散列表,冒号前为key值,冒号后为value值

集合—>用{},但空集用set()

set1 = {1,2,3,4}
set2 = {2,3,4,5}
print(set1 | set2)
print(set1 & set2)
print(set1 - set2)
print(set1 ^ set2)
'''
set1 = {1,2,3,4}
set2 = {2,3,4,5}
print(set1 | set2)
print(set1 & set2)
print(set1 - set2)
print(set1 ^ set2)
'''

import numpy as np# 用于科学计算的库
import matplotlib.pyplot as plt# 导入matplotlib库中的pyplot模块,并将其命名为plt,pyplot模块提供了类似MATLAB的绘图框架。

x = np.linspace(0, 10, 1000)# 生成一个包含1000个元素的数组,这些元素在0到10之间均匀分布,用于表示x轴上的数值。最后一个参数越大越精确
y = np.sin(x)# 计算数组x中每个元素的正弦值
z = np.cos(x**2)# 计算数组x中每个元素的...值 x**2表示x的平方

# 创建一个新的图形窗口,并指定其大小为宽8英寸,高4英寸。
plt.figure(figsize = (8, 4))

# 绘制以x为横坐标,z为纵坐标的曲线图,标签为sin(x),颜色为红色,线宽为2。
plt.plot(x, y, label = "$sin(x)$", color = "red", linewidth = 2)

# 绘制以x为横坐标,z为纵坐标的曲线图,标签为cos(x^2),颜色为蓝色虚线。两边加$$有点格式化的意思
plt.plot(x, z, "b--", label = "$cos(x^2)$")

# 分别设置x轴标签Time(s)和y轴标签
plt.xlabel("Time(s)")
plt.ylabel("Volt")

# 设置图表标题
plt.title("PyPlot First Example")

# ylim即ylimit 设置y轴的取值范围为-1.2到1.2
plt.ylim(-1.2, 1.2)

# 显示图例
plt.legend()

# 显示图表
plt.show()


在这里插入图片描述


折线图

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 数据示例,假设有5条折线,每条折线有5个数据点
y1 = [2, 4, 1, 5, 2]
y2 = [1, 3, 2, 3, 4]
y3 = [3, 1, 3, 2, 5]
y4 = [4, 2, 3, 1, 3]
y5 = [2, 3, 4, 2, 1]


x = [i for i in range(len(y1))] # 0 1 2 3 4

# 创建一个Figure对象和一个子图
fig, ax = plt.subplots()

# 设置折线的线条样式,颜色和标签
line_styles = ['-', '--', ':', '-.', 'dashdot']

# 线条样式有
line_colors = ['b', 'g', 'r', 'y', 'black'] # 这是线条颜色分别是蓝绿红黄黑
line_labels = ['line 1', 'line 2', 'line 3', 'line 4', 'line 5'] # 这是图例名称
line_widths = [1.5, 2.0, 2.5, 1.0, 1.5] # 调整线条粗细的参数
for i in range(5):
    ax.plot(x, globals()[f'y{i+1}'], linestyle = line_styles[i], color = line_colors[i], label = line_labels[i], linewidth = line_widths[i])

# 添加具体数值
for i in range(len(x)):
    ax.annotate(f'{y1[i]}', (x[i], y1[i]), textcoords = "offset points", xytext = (0, 10), ha = 'center')

# 添加图例
ax.legend()

# 添加横纵坐标标签,fontsize表示字体大小
ax.set_xlabel('x轴', fontsize = 12)
ax.set_ylabel('y轴', fontsize = 12)

# 设置图表标签 fontweight表示字体粗细有normal,bold,light三个参数可选
ax.set_title('折线图', fontsize = 16, fontweight = 'bold')

# 设置刻度标签字体大小 axis='both'不需要改即两个轴都设置 which='major'不用改表示主刻度 labelsize=10也基本不用改表示刻度字体大小10左右就行
ax.tick_params(axis = 'both', which = 'major', labelsize = 10)

#添加网格线linestyle表示网格线形式,alpha表示网格线的透明度
ax.grid(True, linestyle = '--', alpha = 0.7)

# 设置背景颜色 如果将none改为balck或者将该两行注释掉就相当于这是一个封闭的矩形框中画的折线图
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')

# 显示图形
plt.show()

在这里插入图片描述

fig, ax = plt.subplots():创建了一个Figure对象和一个子图。Figure对象是画布,而子图是实际绘图的区域。

第一个for循环是输出5根线,分别包括以下属性:线样式、颜色、线条粗细

第二个for循环添加了具体数值的注释,以展示每个数据点的数值即y点坐标,该函数的textcoords、xyset和ha参数都不需要变


执行区间

import matplotlib.pyplot as plt
import numpy as np

# 示例数据
x = np.linspace(0, 10, 100)
y = np.sin(x)

confidence_interval = 0.2
upper_bound = y+confidence_interval
lower_bound = y-confidence_interval

# 创建一个Figure对象和一个子图
plt.figure(figsize=(10, 6))
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Confidence Intervals')

# 绘制线条
plt.plot(x, y, label = 'Data', color = 'b')

# 执行区间填色
plt.fill_between(x, lower_bound, upper_bound, color = 'lightblue', alpha = 0.5, label = 'Confidence Intervals')

# 添加图例
plt.legend()

# 显示图形
plt.show()

函数调用大致相同,就是多了一个plt.fill_between()函数,这个是填充颜色的函数,几个参数分别是自变量,下界,上界,颜色,透明度和标签

在这里插入图片描述


柱状图

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']# 为了支持中文字体
plt.rcParams['axes.unicode_minus'] = False #上述字库没负号,因此负号不进行字体变换

# 数据示例,假设有5个数据的高度
heights = [5, 17, 13, 4, 6]
x = [i for i in range(len(heights))]

# 创建一个Figure对象和一个子图
fig, ax = plt.subplots()

# 不同柱子的颜色
colors = ['blue', 'green', 'red', 'purple', 'orange']

# 绘制柱状图
width = 0.5 # 宽度

# 绘制
for i in range(len(heights)):
    bar = ax.bar(x[i], heights[i], width, color = colors[i], label = f'Bar{i+1}')
    height = bar[0].get_height()
    ax.annotate(f'{height}', xy = (bar[0].get_x()+bar[0].get_width()/2, height), xytext = (0, 3),
                textcoords="offset points", ha = 'center', va = 'bottom')# 在柱状图上添加对应数据

    ax.plot(x, globals()[f'heights'], linestyle='solid', color='black', label='line1',
                linewidth=2)

# 添加图例
plt.legend(fontsize = 12, loc = 'best');

# 添加横纵坐标label
ax.set_xlabel('X轴', fontsize = 14, fontweight = 'bold')
ax.set_ylabel('Y轴', fontsize = 14, fontweight = 'bold')

# 设置y范围
plt.ylim([0, 20])

# 设置图表标题
ax.set_title('柱状图', fontsize = 16, fontweight = 'bold')

# 设置刻度标签
ax.set_xticks(x)
ax.set_xticklabels([f'Bar{i+1}' for i in range(len(heights))], fontsize = 12, fontweight = 'bold')

# 设置网格线 只画横向的axis = y如果是axis = 'both'或者True就是横纵都画
ax.grid(axis = 'y', linestyle = '--', alpha = 0.7)

# 设置背景颜色
ax.set_facecolor('#f0f0f0')

# 去除图表边框
for spine in ax.spines.values():
    spine.set_visible(False)

# 显示图形
plt.show()


在这里插入图片描述

数学建模是一种通过数学方法来解决实际问题的过程。在数学建模中,找到合适的模型是关键,而不是手写算法求解。因此,使用Python进行数学建模是一个很好的选择。Python拥有丰富的包和库,可以轻松地进行数学建模。通过使用这些包,可以快速下载和使用各种功能强大的工具。使用Python进行数学建模可以提高效率,并且可以避免手写算法时可能出现的错误。同时,Python的语法简单易懂,使用起来非常流畅。因此,使用Python进行数学建模是一个简单而有效的方法。\[1\]\[2\] 在Python中,可以使用各种包来进行数学建模。例如,如果想要进行二次插值,可以使用matplotlib、numpy和scipy包。下面是一个使用这些包进行二次插值的示例代码: ```python import matplotlib import numpy as np from matplotlib import pyplot as plt from scipy import interpolate font = { "family": "Microsoft YaHei" } matplotlib.rc("font", **font) # 创建数据点集 x = np.linspace(0, 10, 11) y = np.sin(x) # 得到插值函数 f = interpolate.interp1d(x, y, kind='quadratic') # 新数据 x_new = np.linspace(0, 10, 101) y_new = f(x_new) # 可视化 plt.plot(x, y, 'o', x_new, y_new, '-') plt.show() ``` 这段代码使用了matplotlib包来进行可视化,numpy包来处理数值计算,scipy包中的interpolate模块来进行插值计算。通过这些包的组合,可以方便地进行数学建模,并得到想要的结果。\[3\] #### 引用[.reference_title] - *1* *2* [使用python进行数学建模系列1 读表格 +简单处理+ 画图简单入门 代码可直接运行](https://blog.csdn.net/m0_62579137/article/details/126487961)[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^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Python数学建模系列(四):数值逼近](https://blog.csdn.net/weixin_44225182/article/details/119922826)[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^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值