courses

http://www.youku.com/playlist_show/id_6035163.html     加州大学洛杉矶分校  概率论


http://www.youku.com/playlist_show/id_862741.html      清华大学  考研辅导  概率论

内容概要:本文详细介绍了一种基于Simulink的表贴式永磁同步电机(SPMSM)有限控制集模型预测电流控制(FCS-MPCC)仿真系统。通过构建PMSM数学模型、坐标变换、MPC控制器、SVPWM调制等模块,实现了对电机定子电流的高精度跟踪控制,具备快速动态响应和低稳态误差的特点。文中提供了完整的仿真建模步骤、关键参数设置、核心MATLAB函数代码及仿真结果分析,涵盖转速、电流、转矩和三相电流波形,验证了MPC控制策略在动态性能、稳态精度和抗负载扰动方面的优越性,并提出了参数自整定、加权代价函数、模型预测转矩控制和弱磁扩速等优化方向。; 适合人群:自动化、电气工程及其相关专业本科生、研究生,以及从事电机控制算法研究与仿真的工程技术人员;具备一定的电机原理、自动控制理论和Simulink仿真基础者更佳; 使用场景及目标:①用于永磁同步电机模型预测控制的教学演示、课程设计或毕业设计项目;②作为电机先进控制算法(如MPC、MPTC)的仿真验证平台;③支撑科研中对控制性能优化(如动态响应、抗干扰能力)的研究需求; 阅读建议:建议读者结合Simulink环境动手搭建模型,深入理解各模块间的信号流向与控制逻辑,重点掌握预测模型构建、代价函数设计与开关状态选择机制,并可通过修改电机参数或控制策略进行拓展实验,以增强实践与创新能力。
根据原作 https://pan.quark.cn/s/23d6270309e5 的源码改编 湖北省黄石市2021年中考数学试卷所包含的知识点广泛涉及了中学数学的基础领域,涵盖了实数、科学记数法、分式方程、几何体的三视图、立体几何、概率统计以及代数方程等多个方面。 接下来将对每道试题所关联的知识点进行深入剖析:1. 实数与倒数的定义:该题目旨在检验学生对倒数概念的掌握程度,即一个数a的倒数表达为1/a,因此-7的倒数可表示为-1/7。 2. 科学记数法的运用:科学记数法是一种表示极大或极小数字的方法,其形式为a×10^n,其中1≤|a|<10,n为整数。 此题要求学生运用科学记数法表示一个天文单位的距离,将1.4960亿千米转换为1.4960×10^8千米。 3. 分式方程的求解方法:考察学生解决包含分母的方程的能力,题目要求找出满足方程3/(2x-1)=1的x值,需通过消除分母的方式转化为整式方程进行解答。 4. 三视图的辨认:该题目测试学生对于几何体三视图(主视图、左视图、俯视图)的认识,需要识别出具有两个相同视图而另一个不同的几何体。 5. 立体几何与表面积的计算:题目要求学生计算由直角三角形旋转形成的圆锥的表面积,要求学生对圆锥的底面积和侧面积公式有所了解并加以运用。 6. 统计学的基础概念:题目涉及众数、平均数、极差和中位数的定义,要求学生根据提供的数据信息选择恰当的统计量。 7. 方程的整数解求解:考察学生在实际问题中进行数学建模的能力,通过建立方程来计算在特定条件下帐篷的搭建方案数量。 8. 三角学的实际应用:题目通过在直角三角形中运用三角函数来求解特定线段的长度。 利用正弦定理求解AD的长度是解答该问题的关键。 9. 几何变换的应用:题目要求学生运用三角板的旋转来求解特定点的...
Python基于改进粒子群IPSO与LSTM的短期电力负荷预测研究内容概要:本文围绕“Python基于改进粒子群IPSO与LSTM的短期电力负荷预测研究”展开,提出了一种结合改进粒子群优化算法(IPSO)与长短期记忆网络(LSTM)的混合预测模型。通过IPSO算法优化LSTM网络的关键参数(如学习率、隐层节点数等),有效提升了模型在短期电力负荷预测中的精度与收敛速度。文中详细阐述了IPSO算法的改进策略(如引入自适应惯性权重、变异机制等),增强了全局搜索能力与避免早熟收敛,并利用实际电力负荷数据进行实验验证,结果表明该IPSO-LSTM模型相较于传统LSTM、PSO-LSTM等方法在预测准确性(如MAE、RMSE指标)方面表现更优。研究为电力系统调度、能源管理提供了高精度的负荷预测技术支持。; 适合人群:具备一定Python编程基础、熟悉基本机器学习算法的高校研究生、科研人员及电力系统相关领域的技术人员,尤其适合从事负荷预测、智能优化算法应用研究的专业人士。; 使用场景及目标:①应用于短期电力负荷预测,提升电网调度的精确性与稳定性;②为优化算法(如粒子群算法)与深度学习模型(如LSTM)的融合应用提供实践案例;③可用于学术研究、毕业论文复现或电力企业智能化改造的技术参考。; 阅读建议:建议读者结合文中提到的IPSO与LSTM原理进行理论学习,重点关注参数优化机制的设计思路,并动手复现实验部分,通过对比不同模型的预测结果加深理解。同时可拓展尝试将该方法应用于其他时序预测场景。
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h>//输入输出函数 #include <stdlib.h>//标准库函数 #define MAX_COURSES 100//设置最大课程数量 #define MAX_STUDENTS 100//设置最大学生数量 // 课程结构体 typedef struct { int id; char name[50]; char nature[20]; int total_hours; int teaching_hours; int experiment_hours; int credits; int semester;//仅支持输入数字,例如“1”代表“第一学期” int selected_count;//选择该课程人数 } Course; // 学生结构体 typedef struct { int id; char name[50]; int selected_courses[MAX_COURSES];// 已选课程的编号列表,可存储一百个课程编号 int course_count;// 已选课程数量 int total_credits;// 已选课程总学分 } Student; //计数器存储所有课程与学生数据 Course courses[MAX_COURSES];//存储所有课程的数组 int course_count = 0;//初始化课程数 Student students[MAX_STUDENTS];// 存储所有学生的数组 int student_count = 0;//初始化学生总数 // 菜单显示 void menu() { printf("\n学生选修课程系统\n"); printf("1. 录入课程信息\n"); printf("2. 录入学生信息\n"); printf("3. 浏览课程信息\n"); printf("4. 按课程性质查询课程\n"); printf("5. 按学分查询课程\n"); printf("6. 按课程编号查询课程\n"); printf("7. 查看某门课程学生选修情况\n"); printf("8. 退出\n"); printf("请输入你的选择: "); } // 录入课程信息 void input_course_info() { if (course_count >= MAX_COURSES) { printf("课程数量已达到上限!\n"); return; } Course new_course; char temp[9]; int valid; do { printf("请输入8位课程编号: "); scanf("%8s", temp); // 限制输入8字符 // 验证数字格式 valid = 1; for (int i = 0; i < 8; i++) { if (!isdigit(temp[i])) { printf("输入编号不足8位或包含非数字字符!\n"); valid = 0; break; } } if (valid) new_course.id = atoi(temp); } while (!valid); int id = new_course.id; printf("你输入的有效的课程编号是: %d\n", id); scanf("%*[^\n]");// 读取除换行符之外的所有字符 printf("请输入课程名称: "); scanf("%s", new_course.name); printf("请输入课程性质(必修课、选修课): "); scanf("%s", new_course.nature); do { printf("请输入总学时: "); scanf("%d", &new_course.total_hours); printf("请输入授课学时: "); scanf("%d", &new_course.teaching_hours); printf("请输入上机学时: "); scanf("%d", &new_course.experiment_hours); if (new_course.teaching_hours + new_course.experiment_hours != new_course.total_hours) { printf("授课学时与上机学时之和不等于总学时,请重新输入!\n"); } } while (new_course.teaching_hours + new_course.experiment_hours != new_course.total_hours); printf("请输入学分: "); scanf("%d", &new_course.credits); printf("请输入开课学期: "); scanf("%d", &new_course.semester);//仅支持输入数字,例如“1”代表“第一学期” new_course.selected_count = 0; courses[course_count++] = new_course;//存入数组后,更新自增 printf("课程信息录入成功!\n"); } // 录入学生信息 void input_student_info() { if (student_count >= MAX_STUDENTS) { printf("学生数量已达到上限!\n"); return; } Student new_student; printf("请输入学生编号: "); scanf("%d", &new_student.id); printf("请输入学生姓名: "); scanf("%s", new_student.name); new_student.course_count = 0; new_student.total_credits = 0; int choice; do { printf("请选择课程编号(输入 0 结束选课): "); scanf("%d", &choice); if (choice == 0) break; int found = 0; for (int i = 0; i < course_count; i++) { if (courses[i].id == choice) { found = 1; // 检查是否重复选课 int is_duplicate = 0; for (int j = 0; j < new_student.course_count; j++) { if (new_student.selected_courses[j] == choice) { is_duplicate = 1; printf("该课程已选,请重新选择!\n"); break; } } if (!is_duplicate) { new_student.selected_courses[new_student.course_count++] = choice; new_student.total_credits += courses[i].credits; courses[i].selected_count++; } break; } } if (found==0) { printf("未找到该课程编号,请重新输入!\n"); } } while (1);//保持真,无限循环 if (new_student.total_credits < 30) { printf("选课总学分少于 30,请继续选课!\n"); return; } students[student_count++] = new_student; printf("学生信息录入成功!\n"); } // 浏览课程信息 void browse_course_info() { printf("\n课程信息如下:\n"); printf("%-10s %-15s %-10s %-8s %-10s %-10s %-6s %-8s %-8s\n", "编号", "名称", "性质", "总学时", "授课学时", "实验学时", "学分", "开课学期", "选修人数"); for (int i = 0; i < course_count; i++) { printf("%-10d %-15s %-10s %-8d %-10d %-10d %-6d %-8d %-8d\n", courses[i].id, courses[i].name, courses[i].nature, courses[i].total_hours, courses[i].teaching_hours, courses[i].experiment_hours, courses[i].credits, courses[i].semester, courses[i].selected_count); } } // 按课程性质查询课程 void query_by_nature() { char nature[20]; printf("请输入课程性质(必修课、选修课): "); scanf("%s", nature); printf("\n符合条件的课程信息如下:\n"); printf("%-10s %-15s %-10s %-8s %-10s %-10s %-6s %-8s %-8s\n", "编号", "名称", "性质", "总学时", "授课学时", "实验学时", "学分", "开课学期", "选修人数"); for (int i = 0; i < course_count; i++) { if (strcmp(courses[i].nature, nature) == 0) {//判断性质是否一致 printf("%-10d %-15s %-10s %-8d %-10d %-10d %-6d %-8d %-8d\n", courses[i].id, courses[i].name, courses[i].nature, courses[i].total_hours, courses[i].teaching_hours, courses[i].experiment_hours, courses[i].credits, courses[i].semester, courses[i].selected_count); } } } // 按学分查询课程 void query_by_credits() { int credits; printf("请输入学分: "); scanf("%d", &credits); printf("\n符合条件的课程信息如下:\n"); printf("%-10s %-15s %-10s %-8s %-10s %-10s %-6s %-8s %-8s\n", "编号", "名称", "性质", "总学时", "授课学时", "实验学时", "学分", "开课学期", "选修人数"); for (int i = 0; i < course_count; i++) { if (courses[i].credits == credits) {//判断学分是否一致 printf("%-10d %-15s %-10s %-8d %-10d %-10d %-6d %-8d %-8d\n", courses[i].id, courses[i].name, courses[i].nature, courses[i].total_hours, courses[i].teaching_hours, courses[i].experiment_hours, courses[i].credits, courses[i].semester, courses[i].selected_count); } } } // 按课程编号查询课程 void query_by_id() { int id; printf("请输入课程编号: "); scanf("%d", &id); for (int i = 0; i < course_count; i++) { if (courses[i].id == id) { printf("\n符合条件的课程信息如下:\n"); printf("%-10s %-15s %-10s %-8s %-10s %-10s %-6s %-8s %-8s\n", "编号", "名称", "性质", "总学时", "授课学时", "实验学时", "学分", "开课学期", "选修人数"); printf("%-10d %-15s %-10s %-8d %-10d %-10d %-6d %-8d %-8d\n", courses[i].id, courses[i].name, courses[i].nature, courses[i].total_hours, courses[i].teaching_hours, courses[i].experiment_hours, courses[i].credits, courses[i].semester, courses[i].selected_count); return; } } printf("未找到该课程编号!\n"); } // 查看某门课程学生选修情况 void view_course_selection() { int id; printf("请输入课程编号: "); scanf("%d", &id); int found = 0; for (int i = 0; i < course_count; i++) { if (courses[i].id == id) { found = 1; printf("课程 %s 的选修学生信息如下:\n", courses[i].name); printf("%-12s %-15s\n", "学生编号", "学生姓名"); for (int j = 0; j < student_count; j++) {//遍历学生数组 for (int k = 0; k < students[j].course_count; k++) {//遍历该学生选课数组 if (students[j].selected_courses[k] == id) { printf("%-12d %-15s\n", students[j].id, students[j].name); break; } } } break; } } if (found==0) { printf("未找到该课程编号!\n"); } } //主函数main int main() { int choice; do { menu();//显示菜单 scanf("%d", &choice); switch (choice) {//根据选择执行对应函数 case 1: input_course_info(); break; case 2: input_student_info(); break; case 3: browse_course_info(); break; case 4: query_by_nature(); break; case 5: query_by_credits(); break; case 6: query_by_id(); break; case 7: view_course_selection(); break; case 8: printf("退出系统!\n"); break; default: printf("无效的选择,请重新输入!\n"); } } while (choice != 8); return 0; }学生第一次选课
09-20
要在 C 语言编写的学生选修课程系统中解决学生第一次选课的重复选课问题,需要在学生选课逻辑里添加检查机制,以此保证同一学生不会重复选择同一门课程。以下是修改后的代码: ```c #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #define MAX_COURSES 100 #define MAX_STUDENTS 100 // 课程结构体 typedef struct { int id; char name[50]; char nature[20]; int total_hours; int teaching_hours; int experiment_hours; int credits; int semester; int selected_count; } Course; // 学生结构体 typedef struct { int id; char name[50]; int selected_courses[MAX_COURSES]; int course_count; int total_credits; } Student; // 计数器存储所有课程与学生数据 Course courses[MAX_COURSES]; int course_count = 0; Student students[MAX_STUDENTS]; int student_count = 0; // 菜单显示 void menu() { printf("\n学生选修课程系统\n"); printf("1. 录入课程信息\n"); printf("2. 录入学生信息\n"); printf("3. 浏览课程信息\n"); printf("4. 按课程性质查询课程\n"); printf("5. 按学分查询课程\n"); printf("6. 按课程编号查询课程\n"); printf("7. 查看某门课程学生选修情况\n"); printf("8. 退出\n"); printf("请输入你的选择: "); } // 录入课程信息 void input_course_info() { if (course_count >= MAX_COURSES) { printf("课程数量已达到上限!\n"); return; } Course new_course; char temp[9]; int valid; do { printf("请输入8位课程编号: "); scanf("%8s", temp); valid = 1; for (int i = 0; i < 8; i++) { if (!isdigit(temp[i])) { printf("输入编号不足8位或包含非数字字符!\n"); valid = 0; break; } } if (valid) new_course.id = atoi(temp); } while (!valid); int id = new_course.id; printf("你输入的有效的课程编号是: %d\n", id); scanf("%*[^\n]"); printf("请输入课程名称: "); scanf("%s", new_course.name); printf("请输入课程性质(必修课、选修课): "); scanf("%s", new_course.nature); do { printf("请输入总学时: "); scanf("%d", &new_course.total_hours); printf("请输入授课学时: "); scanf("%d", &new_course.teaching_hours); printf("请输入上机学时: "); scanf("%d", &new_course.experiment_hours); if (new_course.teaching_hours + new_course.experiment_hours != new_course.total_hours) { printf("授课学时与上机学时之和不等于总学时,请重新输入!\n"); } } while (new_course.teaching_hours + new_course.experiment_hours != new_course.total_hours); printf("请输入学分: "); scanf("%d", &new_course.credits); printf("请输入开课学期: "); scanf("%d", &new_course.semester); new_course.selected_count = 0; courses[course_count++] = new_course; printf("课程信息录入成功!\n"); } // 录入学生信息 void input_student_info() { if (student_count >= MAX_STUDENTS) { printf("学生数量已达到上限!\n"); return; } Student new_student; printf("请输入学生编号: "); scanf("%d", &new_student.id); printf("请输入学生姓名: "); scanf("%s", new_student.name); new_student.course_count = 0; new_student.total_credits = 0; int choice; do { printf("请选择课程编号(输入 0 结束选课): "); scanf("%d", &choice); if (choice == 0) break; int found = 0; for (int i = 0; i < course_count; i++) { if (courses[i].id == choice) { found = 1; // 检查是否重复选课 int is_duplicate = 0; for (int j = 0; j < new_student.course_count; j++) { if (new_student.selected_courses[j] == choice) { is_duplicate = 1; printf("该课程已选,请重新选择!\n"); break; } } if (!is_duplicate) { new_student.selected_courses[new_student.course_count++] = choice; new_student.total_credits += courses[i].credits; courses[i].selected_count++; } break; } } if (found == 0) { printf("未找到该课程编号,请重新输入!\n"); } } while (1); if (new_student.total_credits < 30) { printf("选课总学分少于 30,请继续选课!\n"); return; } students[student_count++] = new_student; printf("学生信息录入成功!\n"); } // 浏览课程信息 void browse_course_info() { printf("\n课程信息如下:\n"); printf("%-10s %-15s %-10s %-8s %-10s %-10s %-6s %-8s %-8s\n", "编号", "名称", "性质", "总学时", "授课学时", "实验学时", "学分", "开课学期", "选修人数"); for (int i = 0; i < course_count; i++) { printf("%-10d %-15s %-10s %-8d %-10d %-10d %-6d %-8d %-8d\n", courses[i].id, courses[i].name, courses[i].nature, courses[i].total_hours, courses[i].teaching_hours, courses[i].experiment_hours, courses[i].credits, courses[i].semester, courses[i].selected_count); } } // 按课程性质查询课程 void query_by_nature() { char nature[20]; printf("请输入课程性质(必修课、选修课): "); scanf("%s", nature); printf("\n符合条件的课程信息如下:\n"); printf("%-10s %-15s %-10s %-8s %-10s %-10s %-6s %-8s %-8s\n", "编号", "名称", "性质", "总学时", "授课学时", "实验学时", "学分", "开课学期", "选修人数"); for (int i = 0; i < course_count; i++) { if (strcmp(courses[i].nature, nature) == 0) { printf("%-10d %-15s %-10s %-8d %-10d %-10d %-6d %-8d %-8d\n", courses[i].id, courses[i].name, courses[i].nature, courses[i].total_hours, courses[i].teaching_hours, courses[i].experiment_hours, courses[i].credits, courses[i].semester, courses[i].selected_count); } } } // 按学分查询课程 void query_by_credits() { int credits; printf("请输入学分: "); scanf("%d", &credits); printf("\n符合条件的课程信息如下:\n"); printf("%-10s %-15s %-10s %-8s %-10s %-10s %-6s %-8s %-8s\n", "编号", "名称", "性质", "总学时", "授课学时", "实验学时", "学分", "开课学期", "选修人数"); for (int i = 0; i < course_count; i++) { if (courses[i].credits == credits) { printf("%-10d %-15s %-10s %-8d %-10d %-10d %-6d %-8d %-8d\n", courses[i].id, courses[i].name, courses[i].nature, courses[i].total_hours, courses[i].teaching_hours, courses[i].experiment_hours, courses[i].credits, courses[i].semester, courses[i].selected_count); } } } // 按课程编号查询课程 void query_by_id() { int id; printf("请输入课程编号: "); scanf("%d", &id); for (int i = 0; i < course_count; i++) { if (courses[i].id == id) { printf("\n符合条件的课程信息如下:\n"); printf("%-10s %-15s %-10s %-8s %-10s %-10s %-6s %-8s %-8s\n", "编号", "名称", "性质", "总学时", "授课学时", "实验学时", "学分", "开课学期", "选修人数"); printf("%-10d %-15s %-10s %-8d %-10d %-10d %-6d %-8d %-8d\n", courses[i].id, courses[i].name, courses[i].nature, courses[i].total_hours, courses[i].teaching_hours, courses[i].experiment_hours, courses[i].credits, courses[i].semester, courses[i].selected_count); return; } } printf("未找到该课程编号!\n"); } // 查看某门课程学生选修情况 void view_course_selection() { int id; printf("请输入课程编号: "); scanf("%d", &id); int found = 0; for (int i = 0; i < course_count; i++) { if (courses[i].id == id) { found = 1; printf("课程 %s 的选修学生信息如下:\n", courses[i].name); printf("%-12s %-15s\n", "学生编号", "学生姓名"); for (int j = 0; j < student_count; j++) { for (int k = 0; k < students[j].course_count; k++) { if (students[j].selected_courses[k] == id) { printf("%-12d %-15s\n", students[j].id, students[j].name); break; } } } break; } } if (found == 0) { printf("未找到该课程编号!\n"); } } //主函数main int main() { int choice; do { menu(); scanf("%d", &choice); switch (choice) { case 1: input_course_info(); break; case 2: input_student_info(); break; case 3: browse_course_info(); break; case 4: query_by_nature(); break; case 5: query_by_credits(); break; case 6: query_by_id(); break; case 7: view_course_selection(); break; case 8: printf("退出系统!\n"); break; default: printf("无效的选择,请重新输入!\n"); } } while (choice != 8); return 0; } ``` 在`input_student_info`函数里,添加了一个内层循环,用于检查当前选择的课程是否已经存在于学生已选课程列表中。若存在,就提示用户该课程已选,并让用户重新选择;若不存在,则把该课程添加到学生的已选课程列表中,同时更新相关信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值