车辆现代设计方法(2)
- 格式:doc
- 大小:153.09 KB
- 文档页数:2
工程硕士车辆工程领域(085234)专业学位研究生培养方案第一章学位授予基本要求第一部分学科概况和主要学科专业方向一、学科概况车辆工程领域工程硕士专业学位是与工程领域任职资格相联系的专业性学位,硕士生应成为基础扎实、素质全面、工程实践能力强,并具有一定创新能力的应用型、复合型高层次工程技术和工程管理人才。
车辆工程领域是研究车辆、车用动力装置及零部件的设计、制造、试验、营销、运用、管理及相关的工程技术问题的领域、具有多学科交叉融合、宽口径、覆盖面广、技术更新快的特点。
技术特征是以综合运用先进集成设计技术、生产制造技术、试验与检测技术、机电液一体化技术等方式,来解决车辆研究、设计开发、产品造型、生产制造、质量控制、检测、环保、管理、维修与营销等方面的问题。
我校该学科师资力量雄厚,现有专任教师23人,其中具有博士学位教师11人,具有海外经历教师11人。
二、学科专业方向1. 车辆现代设计理论与方法2. 车辆故障诊断与电子技术3. 物流与运输装备4. 地面车辆系统与导航技术第二部分硕士学位授予标准(科研成果要求,见培养方案第四点“研究生科研成果要求”)一、获本专业学位应掌握的基本知识基本知识包括基础知识和专业知识,涵盖本领域任职资格涉及的主要知识点。
1.基础知识掌握扎实的基础知识,包括数学、物理与力学知识,能够运用数学语言,描述工程实际问题,建立正确的数学模型,进行科学计算和工程分析。
2. 专业知识根据学生的不同学习方向,要求选择掌握系统的专业知识,包括现代汽车及发动机结构设计、车辆系统动力学、车辆随机振动、自动控制理论及应用、工程经济学、车辆测试技术、车辆人机工程、汽车制动理论、汽车电子控制技术、汽车安全性、汽车操纵动力学、汽车传动理论、试验优化设计、试验模态分析、汽车牵引力控制技术、汽车自动变速器控制理论、汽车发动机燃料供给及燃烧理论、汽车发动机替代燃料等。
二、获本专业学位应接受的实践训练通过实践环节应达到基本熟悉本行业工作流程和相关职业及技术规范,培养实践研究和技术创新能力。
现代设计方法》课程教学大纲课程代码:020232025 课程英文名称:Advanced Design Methods 课程总学时:40 讲课:40 实验:0 上机:0 适用专业:车辆工程能源与动力工程装甲车辆工程大纲编写(修订)时间:2017.5一、大纲使用说明(一)课程的地位及教学目标现代设计方法是汽车类专业的一门重要的专业基础课。
通过本课程的学习,使学生掌握优化设计和有限元的基本理论和方法,同时通过一些工程实例的研究,培养学生分析和解决工程问题的能力。
(二)知识、能力及技能方面的基本要求通过本课程的学习,学生要对本课的基本内容有系统的理解,掌握其基本概念、理论和方法,运用这些理论分析,解决工程实际问题,并达到如下要求:1.掌握现代设计方法的基本概念、理论及发展趋势。
2.掌握优化设计理论的基本概念、建模方法、搜索方法和无约束问题、有约束问题的求解方法等内容,使学生能够用优化设计方法解决设计中的实际问题。
3.掌握有限元方法的基本理论和方法,在此基础上,能够熟练使用大型工程软件进行实际的工程设计和计算。
(三)实施说明本课程主要包括两部分内容:机械优化设计、有限元方法。
教师在授课过程中可以根据实际情况酌情安排各部分的学时,课时分配表仅供参考。
根据本专业特点,教师应结合本专业的实际问题,在教学过程中注意理论与实际结合,突出实际应用。
课程的教学目标通过讲授、课后作业和后续的实践课程三个环节来实现。
教师要注重对基本概念、基本方法和解题思路的讲解,以便学生在实际应用中能举一反三,灵活运用。
(四)对先修课的要求在学习本课程之前,必须先修完《线性代数》、《理论力学》、《材料力学》等课程。
(五)对习题课、实验环节的要求本课程的主要难点就是在较短的学时内使学生掌握机械最优化设计方法和有限单元法的基本概念、方法和具体步骤。
因此根据课程的基本概念,思想和方法应用及典型的工程问题,选择安排一定的习题,习题通过课堂练、讲相结合和课后作业完成。
常用现代设计十大方法一)计算机辅助设计(CAD-Computer Aided Desi gn)利用计算机及其图形设备帮助设计人员进行设计工作。
简称CAD。
在工程和产品设计中,计算机可以帮助设计人员担负计算、信息存储和制图等项工作。
在设计中通常要用计算机对不同方案进行大量的计算、分析和比较,以决定最优方案;各种设计信息,不论是数字的、文字的或图形的,都能存放在计算机的内存或外存里,并能快速地检索;设计人员通常用草图开始设计,将草图变为工作图的繁重工作可以交给计算机完成;由计算机自动产生的设计结果,可以快速作出图形显示出来,使设计人员及时对设计作出判断和修改;利用计算机可以进行与图形的编辑、放大、缩小、平移和旋转等有关的图形数据加工工作。
CAD能够减轻设计人员的劳动,缩短设计周期和提高设计质量。
发展概况20世纪50年代在美国诞生第一台计算机绘图系统,开始出现具有简单绘图输出功能的被动式的计算机辅助设计技术。
60年代初期出现了CAD的曲面片技术,中期推出商品化的计算机绘图设备。
70年代,完整的CAD系统开始形成,后期出现了能产生逼真图形的光栅扫描显示器,推出了手动游标、图形输入板等多种形式的图形输入设备,促进了CAD技术的发展。
80 年代,随着强有力的超大规模集成电路制成的微处理器和存储器件的出现,工程工作站问世,cad技术在中小型企业逐步普及。
80 年代中期以来,C AD技术向标准化、集成化、智能化方向发展。
一些标准的图形接口软件和图形功能相继推出,为CAD 技术的推广、软件的移植和数据共享起了重要的促进作用;系统构造由过去的单一功能变成综合功能,出现了计算机辅助设计与辅助制造联成一体的计算机集成制造系统;固化技术、网络技术、多处理机和并行处理技术在CAD中的应用,极大地提高了C AD系统的性能;人工智能和专家系统技术引入CAD,出现了智能CAD技术,使CAD系统的问题求解能力大为增强,设计过程更趋自动化。
机电工程学院现代设计方法大作业基于汽车噪声的TRIZ分析学号:S314070064专业:机械工程学生姓名:***任课教师:*** 教授2015年1月基于汽车噪声的TRIZ分析一对技术系统进行初步分析1.选择系统。
我所选择的系统是汽车。
2.系统的三维图,如图1所示。
图1 汽车的三维图汽车工作原理:汽车的行驶主要靠发动机来带动,以四冲程汽油机为例,四冲程汽油机是将空气与汽油或柴油以一定的比例混合成良好的混合气,在吸气冲程被吸入汽缸,混合气经压缩点火燃烧而产生热能,高温高压的气体作用于活塞顶部,推动活塞作往复直线运动,通过连杆、曲轴飞轮机构对外输出机械能。
四冲程汽油机在进气冲程、压缩冲程、做功冲程和排气冲程内完成一个工作循环。
汽油机简图及其具体运动过程如图2所示。
图2 四冲程汽油机工作循环图(1)进气行程化油器式汽油机将空气与燃料先在气缸外部的化油器中进行混合,然后再吸入气缸。
进气行程中,进气门打开,排气门关闭。
随着活塞从上止点向下止点移动,活塞上方的气缸容积增大,从而气缸内的压力降低到大气压力以下,即在气缸内造成真空吸力。
这样,可燃混合气便经进气管道和进气门被吸入气缸。
(2)压缩行程为使吸入气缸内可燃混合气能迅速燃烧,以产生较大的压力,从而使发动机发出较大功率,必须在燃烧前将可燃混合气压缩,使其容积缩小、密度加大、温度升高,即需要有压缩过程。
在这个过程中,进、排气门全部关闭,曲轴推动活塞由下止点向上止点移动一个行程称为压缩行程。
(3)作功行程在这个行程中,进、排气门仍旧关闭。
当活塞接近上止点时,装在气缸盖上的火花塞即发出电火花,点燃被压缩的可燃混合气。
可燃混合气被燃烧后,放出大量的热能,因此,燃气的压力和温度迅速增加,所能达到的最高压力约为3-5Mpa,相应的温度则为2200-2800K。
高温高压的燃气推动活塞从上止点向下止点运动,通过连杆使曲轴旋转并输出机械能,除了用于维持发动机本身继续运转而外,其余即用于对外作功。
Chapter 2An swers to Selected Exercises2. [was #2] (a) The program contains one directive (#inelude) and four statements (three calls of printf and one return).(b)Parkinson's Law:Work expands so as to fill the timeavailable for its completi on.3. [was #4]#i nclude <stdio.h>int main(v oid){int height = 8, le ngth = 12, width = 10, volume;volume = height * len gth * width;printf("Dimensions: %dx%dx%d\n", length, width, height);prin tf("Volume (cubic in ches): %d\n", volume);printf("Dimensional weight (pounds): %d\n", (volume + 165) / 166);return 0;}4. [was #6] Here's one possible program:#i nclude <stdio.h>int main(v oid){int i, j, k;float x, y, z;prin tf("Value of i: %d\n", i);prin tf("Value of j: %d\n", j);prin tf("Value of k: %d\n", k);prin tf("Value of x: %g\n", x);prin tf("Value of y: %g\n", y);printf("Value of z: %g\n", z);return 0;}Whe n compiled using GCC and the n executed, this program produced the follow ing output:Value of i: 5618848Value of j: 0Value of k: 6844404Value of x: 3.98979e-34Value of y: 9.59105e-39Value of z: 9.59105e-39The values printed depend on many factors, so the chanee that you'll get exactly these nu mbers is small.5. [was #10] (a) is not legal because 100_bottles beg ins with a digit.8. [was #12] There are 14 tokens: a, =, (, 3, *, q, -, p, *, p, ), /, 3,and ;.An swers to Selected Programmi ng Projects4. [was #8; modified]#i nclude <stdio.h>int main(v oid){float orig in al_am ount, amoun t_with_tax;prin tf("E nter an amoun t:");sca nf("%f", &orig in al_am oun t);amoun t_with_tax = orig in al_am ount * 1.05f;prin tf("With tax added: $%.2f\n", amou nt_with_tax);return 0;}The amount_with_tax variable is unnecessary. If we remove it, the programis slightly shorter: #i nclude <stdio.h>时磊诫呎…}int main(v oid){float orig in al_am ount;prin tf("E nter an amoun t:");sea nf("%f", &orig in al_am oun t);printf("With tax added: $%.2f\n", original_amount * 1.05f);return 0;}Chapter 3An swers to Selected Exercises2. [was #2](a) printf(%8.1e", x);(b) printf("%10.6e", x);(e) pri ntf("%-8.3f", x);(d) printf("%6.0f", x);5. [was #8] The values of x, i, and y will be 12.3, 45, and .6,An swers to Selected Programmi ng Projects1. [was #4; modified]#i nclude <stdio.h>int main(v oid){int mon th, day, year;prin tf("E nter a date (mm/dd/yyyy):");sca nf("%d/%d/%d", &mon th, & day, &year);prin tf("You en tered the date %d%.2d%.2d\n", year, mon th, day);return 0;3. [was #6; modified]respectively.时Sr忖呎#i nclude <stdio.h> int main(v oid){int prefix, group, publisher, item, check_digit;printf("Enter ISBN:");sca nf("%d-%d-%d-%d-%d", & prefix, & group, & publisher, & tem, &check_digit);prin tf("GS1 prefix: %d\n", prefix);prin tf("Group ide ntifier: %d\n", group);prin tf("Publisher code: %d\n", publisher);printf("Item number: %d\n", item);prin tf("Check digit: %d\n", check_digit);/* The five printf calls can be combined as follows:printf("GS1 prefix: %d\nGroup identifier: %d\nPublishercode: %d\nItem number: %d\nCheck digit: %d\n",prefix, group, publisher, item, check_digit);*/return 0;}Chapter 4An swers to Selected Exercises2. [was #2] Not in C89. Suppose that i is 9 and j is 7. The value of (-i)/j could be either —1 or —2, depending on the implementation. On the other hand, the value of -(i/j) is always —1, regardless of the implementation.In C99, on the other hand, the value of (-i)/j must be equal to the value of -(i/j).9. [was #6](a) 63 8(b) 3 2 1(c) 2 -1 3(d) 0 0 0------------------- 时磊忖呎…... ..... ... ...13. [was #8] The expressi on ++i is equivale nt to (i += 1). The value of both expressi ons is i after the in creme nt has bee n performed.An swers to Selected Programmi ng Projects2. [was #4]#i nclude <stdio.h>int main(v oid){int n;prin tf("E nter a three-digit nu mber:");sca nf("%d", &n);printf("The reversal is: %d%d%d\n", n % 10, (n / 10) % 10, n / 100);return 0;}Chapter 5An swers to Selected Exercises2. [was #2](a) 1(b) 1(c) 1(d) 14. [was #4] (i > j) - (i < j)6. [was #12] Yes, the statement is legal. When n is equal to 5, it does nothing, since 5 is not equal to - 9.10. [was #16] The output ison etwosince there are no break stateme nts after the cases.An swers to Selected Programmi ng Projects 2. [was #6]时Sr忖呎#i nclude <stdio.h> int main(v oid){int hours, minu tes;prin tf("E nter a 24-hour time:"); sca nf("%d:%d", & hours, &min utes);prin tf("Equivale nt 12-hour time:");if (hours == 0)printf("12:%.2d AM\n", minutes);else if (hours < 12)prin tf("%d:%.2d AM\n", hours, mi nutes); else if (hours == 12)prin tf("%d:%.2d PM\n", hours, mi nutes); elseprin tf("%d:%.2d PM\n", hours - 12, minu tes);return 0;}4. [was #8; modified]#i nclude <stdio.h> int main(v oid){int speed;prin tf("E nter a wi nd speed in kno ts:"); scanf("%d", &speed);if (speed < 1)prin tf("Calm\n"); else if (speed <= 3)prin tf("Light air\n"); else if (speed <= 27)prin tf("Breeze\n"); else if (speed <= 47)prin tf("Gale\n"); else if (speed <= 63)prin tf("Storm\n"); else------------------- 时磊忖呎…... ..... ... ...prin tf("Hurrica ne\n");return 0;}6. [was #10]#i nclude <stdio.h>int main(v oid){in t check_digit, d, i1, i2, i3, i4, i5, j1, j2, j3, j4, j5,first_sum, sec on d_sum, total;prin tf("E nter the first (sin gle) digit:");scanf("%1d", &d);prin tf("E nter first group of five digits:");scanf("%1d%1d%1d%1d%1d", &i1, &i2, &3, &i4, &i5);prin tf("E nter sec ond group of five digits:");scanf("%1d%1d%1d%1d%1d", &j1, &j2, &j3, &j4, &j5);prin tf("E nter the last (sin gle) digit:");sca nf("%1d", & check_digit);first_sum = d + i2 + i4 + j1 + j3 + j5;sec on d_sum = i1 + i3 + i5 + j2 + j4;total = 3 * first_sum + sec on d_sum;if (check_digit == 9 - ((total - 1) % 10))prin tf("VALID\n");elseprin tf("NOT VALID\n");return 0;}10. [was #14]#i nclude <stdio.h>int main(v oid){int grade;prin tf("E nter nu merical grade:");scanf("%d", &grade);时磊忖呎…if (grade < 0 || grade > 100) {printf("lllegal grade'n");return 0;}switch (grade / 10) {case 10:case 9: prin tf("Letter grade: A\n");break;case 8: prin tf("Letter grade: B\n");break;case 7: prin tf("Letter grade: C\n");break;case 6: prin tf("Letter grade: D\n");break;case 5:case 4:case 3:case 2:case 1:case 0: prin tf("Letter grade: F\n");break;}return 0;}Chapter 6An swers to Selected Exercises 4. [was #10] (c) is not equivale nt to (a) and (b), because i is in creme nted before the loop body is executed.10. [was #12] Co nsider the followi ng while loop:while (…){con ti nue;}The equivale nt code using goto would have the follow ing appeara nee:------------------- 时磊忖呎…... ..... ... ... while (…){goto loop_e nd;loop_e nd: ; /* n ull stateme nt */} _12. [was #14]for (d = 2; d * d <= n; d++)if (n % d == 0)break;The if statement that follows the loop will need to be modified as well:if (d * d <= n)printf("%d is divisible by %d\n", n, d);elseprin tf("%d is prime\n", n);14. [was #16] The problem is the semicoIon at the end of the first line.If we remove it, the statement is now correct:if (n % 2 == 0)printf("n is eve n\n");An swers to Selected Programmi ng Projects2. [was #2]#i nclude <stdio.h>int main(v oid){int m, n, rema in der;prin tf("E nter two in tegers:");sca nf("%d%d", &m, &n);while (n != 0) {rema in der = m % n;m = n;n = rema in der;}时磊忖呎…prin tf("Greatest com mon divisor: %d\n", m);return 0;}4. [was #4]#i nclude <stdio.h>int main(v oid){float commissi on, value;prin tf("E nter value of trade:");sca nf("%f", &value);while (value != 0.0f) {if (value < 2500.00f)commissio n = 30.00f + .017f * value;else if (value < 6250.00f)commission = 56.00f + .0066f * value;else if (value < 20000.00f)commissio n = 76.00f + .0034f * value;else if (value < 50000.00f)commissio n = 100.00f + .0022f * value;else if (value < 500000.00f)commissio n = 155.00f + .0011f * value;elsecommissio n = 255.00f + .0009f * value;if (commissio n < 39.00f)commissi on = 39.00f;prin tf("Commissio n: $%.2f\n\n", commissio n);prin tf("E nter value of trade:");scan f("%f", &value);}return 0;}6. [was #6] #i nclude <stdio.h> int main (void) {int i, n;时磊忖呎…prin tf("E nter limit on maximum square:"); sea nf("%d", &n);for (i = 2; i * i <= n; i += 2) prin tf("%d\n", i * i);return 0;}8. [was #8]#i nclude <stdio.h> int main(v oid){int i, n, start_day;prin tf("E nter nu mber of days in mon th:");sea nf("%d", &n);printf("Enter starting day of the week (1=Sun, 7=Sat):"); sea nf("%d", &start_day);/* print any leadi ng "bla nk dates" */ for (i = 1; i < start_day; i++)prin tf("");/* now print the cale ndar */ for (i = 1; i <= n; i++) {prin tf("%3d", i);if ((start_day + i - 1) % 7 == 0) prin tf("\n");}return 0;}Chapter 7An swers to Selected Exercises裁磊诫呎3. [was #4] (b) is not legal.4. [was #6] (d) is illegal, since printf requires a string, not a character, as its first argume nt.10. [was #14] unsigned int, because the (int) cast applies only to j, not j * k.12. [was #16] The value of i is conv erted to float and added to f, the nthe result is con verted to double and stored in d.14. [was #18] No. Converting f to int will fail if the value stored inf exceeds the largest value of type int.An swers to Selected Programmi ng Projects1. [was #2] short int values are usually stored in 16 bits, causing failure at 182. int and long int values are usually stored in 32 bits, with failure occurring at 46341.2. [was #8]#i nclude <stdio.h>int main(v oid){int i, n;char ch;prin tf("This program prints a table of squares.\n");prin tf("E nter nu mber of en tries in table:");sca nf("%d", &n);ch = getchar();/* dispose of n ew-l ine character follow ing nu mber of en tries *//* could simply be getchar(); */for (i = 1; i <= n; i++) {prin tf("%10d%10d\n", i, i * i);if (i % 24 == 0) {prin tf("Press En ter to continu e...");ch = getchar(); /* or simply getchar(); */}}return 0;5. [was #10]#in elude <ctype.h>#i nclude <stdio.h>int main(v oid){int sum = 0;char ch;prin tf("E nter a word:");while ((ch = getchar()) != '\n')switch (toupper(ch)) {case 'D': case 'G':sum += 2; break;case 'B': case C: case 'M': case 'P': sum += 3; break;case 'F': case 'H': case 'V': case W: case 'Y': sum += 4; break;case 'K':sum += 5; break;case 'J': case 'X':sum += 8; break;case 'Q': case 'Z':sum += 10; break;default:sum++; break;}printf("Scrabble value: %d\n", sum);return 0;}6. [was #12]#i nclude <stdio.h>int main(v oid){prin tf("Size of int: %d\n", (int) sizeof(i nt));prin tf("Size of short: %d\n", (int) sizeof(short));prin tf("Size of long: %d\n", (int) sizeof(l on g));prin tf("Size of float: %d\n", (int) sizeof(float));prin tf("Size of double: %d\n", (int) sizeof(double));prin tf("Size of long double: %d\n", (int) sizeof(l ong double));return 0;}Since the type of a sizeof expressi on may vary from one impleme ntati on to ano ther, it's n ecessary in C89 to cast sizeof expressi ons to a known type before printing them. The sizes of the basic types are small numbers,so it's safe to cast them to int. (In general, however, it's best to cast sizeof expressions to unsigned long and print them using %lu.) In C99, we can avoid the cast by using the %zu conv ersi on specificatio n.Chapter 8An swers to Selected Exercises1. [was #4] The problem with sizeof(a) / sizeof( t) is that it can't easily be checked for correct ness by some one readi ng the program. (The readerwould have to locate the declaration of a and makesure that its elements have type t.)2. [was #8] To use a digit d (in character form) as a subscript into thearray a, we would write a[d-'0']. This assumes that digits haveconsecutive codes in the underlying character set, which is true of ASCII and other popular character sets.7. [was #10]const int segme nts[10][7] = {{1, 1, 1, 1, 1, 1},{0, 1, 1},{1, 1,0, 1, 1,0, 1},{1, 1, 1, 1,0, 0, 1},{0, 1, 1,0, 0, 1, 1},{1, 0, 1, 1,0, 1, 1},{1, 0, 1, 1, 1, 1, 1},{1, 1, 1},{1, 1, 1, 1, 1, 1, 1},{1, 1, 1, 1,0, 1, 1}};An swers to Selected Programmi ng Projects2. [was #2]#i nclude <stdio.h>int main(v oid){int digit_cou nt[1O] = {0};int digit;long n;prin tf("E nter a nu mber:");sca nf("%ld", &n);while (n > 0) {digit = n % 10;digit_co un t[digit]++;n /= 10;}printf ("Digit:");for (digit = 0; digit <= 9; digit++)prin tf("%3d", digit);prin tf("\nO ccurre nces:");for (digit = 0; digit <= 9; digit++)prin tf("%3d", digit_cou nt[digit]);prin tf("\n");return 0;}5. [was #6]#i nclude <stdio.h>#define NUM_RATES ((int) (sizeof(value) / sizeof(value[0]))) #defi ne INITIAL_BALANCE 100.00int main(v oid){int i, low_rate, mon th, nu m_years, year;double value[5];printf("Enter interest rate:");scanf("%d", &low_rate);prin tf("E nter nu mber of years:");sea nf("%d", &nu m_years);prin tf("\nYears");for (i = 0; i < NUM_RATES; i++) {prin tf("%6d%%", low_rate + i);value[i] = INITIAL_BALANCE;}prin tf("\n");for (year = 1; year <= nu m_years; year++) {prin tf("%3d ", year);for (i = 0; i < NUM_RATES; i++) {for (month = 1; month <= 12; mon th++)value[i] += ((double) (low_rate + i) / 12) / 100.0 * value[i];prin tf("%7.2f", value[i]);}prin tf("\n");}return 0;}8. [was #12]#i nclude <stdio.h>#defi ne NUM_QUIZZES 5#defi ne NUM_STUDENTS 5int main(v oid){in t grades[NUM_STUDENTS][NUM_QUIZZES];int high, low, quiz, stude nt, total;for (student = 0; student < NUM_STUDENTS; student++) {prin tf("E nter grades for stude nt %d: ", stude nt + 1);for (quiz = 0; quiz < NUM_QUIZZES; quiz++)scan f("%d", & grades[stude nt][quiz]);}prin tf("\nStude nt Total Average\n");for (student = 0; student < NUM_STUDENTS; student++) {prin tf("%4d ", stude nt + 1);total = 0;for (quiz = 0; quiz < NUM_QUIZZES; quiz++) total += grades[stude nt][quiz];printf("%3d %3d\n", total, total / NUM_QUIZZES);}prin tf("\nQuiz Average High Low\n");for (quiz = 0; quiz < NUM_QUIZZES; quiz++) {prin tf("%3d ", quiz + 1);total = 0;high = 0;low = 100;for (stude nt = 0; stude nt < NUM_STUDENTS; stude nt++) { total += grades[stude nt][quiz];if (grades[stude nt][quiz] > high)high = grades[stude nt][quiz];if (grades[stude nt][quiz] < low)low = grades[stude nt][quiz];}prin tf("%3d %3d %3d\n", total / NUM_STUDENTS, high, low);}return 0;}Chapter 9An swers to Selected Exercises2. [was #2]int check(i nt x, int y, int n){return (x >= 0 && x <= n - 1 && y >= 0 && y <= n - 1);}4. [was #4]int day_of_year(i nt mon th, int day, int year){int num_days[] = {31,28, 31,30, 31,30, 31,31,30, 31, 30, 31};int day_c ount = 0, i;for (i = 1; i < mon th; i++)day_co unt += nu m_days[i-1];/* adjust for leap years, assu ming they are divisible by 4 */if (year % 4 == 0 && mon th > 2)day_co un t++;retur n day_co unt + day;}Using the expression year %4 == 0 to test for leap years is not completely correct. Centuries are special cases: if a year is a multiple of 100, then it must also be a multiple of 400 in order to be a leap year. The correct test isyear % 4 == 0 && (year % 100 != 0 || year % 400 == 0)6. [was #6; modified]int digit(i nt n, int k){int i;for (i = 1; i < k; i++)n /= 10;return n % 10;}8. [was #8] (a) and (b) are valid prototypes. (c) is illegal, since itdoes n't specify the type of the parameter. (d) in correctly specifies that f returns an int value in C89; in C99, omitting the return type is illegal.10. [was #10](a)int largest(i nt a[], int n){int i, max = a[0];for (i = 1; i < n; i++)if (a[i] > max)max = a[i];return max;}(b)int average© nt a[], int n){int i, avg = 0;for (i = 0; i < n; i++)avg += a[i];retur n avg / n;}(c)int nu m_positive(i nt a[], int n){ _int i, count = 0;for (i = 0; i < n; i++) if (a[i] > 0) coun t++;retur n count;}15. [was #12; modified]double media n( double x, double y, double z) { double result;if (x <= y)if (y <= z) result = y;else if (x <= z) result = z;else result = x;else {if (z <= y) result = y;else if (x <= z) result = x; else result = z;}retur n result; } 17. [was #14]------------------- 时需5说int fact(i nt n){int i, result = 1;for (i = 2; i <= n; i++) result *= i;return result;}19. [was #16] The following program tests the pb function: #i nclude <stdio.h>void pb(i nt n);int main(v oid){int n;prin tf("E nter a nu mber:");sca nf("%d", &n);prin tf("Output of pb:");pb( n);prin tf("\n");return 0;}void pb(i nt n){if (n != 0) {pb(n / 2);putchar('0' + n % 2);}}pb prints the binary represe ntati on of the argume nt n, assu ming that n is greatercodes in than 0. (We also assume that digits have consecutivethe un derly ing character set.) For example:En ter a nu mber: 53Output of pb: 110101A trace of pb's execution would look like this:pb(53) finds that 53 is not equal to 0, so it callspb(26), which finds that 26 is not equal to 0, so it callspb(13), which finds that 13 is not equal to 0, so it callspb(6), which finds that 6 is not equal to 0, so it calls pb(3), which finds that 3 is not equal to 0, so it callspb(1), which finds that 1 is not equal to 0, so it callspb(0), which finds that 0 is equal to 0, so it retur ns, caus ingpb(1) to print 1 and retur n, caus ing pb(3) to print 1and retur n, caus ingpb(6) to print 0 and retur n, caus ingpb(13) to print 1 and retur n, caus ingpb(26) to print 0 and retur n, caus ingpb(53) to print 1 and retur n.Chapter 10An swers to Selected Exercises1. [was #2] (a) a, b, and c are visible.(b) a, and d are visible.(c) a, d, and e are visible.(d) a and f are visible.An swers to Selected Programmi ng Projects3. [was #4]#in clude <stdbool.h> /* C99 only */#i nclude <stdio.h>#i nclude <stdlib.h>#defi ne NUM_CARDS 5#defi ne RANK 0#defi ne SUIT 1/* exter nal variables */in t han d[NUM_CARDS][2];/* 0 1*/ bool straight, flush, four, three; int pairs; /* can be 0, 1, or 2 */ /* prototypes */ void read_cards(void); void an alyze_ha nd(void);void prin t_result(void);/*********************************************************** main: Calls read_cards, an alyze_ha nd, and prin t_result* repeatedly. ***********************************************************/int main(v oid){for (;;) {read_cards();an alyze_ha nd();prin t_result();} _} /*********************************************************** read_cards: Reads the cards into the external variable* hand; checks for bad cards and duplicate ** cards. ***********************************************************/void read_cards(void){char ch, ran k_ch, suit_ch;int i, ra nk, suit;bool bad_card, duplicate_card;int cards_read = 0;while (cards_read < NUM_CARDS) { bad_card = false;prin tf("E nter a card:");ran k_ch = getchar();switch (ran k_ch) {case 'O': exit(EXIT_SUCCESS);case 2: rank = 0; break;case 3: rank = 1; break;case '4': rank = 2; break;case '5': rank = 3; break;case '6': rank = 4; break;case '7': rank = 5; break;case '8': rank = 6; break;case '9': rank = 7; break;case 't': case 'T': rank = 8; break;case 'j': case 'J': rank = 9; break;case 'q': case 'Q': rank = 10; break;case 'k': case 'K': rank = 11; break;case 'a': case 'A': rank = 12; break;default: bad_card = true;} _suit_ch = getchar();switch (suit_ch) {case 'c': case 'C': suit = 0; break;case 'd': case 'D': suit = 1; break;case 'h': case 'H': suit = 2; break;case 's': case 'S': suit = 3; break;default: bad_card = true;} _while ((ch = getchar()) != '\n')if (ch != ' ') bad_card = true;if (bad_card) {prin tf("Bad card; igno red.\n");con ti nue;}duplicate_card = false;for (i = 0; i < cards_read; i++)if (ha nd[i][RANK] == rank && han d[i][SUIT] == suit) {prin tf("Duplicate card; igno red.\n");duplicate_card = true;break;}if (!duplicate_card) {ha nd[cards_read][RANK] = rank; ha nd[cards_read][SUIT] = suit;cards_read++;} _}} /*********************************************************** an alyze_ha nd: Determ ines whether the hand contains a* straight, a flush, four-of-a-k ind, ** an d/or three-of-a-k ind; determ ines the ** nu mber of pairs; stores the results into ** the exter nal variables straight, flush, ** four, three, and pairs. ***********************************************************/void an alyze_ha nd(void){ _int rank, suit, card, pass, run;straight = true; flush = true; four = false; three = false; pairs = 0;/* sort cards by rank */for (pass = 1; pass < NUM_CARDS; pass++)for (card = 0; card < NUM_CARDS - pass; card++) { rank = han d[card][RANK];suit = han d[card][SUIT];if (ha nd[card+1][RANK] < rank) {han d[card][RANK] = ha nd[card+1][RANK];han d[card][SUIT] = ha nd[card+1][SUIT];han d[card+1][RANK] = rank;han d[card+1][SUIT] = suit;}}/* check for flush */ suit = han d[0][SUIT];for (card = 1; card < NUM_CARDS; card++) if (ha nd[card][SUIT] != suit) flush = false;/* check for straight */for (card = 0; card < NUM_CARDS - 1; card++)if (ha nd[card][RANK] + 1 != han d[card+1][RANK])straight = false;/* check for 4-of-a-k ind, 3-of-a-k ind, and pairs bylook ing for "r uns" of cards with ide ntical ranks */card = 0;while (card < NUM_CARDS) {rank = han d[card][RANK];run = 0;do {run++;card++;} while (card < NUM_CARDS && han d[card][RANK] == rank);switch (run) {case 2: pairs++; break;case 3: three = true; break;case 4: four = true; break;}}}* print_result: Prints the classification of the hand,* based on the values of the exter nal* variables straight, flush, four, three, ** and pairs. *********************************************************void prin t_result(void){ _if (straight && flush) pri ntf("Straight flush");else if (four) prin tf("Four of a ki nd");else if (three &&pairs == 1) prin tf("Full house");prin tf("Flush");prin tf("Straight");prin tf("Three of a ki nd");else if (pairs == 2) prin tf("Two pairs");else if (pairs == 1) prin tf("Pair");else if (flush) else if (straight) else if (three)--------- 时器Sr亦..... . .... ... ...printf("High card");elseprin tf("\n\n");}5. [was #6]#in clude <stdbool.h> /* C99 only */#i nclude <stdio.h>#i nclude <stdlib.h> #defi ne NUM_RANKS 13#defi ne NUM_SUITS 4#defi ne NUM_CARDS 5/* exter nal variables */int num _in_ra nk[NUM_RANKS];int num _in_suit[NUM_SUITS];bool straight, flush, four, three;int pairs; /* can be 0, 1, or 2 *//* prototypes */void read_cards(void);void an alyze_ha nd(void);void prin t_result(void);/*********************************************************** main: Calls read_cards, an alyze_ha nd, and prin t_result* repeatedly. ***********************************************************/ int main(v oid){for (;;) {read_cards();an alyze_ha nd();prin t_result();} _}/*********************************************************** read_cards: Reads the cards into the exter nal* variables num_in_rank and num_in _suit;* checks for bad cards and duplicate cards.**********************************************************------------------- 时磊5说----- - ---- -------void read_cards(void){ _bool card_exists[NUM_RANKS][NUM_SUITS];char ch, ran k_ch, suit_ch;int rank, suit;bool bad_card;int cards_read = 0;for (ra nk = 0; rank < NUM_RANKS; ran k++) { num_in_ran k[ra nk] = 0;for (suit = 0; suit < NUM_SUITS; suit++)card_exists[ra nk][suit] = false;} _for (suit = 0; suit < NUM_SUITS; suit++)num_in _suit[suit] = 0;while (cards_read < NUM_CARDS) {bad_card = false;prin tf("E nter a card:");ran k_ch = getchar();switch (ran k_ch) {case 'O': exit(EXIT_SUCCESS);case 2: rank = 0;break;case 3: rank = 1;break;case '4': rank = 2;break;case '5': rank = 3;break;case '6': rank = 4;break;case '7': rank = 5;break;case '8': rank = 6;break;case '9': rank = 7;break;case 't': case 'T': rank = 8; break;case 'j': case 'J': rank = 9; break;case 'q': case 'Q': rank = 10; break;case 'k': case 'K': rank = 11; break;case 'a': case 'A': rank = 12; break;default: bad_card = true;} _suit_ch = getchar();switch (suit_ch) {case 'c': case 'C': suit = 0; break;。
机电工程学院现代设计方法大作业基于汽车噪声的TRIZ分析学号:S*********专业:机械工程学生姓名:***任课教师:*** 教授2015年1月基于汽车噪声的TRIZ分析一对技术系统进行初步分析1.选择系统。
我所选择的系统是汽车。
2.系统的三维图,如图1所示。
图1 汽车的三维图汽车工作原理:汽车的行驶主要靠发动机来带动,以四冲程汽油机为例,四冲程汽油机是将空气与汽油或柴油以一定的比例混合成良好的混合气,在吸气冲程被吸入汽缸,混合气经压缩点火燃烧而产生热能,高温高压的气体作用于活塞顶部,推动活塞作往复直线运动,通过连杆、曲轴飞轮机构对外输出机械能。
四冲程汽油机在进气冲程、压缩冲程、做功冲程和排气冲程内完成一个工作循环。
汽油机简图及其具体运动过程如图2所示。
图2 四冲程汽油机工作循环图(1)进气行程化油器式汽油机将空气与燃料先在气缸外部的化油器中进行混合,然后再吸入气缸。
进气行程中,进气门打开,排气门关闭。
随着活塞从上止点向下止点移动,活塞上方的气缸容积增大,从而气缸内的压力降低到大气压力以下,即在气缸内造成真空吸力。
这样,可燃混合气便经进气管道和进气门被吸入气缸。
(2)压缩行程为使吸入气缸内可燃混合气能迅速燃烧,以产生较大的压力,从而使发动机发出较大功率,必须在燃烧前将可燃混合气压缩,使其容积缩小、密度加大、温度升高,即需要有压缩过程。
在这个过程中,进、排气门全部关闭,曲轴推动活塞由下止点向上止点移动一个行程称为压缩行程。
(3)作功行程在这个行程中,进、排气门仍旧关闭。
当活塞接近上止点时,装在气缸盖上的火花塞即发出电火花,点燃被压缩的可燃混合气。
可燃混合气被燃烧后,放出大量的热能,因此,燃气的压力和温度迅速增加,所能达到的最高压力约为3-5Mpa,相应的温度则为2200-2800K。
高温高压的燃气推动活塞从上止点向下止点运动,通过连杆使曲轴旋转并输出机械能,除了用于维持发动机本身继续运转而外,其余即用于对外作功。
填空题1、从设计定义出发可以看出,产品设计应该具有以下需求特征、创造性特征、程序特征和时代特征。
2、设计方法的发展分为直觉设计阶段、经验设计阶段、传统设计阶段和现代设计阶段。
3、最常用的两种实体造型方法包括几何体素法和边界表示法。
4、插值法要求生成的曲线通过每个给定的型值点。
5、逼近法要求生成的曲线靠近每个型值点,但不要求通过每个点。
6、产品造型设计的核心技术是实体建模。
7、特征树中存在两种基本关系:父子关系和邻接关系。
8、根据Bernstein基函数的性质,可以推导出Bezier曲线具有端点性和凸包性和几何不变性。
9、二维工程图的主要内容包括视图、零件图、装配图。
10、相对于满约束状态,参数化草图还可能存在的状态包括欠约束状态和过约束状态。
11、反求工程设计的基本类型包括老产品复制、对己有产品改进、新产品设计。
12、据反求对象的不同实物反求可分为整体反求、部件反求、零件反求。
13、坐标侧量分为接触式和非接触式两大类。
14、特征模型的操纵对象是产品的技术信息、管理信息、功能要素。
15、曲面造型采用表面模型表示三维物体的外形。
16、车身外表面的测量一般包括三种:油泥模型测量、白车身测量、成品汽车测量。
17、作用于物体上的外力通常分为两类:体积力和表面力。
18、边界条件可分为位移边界条件、应力边界条件和混合边界条件。
19、有限元求解应力类问题时,根据未知量和分析方法的不同有三种基本解法:位移法、力法和混合法。
20、虚拟现实的四大特点:沉浸感、交互性、构想性和实时性。
21、原型可分为:物理原型和分析原型。
22、一般来说物体的成型方式可分为三类即:去除成型、静尺寸成型、添加成型。
23、工作可靠性分别用固有可靠性和使用可靠性来反映。
24、可靠性学科主要包括以下三方面的内容:可靠性设计、可靠性分析和可靠性数学。
25、浴盆失效曲线可分为三个特征区:早期失效期、规定失效期和耗损失效期。
26、面向过程的设计包括:___________、___________、___________。
27、特征信息包括形状特征和工程语义特征。
28、目前被CAD系统广泛采用的实体造型方法主要有几何体素法和边界表示法。
29、虚拟现实具体基于以下几种技术:基本模型构建技术、空间跟踪技术、声音跟踪技术和视觉跟踪和视点感应技术。
30、基本模型构建技术是虚拟现实技术的核心内容。
31、产品运行时的可靠性称为工作可靠性。
32、一个工程问题的设计参数包括常量、独立变量和因变量三类。
33、优化设计的数学模型由设计变量、目标函数和约束条件三部分组成。
34、设计变量有连续变量和离散变量之分。
35、约束条件根据形式不同可分为不等式约束和等式约束。
36、约束条件根据性质不同可分为边界约束和性能约束。
37、根据是否满足约束条件可把设计点分为内点和外点。
38、根据设计点是否在约束边界上,可将约束条件分为起作用约束和不起作用约束。
39、根据搜索方向的不同构成形成,无约束优化方法可分为导数法和模式法。
40、根据处理约束条件的不同,约束优化方法分为直接法和间接法两类。
选择题1、为了仿型,再现原车设计意图需要( B )A、油泥模型测量B、白车身测量C、成品车测量2、虚拟现实系统常用的输入设备包括以下( A、B、C、D )A、力矩球B、数据手套C、数据衣D、三维鼠标3、虚拟现实系统常用的输出设备包括以下( B、C、D )A、手持式操纵器B、头盔式显示器C、立体眼镜D、立体声耳机4、翻边属于下列特征中的哪种( B )A、基本特征B、附加特征C、变性特征D、组合特征5、下列属于精度特征的是( C )A、热处理方式B、材料性能C、粗糙度D、标题栏信息6、浇注属于哪种成型方式( B )A、去除成型B、静尺寸成型C、添加成型7、车削属于哪种成型方式( A )A、去除成型B、静尺寸成型C、添加成型8、焊接属于哪种成型方式( C )A、去除成型B、静尺寸成型C、添加成型9、以下属于体积力的是( A、C )A、重力B、压强C、惯性力10、以下属于面积力的是( B )A、重力B、压强C、惯性力11、以下属于精度特征的位置公差的是()A、同轴度B、圆柱度C、对称度D、轮廓度12、以下属于精度特征的形状公差的是()A、同轴度B、圆柱度C、对称度D、轮廓度13、面力的量纲是( A )A、[力][长度]B、[力][长度]C、无量纲14、σ即表示应力作用的微分面的外法线方向是( B )A、X轴B、Y轴C、Z轴15、切应力τ的作用面的外法线方向与( B )轴一致。
A、X轴B、Y轴C、Z轴16、应变的量纲是( C )A、[力][长度]B、[力][力度]C、无量纲17、目前快速原型制造均采用( C )成型方式。
A、去除成型B、静尺寸成型C、添加成型18、( B )是产品的最佳状态时期。
A、早期失效期B、正常运行周期C、耗损失效期19、锻压属于哪种成型方式( B )A、去除成型B、静尺寸成型C、添加成型20、冲压属于哪种成型方式( B )A、去除成型B、静尺寸成型C、添加成型计算题某批电子器件有1000个,开始工作至500h内有100个失效,工作至1000h共有300个失效,试求该批电子器件工作到500h和1000h的可靠度。
解:N=1000,n(500)=100,n(1000)=300R(t)≈N-n(t)/NR(500)≈1000-100/1000=0.9R(1000)≈1000-300/1000=0.7判断题1、边界表示法不进能表示拓扑关系,还可以记录拓扑元素的凹、凸等几何特征。
(√)2、特征不是体素,是某个或某个加工表面。
(√)3、特征就是完整的零件。
(×)4、修改父特征会对子特征有影响。
(√)5、实体造型的表面必须封闭、有向,而曲面模型的面可以不封闭。
(√)6、拓扑等价的两个几何实体形状一定相同。
(×)7、在B-Rep模型中,正常情况下一条边被两个面所共享。
(√)8、Bezier曲线的起点、终点与其特征多边形的起点和终点重合。
(√)9、一个实体可以只能包含一个块。
(√)10、商品化的实体造型系统中,B-Rep法已成为实体的主要表示形式。
(√)11、邻接关系表示两个特征是并列的,共同依附于一个父特征而存在。
(√)12、实体造型是唯一能用来做工程分析的模型。
(×)13、一般情况下,物体内部各点所受到的体积力是相同的。
(×)14、特征信息只包括非几何信息。
(×)15、几何体素法能反应物体的面、边、顶点、等边界信息。
(×)16、线框造型的同一数据结构可以表示几种不同的图形。
(√)17、线框建立的物体模型只有离散的空间线段,没有实在的面,比较容易处理。
(√)18、实体建模已经成为产品造型设计的核心技术。
(√)19、Classl曲线是完全将油泥模型重现在计算机屏幕上。
(×)20、测量油泥模型是为计算机造型提供数据。
(√)21、测量白车身模型是为了检验车身质量。
(×)22、原型是指用来建造未来模型或系统基础的一个初始模型或系统。
(√)23、RP的思路源于三维实体被切割成一系列微小单元的逆过程。
(√)24、如果某一个面的外法线是沿着坐标轴的负方向,则这个面上的应力就以坐标轴负方向为正,沿坐标轴正方向为负。
(√)25、正应变方向规定以伸长为正,缩短为负。
(√)26、白车声是指完成焊接但未涂装之前的车声,不包括车门、引擎盖等运动件。
(×)27、大多数情况下,原型是指物理原型,既物体在三维空间的实物表示。
(√)28、剪应变方向规定以直角的减少为负,增加为正。
(×)29、一般来说,固有可靠性小于使用可靠性。
(×)30、Classl曲面是捕捉设计师在油泥模型上的意图,而非完全将油泥模型重现于计算机屏幕。
(√)31、对极小化问题来说,目标函数的值越小,对应的设计方案越好。
(×)32、几乎所有的优化理论和方法都是针对离散变量提出来的。
(×)简答题1、简述产品设计的广义和狭义的两种概念。
答:设计的广义概念是指对事物发展过程的安排,包括发展方向、程序、细节以及达到的目标。
设计的狭义概念是指将客观需求转化为满足该需求的技术系统的活动。
2、简述现代设计方法与传统设计方法相比主要的特点是什么?答:设计手段计算机化、设计范畴扩展、设计制造一体化、设计过程智能化、多种手段综合应用、设计寻求最优化、重视产品宜人性、强调产品环保性。
3、当前,CAD技术在机械工业中的应用在哪些方面?答:二维绘图、图形及符号库、参数化设计、三维造型、工程分析、设计文档或生成报表。
4、Bezier曲线的不足有哪些?答:Bezier曲线或曲面的拼接比较复杂;Bezier曲线不能做局部修改。
5、简述零件技术条件的反求包含哪些内容?答:尺寸公差的确定、形位公差的确定、表面粗糙度值得确定、零件材料的确定、热处理及表面处理的确定。
6、如何理解欠约束和过约束状态?答:在欠约束状态下,由于几何关系没有被完全定义,轮廓还存在一定的自由度,几何形状存在一定的随机性。
当尺寸参数变化时,部分几何轮廓可能意外的移动或被改变尺寸。
而当草图添加过多的尺寸或约束关系时,草图处于过约束状态。
7、简述正向工程与反向工程的定义。
答:在计算机上应用计算机辅助设计及制造技术进行产品模型设计,然后生成数控代码进行加工,这就是正向工程;以先进产品设备的实物、样件、软件或影像作为研究对象,应用产品设计方法学、系统工程学、计算机辅助技术的理论和方法进行系统分析和研究,探索掌握其关键技术,进而开发出同类的或更先进的产品设计,这就是反向工程。
8、软件反求设计的特点主要有哪些?答:①抽象性②科学性③技术性④综合性⑤创造性9、一个微元体的位置变化由哪两个部分组成?答:①周围介质位移使微元体产生的刚性位移。
②微元体本身变形产生的位移。
10、简述有限元法的基本思想和分析过程。
答:基本思想是“分与合”,分是为了划分单元,进行单元分析,合则是为了集合单元,对整体结构进行综合分析。
分析过程:连续体离散化、单元分析、整体分析、确定约束条件、有限元方程求解、结果分析与讨论。
11、简述可靠性的定义及包含的基本要素。
答:产品在规定的条件下和规定的时间内,完成规定功能的能力,叫做可靠性。
基本要素:研究对象、规定的条件、规定时间、规定功能。
12、简述可靠性设计的主要特点有哪些?答:①可靠性设计直接确定固有的可靠度②可靠性设计运用随机方法对设计变量进行描述和运算③零件安全与否,以强度大于应力的概率大小表示,称为可靠度指标④可靠性设计也是传统设计的延伸和发展。
13、与传统的切削加工方法相比,快速原型加工的优点有哪些?答:①可迅速制造出自由曲面和更为复杂形态的零件,大大降低了新产品的开发成本和开发周期。