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

#全国大学生数学建模竞赛 #MWORKS体验官 打卡第四天

题目
image.png

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

答案
第一题如图所示
image.png

第二题,最小正整数为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
MWORKS体验官全国大学生数学建模竞赛

全部回答

暂无数据
暂无数据
用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天