合工大FORTRAN第8章
- 格式:ppt
- 大小:140.50 KB
- 文档页数:29
4 部份习题参考答案以下各数均为十进制数,请采纳8位二进制补码运算,并回答标志寄放器FLAGS中CF和OF的值,运算结果所代表的十进制数是多少?若是用16位二进制补码运算,其结果所代表的十进制数是多少?FLAGS中CF和OF的值呢?(1)85+69 (2)85+(-69) (3)85-(-69) (4)85-(69)85=55H,69=45H,-69=BBH,8位二进制补码运算:(1)85+69 =55H+45H=9AH, CF=0,OF=1(2)85+(-69)=55H+BBH=110H,CF=1,OF=0其余略实模式下,写出段地址和偏移地址为1234:200二、1430:004二、FF00:0FFF 的物理地址。
1234:2002=12340+2002=143421430:0042=14300+0042=14342FF00:0FFF=FF000+0FFF=FFFFF已知8086系统某存储单元物理地址为:52506H,你以为段基址的最大值、最小值别离是多少? 8086微机最多能够有多少个不同的段基址?52506=5250:0006, 段基址的最大值=525052506=4251:FFF6, 段基址的最小值=4251从物理地址为00100H开始到00103H单元中顺序寄存的数据为:12H,34H,56H,78H。
请画出数据寄存示用意,并回答以下问题:(1)写出00101H字节单元的内容(00101)= 34H(2)写出00102H字单元的内容(00102)= 7856H习题3别离说明8086处置器中各寄放器的名称和作用是什么?溢出标志OF与进位标志CF有何作用和区别?何为段地址?何为有效地址?何为物理地址?用指令举例说明。
带符号数比较大小,当AX < BX时程序转向标号L1,假设前导指令为CMP AX, BX后续指令应什么缘故?假设视为二个无符号数比较大小, 后续指令应什么缘故?带符号数:JL L1, 无符号数:JB L1ADD指令和ADC指令在什么情形下是一样的结果?CF=0说出CALL指令和INT 21H指令的操作,有何异同?CALL把断点压入堆栈,不必然是远调,INT 21H还要把FLAGS压入堆栈,且是远调,总入口地址为84H内存中的两个字。
合⼯⼤优化设计MATLAB程序合肥⼯业⼤学《机械优化设计》课程实践研究报告班级:机设164学号: 2016216214姓名:张轩授课教师:⽇期: 2019.05.28⽬录⼀、Excel线性规划求解下列⽣产规划问题 (3)⼆、黄⾦分割法求函数极⼩值 (4)三、阻尼⽜顿法 (6)四、《机械优化设计》⼼得体会 (8)⼀、Excel线性规划求解下列⽣产规划问题⼆、黄⾦分割法求函数极⼩值1)⾸先建⽴函数。
建⽴.m⽂件,命名为fun_c.m⽂件,内容如下:function [x_c,y_c] = fun_c(f,a,b)%UNTITLED2 此处显⽰有关此函数的摘要% 此处显⽰详细说明x_c=(a+b)/2;y_c=feval(f,x_c);end%[ x_c,y_c] = fun_c(f,a,b) % 调⽤函数x_c=(a+b)/2;y_gs=fun_c(f,x_c);%plot(x_c,y_c,'r*') %在图像中标出极⼩值点%fprintf('clear程序经过%d次迭代得到函数极⼩值点为%d ',n,x_c)运⾏结果:x_c =2.0001y_c =3.0000clear程序经过20次迭代得到函数极⼩值点为2.000054e+00 >> n=20 迭代次数x*=2.0001 极⼩值点y*=3.0000 极⼩值2)编写迭代程序主体。
建⽴c.m⽂件,内容如下:f=@(x) (x-2)^2+3;a=0;b=10;eps=0.001;n=0;i=100;a1=b-0.618*(b-a);a2=a+0.618*(b-a);y1=feval(f,a1);y2=feval(f,a2);x_c=(a+b)/2;y_c=feval(f,x_c);plot(x_c,y_c,'*')hold onfor k=1:iif (abs(b-a)<=eps)y_c=feval(f,a);breakelseif (y1<=y2)y2=feval(f,a1);b=a2;a2=a1;a1=b-0.618*(b-a); y1=feval(f,a1); elsey1=feval(f,a2);a=a1;a1=a2;a2=a+0.618*(b-a); y2=feval(f,a2); endn=n+1;endendx=(a+b)/2;y=f(x);三、阻尼⽜顿法1)%建⽴NTtest.m⽂件clearclcx0=[0,0]';fun=@(x)100*(x(1)^2-x(2))^2+(x(1)-1)^2;gfun=@(x)[400*x(1)*(x(1)^2-x(2))+2*(x(1)-1),-200*(x(1)^2-x(2))]';Hesse=@(x)[1200*x(1)^2-400*x(2)+2,-400*x(1);-400*x(1),200]';[x,val,k]=minNT(fun,gfun,Hesse,x0);>> [x,val,k]=minNT(fun,gfun,Hesse,x0) 结果如下:x =2.00001.0000val =2.2737e-13k =22 2)建⽴minNT.m⽂件function[x,val,k]=minNT(fun,gfun,Hesse,x 0)%注意传过来的是变量,⽽不是函数%功能:⽤阻尼⽜顿法求解⽆约束问题:min f(x)%输⼊:x0是初始点,梯度函数,Hesse阵的函数%输出:x,val是近似最优点和最优值,k是迭代次数maxk=100;%给出最⼤迭代次数rho=0.5;sigma=0.4;gama=0.5; epsilon=1.0e-6;k=0;while (kgk=feval(gfun,x0);%计算梯度Gk=feval(Hesse,x0);%计算Hesse 阵dk=-Gk\gk;%计算搜索⽅向if(norm(gk)break;end%Armijio线搜索寻找最佳步长alpha mk=0;while(mk<20)if(feval(fun,x0+rho*gama^mk*dk)< =feval(fun,x0)+sigma*rho*gama^mk *gk'*dk) alpha=rho*gama^mk;break;endmk=mk+1;endx0=x0+alpha*dk;k=k+1;endx=x0; val=feval(fun,x);format shortend%[x,val,k]=minNT(fun,gfun,Hesse, x0)四、《机械优化设计》⼼得体会⾸先,当初选这门课的时候给⼈第⼀印象就是这课可能有点复杂,枯燥乏味。
B班大作业要求:1. 使用统一封皮;2. 上交大作业内容包含:一摘要二数学原理三程序设计(必须对输入变量、输出变量进行说明;编程无语言要求,但程序要求通过)四结果分析和讨论五完成题目的体会与收获3. 提交大作业的时间:本学期最后一次课,或考前答疑;过期不计入成绩;4. 提交方式:打印版一份;或手写大作业,但必须使用A4纸。
5. 撰写的程序需打印出来作为附录。
课程设计课程名称:设计题目:学号:姓名:完成时间:题目一:非线性方程求根 一 摘要非线性方程的解析解通常很难给出,因此非线性方程的数值解就尤为重要。
本实验通过使用常用的求解方法二分法和Newton 法及改进的Newton 法处理几个题目,分析并总结不同方法处理问题的优缺点。
观察迭代次数,收敛速度及初值选取对迭代的影响。
用Newton 法计算下列方程(1) 310x x --= , 初值分别为01x =,00.45x =,00.65x =;(2) 32943892940x x x +-+= 其三个根分别为1,3,98-。
当选择初值02x =时给出结果并分析现象,当6510ε-=⨯,迭代停止。
二 数学原理对于方程f(x)=0,如果f(x)是线性函数,则它的求根是很容易的。
牛顿迭代法实质上是一种线性化方法,其基本思想是将非线性方程f(x)=0逐步归结为某种线性方程来求解。
设已知方程f(x)=0有近似根x k (假定k f'(x )0≠) ,将函数f(x)在点x k 进行泰勒展开,有k k k f(x)f(x )+f'(x )(x-x )+≈⋅⋅⋅于是方程f(x)=0可近似的表示为k k k f(x )+f'(x )(x-x )=0这是个线性方程,记其根为x k+1,则x k+1的计算公式为k+1k ()x =x -'()k k f x f x ,k=0,1,2,… 这就是牛顿迭代法或简称牛顿法。
三 程序设计(本程序由Fortran 语言编制)(1)对于310x x --=,按照上述数学原理,编制的程序如下program newton implicit nonereal :: x(0:50),fx(0:50),f1x(0:50)!分别为自变量x ,函数f(x)和一阶导数f1(x) integer :: kwrite(*,*) "x(0)="read(*,*) x(0) !输入变量:初始值x(0)open(10,file='1.txt') do k=1,50,1fx(k)=x(k-1)**3-x(k-1)-1 f1x(k)=3*x(k-1)**2-1x(k)=x(k-1)-fx(k)/f1x(k) !牛顿法write(*,'(I3,1x,f11.6)') k,x(k) !输出变量:迭代次数k 及x 的值 write(10,'(I3,1x,f11.6)') k,x(k)if(abs(x(k)-x(k-1))<1e-6) exit !终止迭代条件 end do stop end(2)对于32943892940x x x +-+=,按照上述数学原理,编制的程序如下program newton implicit nonereal :: x(0:50),fx(0:50),f1x(0:50)!分别为自变量x ,函数f(x)和一阶导数f1(x) integer :: kwrite(*,*) "x(0)="read(*,*) x(0) !输入变量:初始值x(0)open(10,file='1.txt') do k=1,50,1fx(k)=x(k-1)**3+94*x(k-1)**2-389*x(k-1)+294 f1x(k)=3*x(k-1)**2+188*x(k-1)-389x(k)=x(k-1)-fx(k)/f1x(k) !牛顿法write(*,'(I3,1x,f11.6)') k,x(k) !输出变量:迭代次数k 及x 的值 write(10,'(I3,1x,f11.6)') k,x(k)if(abs(x(k)-x(k-1))<5e-6) exit !终止迭代条件 end do stop end四 结果分析和讨论(1)对于方程310x x --=,当初值分别为01x =,00.45x =,00.65x =时,所得结果如下结果分析与讨论:从计算结果可以看到,当取的初始值不同时,虽然均得到了近似解x *=1.324718,但收敛速度明显不同。
第二章光固化快速成型工艺1 .叙述光固化快速成型的原理。
氦-镉激光器或氩离子激光器发出的紫外激光束在控制系统的控制下按零件的各分层截面信息在光敏树脂表面进行逐点扫描,使被扫描区域的树脂薄层产生光聚合反应而固化,形成零件的一个薄层。
一层固化完毕后,工作台下移一个层厚的距离,以使在原先固化好的树脂表面再敷上一层新的液态树脂,刮板将粘度较大的树脂液面刮平,然后进行下一层的扫描加工,新固化的一层牢固地粘结在前一层上,如此重复直至整个零件制造完毕,得到一个三维实体原型。
2 .光固化快速成型的特点有哪些?优点:(1)成型过程自动化程度高;(2)尺寸精度高;(3)优良的表面质量;(4)可以制作结构十分复杂的模型、尺寸比较精细的模型;(5)可以直接制作面向熔模精密铸造的具有中空结构的消失型;(6)制作的原型可以一定程度地替代塑料件。
缺点:(1)制件易变形,成型过程中材料发生物理和化学变化;(2)较脆,易断裂性能尚不如常用的工业塑料;(3)设备运转及维护成本较高,液态树脂材料和激光器的价格较高;(4)使用的材料较少,目前可用的材料主要为感光性的液态树脂材料;(5)液态树脂有气味和毒性,并且需要避光保护,以防止提前发生聚合反应,选择时有局限性;(6)需要二次固化3.光固化材料的优点有哪些?光固化树脂主要分为几大类?优点:(1)固化快(2)不需要加热(3)可配成无溶剂产品(4)节省能量。
(5)可使用单组分,无配置问题,使用周期长。
(6)可以实现自动化操作及固化,提高生产的自动化程度,从而提高生产效率和经济效益。
分类:(1)自由基光固化树脂(2)阳离子光固(3)混杂型光固化树脂4.光固化成型工艺过程主要分为几个阶段,其后处理工艺过程包括哪些基本步骤?阶段:前处理、原型制作和后处理三个阶段。
后处理步骤:(1)原型叠层制作结束后,工作台升出液面,停留5~10min(晾干);(2)将原型和工作台一起斜放景干,并将其浸入丙酮、酒精等清洗液中,搅动并刷掉残留的气泡,45min后放入水池中清洗工作台;(3)由外向内从工作台上取下原型,并去除支撑结构;(4)再次清洗后置于紫外烘箱中进行整体后固化。
合工大c 课程设计一、课程目标知识目标:1. 理解并掌握合工大C课程中关键概念和原理,如基本语法、数据类型、控制结构等;2. 学会运用合工大C进行简单的程序设计,解决实际问题;3. 了解合工大C在工程领域的应用及其重要性。
技能目标:1. 培养学生运用合工大C编写、调试和运行程序的能力;2. 培养学生运用合工大C进行问题分析、设计和解决的能力;3. 提高学生的逻辑思维能力和编程技能。
情感态度价值观目标:1. 培养学生对合工大C编程的兴趣和热情,激发学生学习编程的积极性;2. 培养学生良好的编程习惯,注重代码规范和团队协作;3. 引导学生认识到合工大C编程在科技发展和社会进步中的重要作用,树立正确的价值观。
课程性质:本课程为实践性较强的学科,结合理论知识与实际操作,使学生能够掌握合工大C编程技能。
学生特点:学生处于掌握一定计算机基础知识的阶段,对编程有一定的好奇心和求知欲,但需注重培养学生的学习兴趣和动手能力。
教学要求:注重理论与实践相结合,强调实践操作,充分调动学生的积极性,培养其编程思维和解决问题的能力。
通过分解课程目标为具体的学习成果,便于教学设计和评估。
二、教学内容1. 合工大C基础知识:包括变量、数据类型、运算符、表达式等基本概念,让学生掌握合工大C的基本语法。
教材章节:第一章至第三章2. 控制结构:讲解顺序结构、分支结构、循环结构等程序设计的基本控制逻辑。
教材章节:第四章至第六章3. 函数:介绍函数的定义、调用、参数传递等内容,培养学生模块化编程思想。
教材章节:第七章4. 数组与指针:讲解数组的使用、指针的概念及其应用,提高学生数据操作和处理能力。
教材章节:第八章至第九章5. 结构体与文件:学习结构体类型、文件操作等高级应用,使学生能够处理更复杂的编程问题。
教材章节:第十章至第十一章6. 综合案例:结合实际问题,进行程序设计实践,巩固所学知识,提高学生编程技能。
教材章节:综合案例教学内容安排与进度:第一周:合工大C基础知识(第一章至第三章)第二周:控制结构(第四章至第六章)第三周:函数(第七章)第四周:数组与指针(第八章至第九章)第五周:结构体与文件(第十章至第十一章)第六周:综合案例与实践教学内容确保科学性和系统性,以教材为基础,结合实践案例,使学生能够循序渐进地掌握合工大C编程知识。
合工大编译原理课程设计一、课程目标知识目标:1. 理解编译原理的基本概念,掌握编译程序的基本结构及工作流程;2. 掌握词法分析、语法分析、语义分析的主要方法;3. 了解代码优化和目标代码生成的基本策略。
技能目标:1. 能够运用形式语言和自动机理论对简单程序进行词法分析;2. 学会使用语法分析方法和工具对程序进行语法分析;3. 能够运用语义分析技术对程序进行语义检查;4. 能够运用所学知识编写简单的编译程序。
情感态度价值观目标:1. 培养学生对编译原理的兴趣,激发学习热情;2. 培养学生的团队协作精神,提高沟通能力;3. 培养学生严谨、细致的学术态度,提高问题分析和解决能力。
课程性质:本课程为合肥工业大学计算机科学与技术专业核心课程,旨在使学生掌握编译原理的基本知识,具备分析和设计编译程序的能力。
学生特点:学生已具备一定的编程基础和离散数学知识,具有一定的抽象思维能力。
教学要求:结合课程性质和学生特点,注重理论与实践相结合,强化学生动手实践能力,提高学生的编译程序设计与实现技能。
通过本课程的学习,使学生能够达到上述课程目标,为后续相关课程和实际工作打下坚实基础。
二、教学内容1. 编译原理概述:介绍编译程序的作用、基本结构和编译过程,使学生建立整体概念。
- 教材章节:第1章 编译概述2. 词法分析:讲解词法分析的任务、方法和实现技术,包括正则表达式、有限自动机等。
- 教材章节:第2章 词法分析3. 语法分析:介绍语法分析的方法、语法分析树和语法分析器的构造,包括LL(1)、LR(1)等分析方法。
- 教材章节:第3章 语法分析4. 语义分析:讲解语义分析的任务、属性文法和语义分析器的实现。
- 教材章节:第4章 语义分析5. 中间代码生成与优化:介绍中间代码的表示形式、生成方法以及优化策略。
- 教材章节:第5章 中间代码生成与优化6. 目标代码生成:讲解目标代码的生成方法、汇编指令的生成和代码优化。
- 教材章节:第6章 目标代码生成7. 实践环节:结合所学理论知识,设计并实现一个简单的编译程序。
程序设计基础(实验八)学号:姓名:专业:1.目的:掌握结构体,加深联合与枚举类型的理解。
2 题目:(1)建立结构student用于表示学生信息,如姓名、年龄、性别、成绩等,定义两个操作结构student的子函数input和display,函数input用于输入n个学生的有关信息,要求在input函数中利用new函数进行申请内存,将信息存储在这个空间上,display用于显示在这个空间上的信息。
(2)定义一个单链表,链表节点内只需保存该链表的名字或者编号,完成该单链表的建立与访问(分别利用不同的子函数)。
(3)使用枚举类型定义月份,并编写一个程序,根据用户输入的年份,输出该年各月的天数。
3 程序结果贴图(注意标明对应题号和进行简短说明)图1 题目(1)程序输入数据图2 题目(1)程序输出数据图3 题目(2)程序运行截图图4 题目(2)程序运行截图图5 题目(2)程序运行截图(正序,C版本)图6 题目(3)程序运行截图4 编程过程中碰到的问题及总结5 附源代码://1#include <iostream>#include <cstdio>//姓名、年龄、性别、成绩typedef struct student{char name[50];int y;char sex[10];int grade;}s;using namespace std;s *input(s *,int);s *display(s*,int);int main(){freopen("x1.in","r",stdin);freopen("x1.out","w",stdout);int n;s *stu;cin>>n;stu=input(stu,n);display(stu,n);return0;}s *input(s* st,int n){st=new s[n];for(int i=0;i<n;i++){cin>>st[i].name>>st[i].y>>st[i].sex>>st[i].grade;}return st;}s *display(s* st,int n){for(int i=0;i<n;i++){cout<<st[i].name<<" "<<st[i].y<<" "<<st[i].sex<<" "<<st[i].grade<<endl;}delete st;}//2#include <iostream>using namespace std;struct node{int data;node *next;};node *cr(int);void display(node *);int main(){int n;cin>>n;node *p=cr(n);display(p);return0;}node *cr(int n){node *tmp=NULL,*head=NULL;int num;cin>>num;head=new node;head->data=num;head->next=NULL;for(int i=0;i<n-1;i++){cin>>num;tmp=new node;tmp->data=num;tmp->next=head;head=tmp;}return head;}void display(node *s){node *tmp=s;while(tmp){cout<<tmp->data<<" "; tmp=tmp->next;}}//_front C version#include <stdio.h>#include <stdlib.h>typedef int Datatype;typedef struct Node{Datatype data;struct Node* next;}Node,*PNode;PNode Init(int);void display(Node*);int cmp(const void*,const void*);int main(){srand(time(NULL));int n;scanf("%d",&n);Node* p=Init(n);display(p);//qsort(p,n,sizeof(int),cmp);//display(p);return0;}PNode Init(int n){Node* tmp=NULL,* tail=NULL,* head=NULL;int num;num=rand()%(10000-100)+100;head=(PNode)malloc(sizeof(Node));head->data=num;head->next=NULL;tail=head;for(int i=0;i<n-1;i++){num=rand()%(10000-100)+100;tmp=(PNode)malloc(sizeof(Node));tmp->data=num;tmp->next=NULL;tail->next=tmp;tail=tmp;}return head;void display(Node* s){PNode tmp=s;while(tmp){printf("%d ",tmp->data);tmp=tmp->next;}printf("\n");}/*int cmp(const void* a,const void* b) {return *(int*)a-*(int*)b;}*///3#include <iostream>using namespace std;enum Moth{January,February,March,April,May,June,July,August ,September,October,Novermber,December};void leap(int);int main(){leap(2000);cout<<endl;leap(1998);cout<<endl;leap(2010);cout<<endl;leap(2018);return0;void leap(int y){if((y%400==0)||((y%4==0)&&(y%100!=0))){cout<<January+1<<" = 31"<<endl;cout<<February+1<<" = 29"<<endl; cout<<March+1<<" = 31"<<endl;cout<<April+1<<" = 30"<<endl;cout<<May+1<<" = 31"<<endl;cout<<June+1<<" = 30"<<endl;cout<<July+1<<" = 31"<<endl;cout<<August+1<<" = 31"<<endl;cout<<September+1<<" = 30"<<endl; cout<<October+1<<" =31"<<endl;cout<<Novermber+1<<" =30"<<endl; cout<<December+1<<" = 31"<<endl;}else{cout<<January+1<<" = 31"<<endl;cout<<February+1<<" = 28"<<endl; cout<<March+1<<" = 31"<<endl;cout<<April+1<<" = 30"<<endl;cout<<May+1<<" = 31"<<endl;cout<<June+1<<" = 30"<<endl;cout<<July+1<<" = 31"<<endl;cout<<August+1<<" = 31"<<endl;cout<<September+1<<" = 30"<<endl; cout<<October+1<<" =31"<<endl;cout<<Novermber+1<<" =30"<<endl; cout<<December+1<<" = 31"<<endl;}}。