#全国大学生数学建模竞赛 #MWORKS体验官 打卡第四天
主题活动
发布于 2025-08-20 00:15:39
查看 7过去313天
#全国大学生数学建模竞赛 #MWORKS体验官 打卡第四天
题目

思路
第一题:先生成20个原始点数据,然后生成100个插值点,计算他们的sin值,并把他们连起来,最后画出插值之后的图。
第二题:定义了一个find_min_number函数,用于查找满足题目条件的最小数。根据题目条件,应该从7开始循环,所有定义num起始为7,然后计算各位数字之和是否大于20,若大于20,则返回该数。若不大于20,则让num加7,进入下一次循环。因为是从7开始往大的数循环的,所以找到满足的数,即是最小的正整数。
答案
第一题如图所示

第二题,最小正整数为399
代码
# 第一题
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import interp1d
# 生成[0,2pi]的20个数据
x = np.linspace(0, 2 * np.pi, 20)
# 计算20个值对应的sin值
y = np.sin(x)
# 对sim函数进行线性一维插值
f = interp1d(x, y, kind='linear')
# 生成100个新的插值点
x_new = np.linspace(0, 2 * np.pi, 100)
# 计算新插值点的sin值
y_new = f(x_new)
# 绘图,标记为圆形
plt.plot(x, y, 'o', label='原始数据')
# 用实线连接所有点
plt.plot(x_new, y_new, '-', label='线性插值')
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.title('线性插值图')
plt.legend()
plt.show()
# 第二题
def find_min_number():
# 从7开始循环
num = 7
while True:
# 判断能否被7整除
if num % 7 == 0:
# 计算各位数字之和
digit_sum = sum(int(digit) for digit in str(num))
# 判断是否大于20
if digit_sum > 20:
return num
num += 7
result = find_min_number()
print("满足条件的最小正整数为:", result)
所属专栏:其他
产品信息:Syslab Online