普通会员

HanqinWu

2024.8-至今 澳门理工大学 大数据与物联网

6帖子
15回复
832积分
ID:000368
澳门理工大学
中国澳门
微信公众号:师苑数模,B站:热爱开源的小吴老师
给北太天元社区提建议

  1. 受到aistudio百度飞桨的启发,可以将平台改造成一个可以在线运行代码的平台,其实可以学习anaconda的这样的一种运行模式。按照数学建模国赛,美赛,研赛以及华中杯这样的比赛分赛题进行开源。不过,一般编程这块个人还是喜欢两个都用,我指北太和python。北太不是可以在线运行代码吗?

  2. 因为人工智能比赛和数学建模竞赛有一个区别就是,有的时候需要手动处理数据,也就是说baseline的数据是企业写好的,但是数模竞赛的数据是没有处理好的,需要我们动手划分数据集。这个对于新入门的学生来说是一个坎。

  3. 数学建模竞赛思路五花八门,可以开辟竞赛讨论,晒自己的代码和思路实现思路,挂载数据集,然后搞一个类似markdown的东西出来,这样就可以做成北太的开源社区了。

  4. 看看国产求解器,比如杉数求解器,给优化领域的学者开辟专场。

  5. 联系课本,我觉得这块可以看看类似高等代数,统计学这样的,看看北太在实现统计学方法的时候,是python好用还是北太好用。

  6. 还是要联合学生一起去研究这块,就是提升工科生的数学建模思维,现在几乎是ai+运筹,目前使用matlab学者居多,看看北太有没有更好的功能。不知道啥时仿真实力可以上线。


3 2023-06-23
绘图

  1. 箱型图  文字没有实现

  2. 条形图

    目前团队使用的问题已经反馈了,目前普遍的情况和测试北太的方法是,我会找一段matlab的代码先写一遍,然后刻意去用北太跑一下,然后去看报错。这个目前高校给数学和统计专业开设的编程课程,matlab还是居多的。至少我们学校是这样的。

1 2023-06-23
读取数据不支持

6ab514a2b4b29ad8569b2910ae9a840c.png

读取数据暂不支持该格式文件打开。

0 2025-10-10
2024年春晚魔术代码

% 北大数学揭秘刘谦魔术, 它实际上是约瑟夫(josephus)问题的一个特例

% 北太天元给出一般的约瑟夫问题的求解

% 例如

% 男生对应的是 josephus(7,2), 目标牌在第7个,因此

% josephus(7,2) 看到退出的牌的次序是 2 4 6 1 5 3 7 , 

% 恰好最后一张牌是 7

% 男生对应的是 josephus(6,2) , 目标牌在第五个

% 女生对应的是  josephus(5,2) , 目标牌X 在第三个

function result = josephus(n, m)

    if(nargin <2)

        n = 7;

        m =2;

    end

    if n < 1 || m < 1

        result = [];

        return;

    end

    

    % 创建一个1到n的向量表示围成一圈的人

    people = 1:n; % 编号从0到n-1

    result = []; % 用于存储每次出圈人的顺序

    index = 1; % 从第一个人开始报数

    

    while ~isempty(people) % 当还有人在圈中时

        % 计算要移除的人的索引位置(考虑循环计数的特性)

        index = mod(index - 1 + m, length(people));

        if(index == 0)

            index = length(people);

        end

        % 将出圈的人添加到结果中,并从圈中移除

        result = [result, people(index)];

        people(index) = [];

    end

end

声明:当年跟老师一块弄的。

0 2025-10-10
2025年春晚魔术代码

function result = magic_trick(input_string)

    % 将输入字符串转换为字符数组

    elements = char(input_string);

    

    % 随机打乱顺序

    permutation = elements;

    permutation = permutation(randperm(length(permutation)));

    fprintf('初始排列: %s\n', permutation);

    

    % 定义通用交换函数

    function perm = swap(perm, index, direction)

        if strcmp(direction, 'left') && index > 1

            perm([index-1, index]) = perm([index, index-1]);

        elseif strcmp(direction, 'right') && index < length(perm)

            perm([index+1, index]) = perm([index, index+1]);

        end

    end

    

    % 执行动作

    for i = 1:length(permutation)

        if permutation(i) == 'A'

            permutation = swap(permutation, i, 'left');

        elseif permutation(i) == 'B'

            permutation = swap(permutation, i, 'right');

        elseif permutation(i) == 'C'

            permutation = swap(permutation, i, 'left');

        end

        fprintf('执行动作后排列: %s\n', permutation);

    end

    

    % 检查最右边的元素是否为B

    right_check = permutation(end) == 'B';

    

    if right_check

        result = true;

        fprintf('成功!最右边的元素是B。\n');

    else

        result = false;

        fprintf('失败!最右边的元素不是B。\n');

    end

end


% main_script.m

result = magic_trick("ABC");

fprintf('最终结果: %d\n', result);








%这个是magic_trick.m代码

% main_script.m

% 定义测试次数

num_tests = 10000;

success_count = 0;


for i = 1:num_tests

    result = magic_trick("ABC");

    if result

        success_count = success_count + 1;

    end

end


fprintf('经过 %d 次测试,成功 %d 次。\n', num_tests, success_count);

fprintf('成功率: %.2f%%\n', (success_count / num_tests) * 100);


0 2025-10-10