西安交大并行计算作业
- 格式:doc
- 大小:302.66 KB
- 文档页数:19
一、单选题(共30 道试题,共60 分。
)V 1. 伪指令ENDP告诉汇编程序()A. 宏定义结束B. 过程定义结束C. 段定义结束D. 过程运行结束满分:2 分2. 占用CPU时间最长的数据传送方式是()A. DMAB. 中断C. 查询D. 无条件满分:2 分3. 存取周期是指()A. 存储器的写入时间B. 存储器的读出时间C. 存储器进行连续写操作允许的最短时间间隔D. 存储器进行连续读/写操作允许的最短时间3间隔满分:2 分4. 某系统中,已知建立堆栈时SS=2360H,SP=0800H,经过一段时间后,SP的内容变为0700H,则堆栈中有多少个字的数据()A. 80HB. 50HC. 100D. 100H满分:2 分5. 下面有关MN/MX的叙述正确的是()A. 是工作模式选择信号,由CPU产生,为高电平时CPU工作在最小模式,为低电平时,CPU工作在最大模式B. 是工作模式选择信号,由CPU产生,为低电平时CPU工作在最小模式,为高电平时,CPU工作在最大模式C. 是工作模式选择信号,由外部输入,为低电平时CPU工作在最小模式,为高电平时,CPU 工作在最大模式D. 是工作模式选择信号,由外部输入,为高电平时CPU工作在最小模式,为低电平时,CPU工作在最大模式满分:2 分6. 若SI=0053H,BP=0054H,执行SUBSI,BP后,则()A. CF=0,OF=0B. CF=0,OF=1C. CF=1,OF=0D. CF=1,OF=1满分:2 分7. 80486CPU响应中断时,自动压入堆栈的信息是()A. AX,BX,CX,DX的内容B. AX,CX的内容C. CS,IP,SP的内容D. CS,IP,标志寄存器的内容满分:2 分8. 运算器在执行两个用补码表示的整数加法时,判断其是否溢出的规则为()A. 两个整数相加,若最高位(符号位)有进位,则一定发生溢出B. 两个整数相加,若结果的符号位为0,则一定发生溢出C. 两个整数相加,若结果的符号位为1,则一定发生溢出D. 两个同号的整数相加,若结果的符号位与加数的符号位相反,则一定发生溢出满分:2 分9. 已知(BP)=0100H,(DS)=7000H,(SS)=8000H,(80100H)=24H,(80101H)=5AH,(70100H)=01H,(70101H)=02H,指令MOVBX,[BP]执行后,(BX)=()A. 0102HB. 0201HC. 245AHD. 5A24H满分:2 分10. 算术移位指令SAR用于()A. 带符号数乘2B. 带符号数除2C. 无符号数乘2D. 无符号数除2满分:2 分11. 下列有关指令指针寄存器的说法中,哪一个是正确的()A. IP存放当前正在执行的指令在代码段中的偏移地址B. IP存放下一条将要执行的指令在代码段中的偏移地址C. IP存放当前正在执行的指令在存储器中的物理地址D. IP存放当前正在执行的指令在存储器中的段地址满分:2 分12. PC机执行输出指令OUT时,向相应的I/O接口芯片产生的有效控制信号是()A. AENB. IORC. IOWD. ALE满分:2 分13. 通常,中断服务程序中的一条STI指令目的是()A. 允许低一级中断产生B. 开放所有可屏蔽中断C. 允许同级中断产生D. 允许高一级中断产生满分:2 分14. 下列总线中,属于局部总线的是()A. ISAB. EISAC. MCAD. PCI满分:2 分15. 设8259A当前最高优先级为IR5,如果要使该中断在下一循环中变为最低优先级,则OCW2应设为()A. 11100000B. 10100101C. 10100000D. 01100101满分:2 分16. 计算机工作中只读不写的存储器是()A. DRAMB. ROMC. SRAMD. EEPROM满分:2 分17. 采用高速缓存Cache的目的是()A. 提高总线速度B. 提高主存速度C. 使CPU全速运行D. 扩大寻址空间满分:2 分18. 设某一个单元的物理地址是54321H,则正确的逻辑地址表示为()A. 4321H:50000HB. 54320H:1HC. 5430H:0021HD. 5432H:00001H满分:2 分19. 计算机内部,一切信息的存取,处理和传送都是以()形式进行A. EBCDIC码B. ASCII码C. 十六进制编码D. 二进制编码满分:2 分20. 在下列伪指令中定义字变量的是()A. DDB. DWC. DQD. DT满分:2 分21. INC指令不影响()标志A. OFB. CFC. SFD. ZF满分:2 分22. 8086的CPU由()两部分组成。
西安交通大学17年9月课程考试《微机原理与接口技术》作业考核试题试卷总分:100 得分:100一、单选题 (共 30 道试题,共 60 分)abc1. 下列指令中不会改变指令指针寄存器内容的是()A. MOVB. JMPC. CALLD. RET满分:2 分正确答案:A2. 实模式下,80486管理的内存空间中,地址为00000H~003FFH中存放着()A. 用户程序代码B. BIOS代码C. DOS系统代码D. 中断向量表满分:2 分正确答案:D3. 实模式下,NMI中断的中断矢量在中断矢量表中的位置是()A. 由DOS自动分配B. 由程序指定C. 固定在已0008H开始的2个字单元中D. 固定在中断矢量表表首满分:2 分正确答案:C4. 占用CPU时间最长的数据传送方式是()A. DMAB. 中断C. 查询D. 无条件满分:2 分正确答案:C5. 利用程序查询方式传送数据时,CPU必须读()以判断是否传送数据A. 外设的状态B. DMA的请求信号C. 数据输入信息D. 外设中断请求满分:2 分正确答案:A6. 对可编程接口芯片进行读/写操作的必要条件是()A. RD=0B. WR=0C. RD=0或WR=0D. CS=0满分:2 分正确答案:D7. 若已知[X]补=11101011B,[Y]补=01001010B,则[X–Y]补=()A. 10100001BB. 11011111BC. 10100000BD. 溢出满分:2 分正确答案:A8. 算术移位指令SAR用于()A. 带符号数乘2B. 带符号数除2C. 无符号数乘2D. 无符号数除2满分:2 分正确答案:B9. 在下列各种中断中,需由外部电路提供中断类型号的是()A. INTOB. INTnC. NMID. INTR满分:2 分正确答案:D10. 8086的CPU由()两部分组成。
A. SP、ALUB. 控制器、FLAGSC. EU、BIUD. EU、ALU满分:2 分正确答案:C11. 80486CPU进行算术和逻辑运算时,可处理的信息的长度为()A. 32位B. 16位C. 8位D. 都可以满分:2 分正确答案:D12. 将微处理器、内存储器及I/O接口连接起来的总线是()A. 片总线B. 外总线C. 系统总线D. 局部总线满分:2 分正确答案:C13. 下列描述正确的是()A. 汇编语言仅由指令性语句组成B. 汇编语言包括指令性语句和伪指令语句C. 指令性语句和伪指令语句的格式是完全相同的D. 指令性语句和伪指令语句需经汇编程序翻译成机器代码后才能执行满分:2 分正确答案:B14. 80486CPU响应中断时,自动压入堆栈的信息是()A. AX,BX,CX,DX的内容B. AX,CX的内容C. CS,IP,SP的内容D. CS,IP,标志寄存器的内容满分:2 分正确答案:D15. 下列指令中,错误的是()A. MOVBX,OFFSETBUFB. LEASI,BUFC. LEADI,OFFSETBUFD. MOVBP,SEGBUF满分:2 分正确答案:C16. 下列引起CPU程序中断的四种情况中,()需要由硬件提供中断类型码A. INTOB. NMIC. INTRD. INTn满分:2 分正确答案:C17. 在中断方式下,外设数据输入到内存的路径是()A. 外设→数据总线→内存B. 外设→数据总线→CPU→内存C. 外设→CPU→DMAC→内存D. 外设→I∕O接口→CPU→内存满分:2 分正确答案:D18. 转移类指令对标志位的状态()A. 有影响B. 部分影响C. 无影响D. 随意满分:2 分正确答案:C19. 欲从存储单元取某操作数,可采用()A. 寄存器寻址、寄存器间接寻址B. 立即寻址、直接寻址C. 立即寻址、寄存器间接寻址D. 寄存器间接寻址、直接寻址满分:2 分正确答案:D20. 某系统中,已知SS=2360H,SP=0800H,若将20H个字节的数据入栈,则SP的内容为()A. 0780HB. 0820HC. 23E20HD. 07E0H满分:2 分正确答案:D21. 某系统中,已知建立堆栈时SS=2360H,SP=0800H,经过一段时间后,SP的内容变为0700H,则堆栈中有多少个字的数据()A. 80HB. 50HC. 100D. 100H满分:2 分正确答案:A22. 若AL=3BH,AH=7DH,则AL和AH中的内容相减后,标志CF、AF和PF的状态分别是()A. 0、0、1B. 1、1、1C. 0、1、0D. 1、0、0满分:2 分正确答案:B23. 计算机工作中只读不写的存储器是()A. DRAMB. ROMC. SRAMD. EEPROM满分:2 分正确答案:B24. ()表示中,二进制数11111111B表示十进制数–1A. 原码B. 反码C. 补码D. BCD码满分:2 分正确答案:C25. INC指令不影响()标志A. OFB. CFC. SFD. ZF满分:2 分正确答案:B26. 当AH=()时,执行INT21H指令可在屏幕上显示一组字符A. 01HB. 02HC. 09HD. 0AH满分:2 分正确答案:C27. 利用程序查询方式传送数据时,CPU必须读()以判断是否传送数据A. 外设的状态B. DMA的请求信号C. 数据输入信息D. 外设中断请求满分:2 分正确答案:A28. 若SI=0053H,BP=0054H,执行SUBSI,BP后,则()A. CF=0,OF=0B. CF=0,OF=1C. CF=1,OF=0D. CF=1,OF=1满分:2 分正确答案:C29. 微机系统中的存储器可分为四级,其中存储容量最大的是()A. 内存B. 内部寄存器C. 高速缓冲存储器D. 外存满分:2 分正确答案:D30. 微机的内存器可用()构成A. RAM和ROMB. 硬盘C. 软盘D. 光盘满分:2 分正确答案:A二、判断题 (共 20 道试题,共 40 分)1. I/O接口的基本功能之一是完成数据的缓冲。
计算机组成实验报告计算机66熊鹏飞2160500151实验十基于MIPS指令集的CPU设计一、实验目的1.综合运用Verilog进行复杂系统设计。
2.深刻理解计算机系统硬件原理。
二、实验内容1.设计一个基于MIPS指令集的CPU。
2.CPU需要包含寄存器组、RAM模块、ALU模块、指令译码模块。
3.该CPU能运行基本的汇编指令。
4.实现cache,流水线或其他现代CPU的高级功能(加分项)三、实验要求1.分析各模块的的程序结构,画出其流程图。
单周期CPU指的是一条指令的执行在一个时钟周期内完成,然后开始下一条指令的执行,即一条指令用一个时钟周期完成。
电平从低到高变化的瞬间称为时钟上升沿,两个相邻时钟上升沿之间的时间间隔称为一个时钟周期。
CPU在处理指令时,一般需要经过以下几个步骤:(1) 取指令(IF):根据程序计数器PC中的指令地址,从存储器中取出一条指令,同时,PC 根据指令字长度自动递增产生下一条指令所需要的指令地址,但遇到“地址转移”指令时,则控制器把“转移地址”送入PC,当然得到的“地址”需要做些变换才送入PC。
(2) 指令译码(ID):对取指令操作中得到的指令进行分析并译码,确定这条指令需要完成的操作,从而产生相应的操作控制信号,用于驱动执行状态中的各种操作。
(3) 指令执行(EXE):根据指令译码得到的操作控制信号,具体地执行指令动作,然后转移到结果写回状态。
(4) 存储器访问(MEM):所有需要访问存储器的操作都将在这个步骤中执行,该步骤给出存储器的数据地址,把数据写入到存储器中数据地址所指定的存储单元或者从存储器中得到数据地址单元中的数据。
(5) 结果写回(WB):指令执行的结果或者访问存储器中得到的数据写回相应的目的寄存器中。
单周期CPU,是在一个时钟周期内完成这五个阶段的处理。
2.画出模块的电路图。
3.分析电路的仿真波形,标出关键的数值。
4.记录设计和调试过程。
1.wire和reg是什么意思?——在verilog里面,变量有wire和reg两种类型,wire类型意为线,它不可储存中间结果,通过输入得出输出,类似纯函数,只要输入变化,输出立即变化,如果没有输入,自然就没有输出。
高等计算机体系结构作业6:预取和并行1预取 I 20分假如你是一位架构师,正在为你的机器设计预取引擎。
你先在机器上使用跨度预取器执行了A和B两个应用。
应用A:uint8_t a[1000];sum = 0;for (i = 0; i < 1000; i += 4){sum += a[i];}应用B:uint8_t a[1000];sum = 0;for (i = 1; i < 1000; i *= 4){sum += a[i];}i 和 sum在寄存器中,数组a在内存中,一个cache块大小为4个字节。
(a) 使用跨度预取器,应用A和B的预取精度和覆盖率分别是多少?这个跨度预取器检测两次连续访存的跨度,从当前访问的cache块按照这个跨度预取下一个cache块。
答:应用A可以看到执行了1000/4=250次,第一次去内存取数组,而cache块大小为4字节32位,数组访问每次间隔为4,数组存储单位为无符号的8位,刚好每次访存时候都是一个cache块,因此第一次和第二次会访存形成跨度为4的预取模式。
访问序列为a[0],a[4], a[8],…,a[996],预取序列从a[8],…,a[996],a[1000](访问a[996]时候会预取a[1000]),因此有249个块被预取,248个块被使用,所以预取精度为248/249=99.6%,cache块缺失250次,预取消除块缺失有248次,因此覆盖率为248/250=99.20%应用B访问为a[1],a[4], a[16], a[64], a[256],由于访存的跨度不是常数,所以所有预取都没命中,因此覆盖率和命中率都为0。
(b) 请分别为应用A和B建议能获得更好的精度和覆盖率的预取器i) 应用A答:预取器总是预取下一个块的方式,这样的话a[4]这个块在a[0]访问的时候就会被预取,从而使得预取精度提高到为249/250,覆盖率为249/250。
西安交通大学实验报告课程__计算机程序设计__实验名称_课外实验题目__第 1 页共 19 页系别___ _______ 实验日期 2014 年 4月 3日专业班级____组别_____________ 实验报告日期 2014 年4 月 5日姓名___ _____学号_ _报告退发 ( 订正、重做 )同组人_________________________________ 教师审批签字一、实验目的复习巩固本阶段所学的知识,包括数组的使用、函数的使用、循环语句和条件语句的使用等。
二、实验内容(一)第一题:1、编写一个程序,计算m~n范围内的每个正整数的全部素因子。
其中的m和n由键盘输入。
评分标准:(1)程序框架完整,代码规范;(20%)(2)数据类型的定义和使用方法正确;(20%)(3)程序控制结构使用正确;(20%)(4)算法正确,清晰合理;(20%)(5)运行结果正确,输入和输出格式如下所示。
(20%)请输入m和n:15 1815的非平凡因子:3 516的非平凡因子:2 4 817的非平凡因子:18的非平凡因子:2 3 6 91.源程序代码:#include<iostream>using namespace std;void suyinzi(int x);int main(){int m,n;cout<<"请输入正整数m和n(m<=n):";cin>>m>>n;while(m>n){cout<<"您输入有误,m应该小于等于n,请重新输入:";cin>>m>>n;}for(int j=m;j<=n;j++)//对于范围内的正整数逐一判断寻找因子{suyinzi(j);}return 0;}void suyinzi(int x)//寻找并输出x的所有非平凡因子{cout<<x<<"的非平凡因子为:";for(int i=2;i<=x/2;i++){if(x%i==0){cout<<i<<" ";}}cout<<endl;}2.实验结果:3.问题分析:此题简单,但当该数没有非平凡因子时,如能够输出:“x没有非平凡因子!”而非仅仅输出空白则更好。
有限元并行计算的MPI程序设计
雒战平;刘之行
【期刊名称】《西安交通大学学报》
【年(卷),期】2004(038)008
【摘要】以Poisson方程边值问题的求解为背景,实现了有限元并行计算的MPI 程序设计.通过生成一种特殊结构的刚度矩阵,并在此基础上,设计了一套有效的并行计算策略,使计算的并行性得到很好的开拓,实现了包括刚度矩阵的生成、刚度矩阵的三角分解以及解三角方程组的并行执行.程序在国家高性能计算中心(西安)的曙光3000上进行了数值试验,结果表明,随着开辟进程数目的增多,加速比变得比较理想,当进程数目为30时,表明该进程数目在最优进程值附近.在60台处理器(进程)上计算18万个节点的大规模问题时,共耗时176.964 15 s.
【总页数】4页(P873-876)
【作者】雒战平;刘之行
【作者单位】西安交通大学理学院,710049,西安;西安交通大学理学院,710049,西安
【正文语种】中文
【中图分类】O242.21
【相关文献】
1.基于MPI+FreeFem++的有限元并行计算 [J], 尚月强
2.基于MPI+FreeFem++的有限元并行计算 [J], 尚月强
3.MPI网络并行计算系统通信性能及并行计算性能的研究 [J], 孟杰;孙彤
4.微机网络并行计算环境Linux,并行计算平台MPI及其应用 [J], 吴锤红;吴锤结
5.基于MPI并行计算方法的实践 [J], 郭福洲
因版权原因,仅展示原文概要,查看原文内容请购买。
mpi并行计算分布式作业
MPI并行计算分布式作业涉及将一个大的计算任务拆分成多个较小的子任务,然后将这些子任务分配给多个处理器核心并行执行,以提高计算效率和减少计算时间。
MPI并行计算广泛应用于高性能计算、数据挖掘、科学计算等领域。
以下是一个简单的MPI并行计算分布式作业的示例:
1.任务拆分:首先,将原始的大任务拆分成多个较小的子任务,每个子任务可以在不同的处理器核心上独立执行。
2.任务分配:使用MPI的通信协议,将子任务分配给各个处理器核心。
这可以通过使用MPI的"send"和"recv"函数来实现。
3.任务执行:每个处理器核心执行相应的子任务,并通过MPI的通信机制进行数据交换。
这可以涉及到进程间通信(IPC)和消息传递等操作。
4.结果合并:最后,各个处理器核心将结果汇总,合并成一个完整的输出结果。
这可以通过使用MPI的"reduce"函数来实现。
需要注意的是,MPI并行计算分布式作业需要处理数据传输和同步等问题,以确保各个处理器核心之间的正确通信和协同工作。
同时,
还需要注意负载均衡和资源利用率等问题,以充分发挥并行计算的优点。
计算方法上机报告姓名:学号:班级:机械硕4002上课班级:02班说明:本次上机实验使用的编程语言是Matlab 语言,编译环境为MATLAB 7.11.0,运行平台为Windows 7。
1. 对以下和式计算:∑∞⎪⎭⎫ ⎝⎛+-+-+-+=0681581482184161n n n n S n,要求:① 若只需保留11个有效数字,该如何进行计算; ② 若要保留30个有效数字,则又将如何进行计算;(1) 算法思想1、根据精度要求估计所加的项数,可以使用后验误差估计,通项为: 142111416818485861681n n n a n n n n n ε⎛⎫=---<< ⎪+++++⎝⎭; 2、为了保证计算结果的准确性,写程序时,从后向前计算; 3、使用Matlab 时,可以使用以下函数控制位数: digits(位数)或vpa(变量,精度为数)(2)算法结构1. ;0=s⎪⎭⎫⎝⎛+-+-+-+=681581482184161n n n n t n; 2. for 0,1,2,,n i =⋅⋅⋅ if 10m t -≤end;3. for ,1,2,,0n i i i =--⋅⋅⋅;s s t =+(3)Matlab源程序clear; %清除工作空间变量clc; %清除命令窗口命令m=input('请输入有效数字的位数m='); %输入有效数字的位数s=0;for n=0:50t=(1/16^n)*(4/(8*n+1)-2/(8*n+4)-1/(8*n+5)-1/(8*n+6));if t<=10^(-m) %判断通项与精度的关系break;endend;fprintf('需要将n值加到n=%d\n',n-1); %需要将n值加到的数值for i=n-1:-1:0t=(1/16^i)*(4/(8*i+1)-2/(8*i+4)-1/(8*i+5)-1/(8*i+6));s=s+t; %求和运算ends=vpa(s,m) %控制s的精度(4)结果与分析当保留11位有效数字时,需要将n值加到n=7,s =3.1415926536;当保留30位有效数字时,需要将n值加到n=22,s =3.14159265358979323846264338328。
并行计算与程序设计作业班级:姓名:学号:1.1至1.3节作业1.调试课件中的所有程序,并完成作业,同时在程序结果中需要输出个人信息;代码:Program mainwrite(*,*)'班级:', 'write(*,*)'姓名:',' 'print *,'学号:',''end2.编写一个数值求解方程的程序,方程为4.1x3 −5.3x=11.8,求解区间为(1,5),误差小于1e-6。
代码:a=1b=5if(f(a)*f(b).LT.0) thenwrite(*,*)'inter:(',a,',',b,')'Loop1: do while((abs(f(a)-f(b)).gt.10e-6).and.$ (abs(a-b).gt.10e-6))c=(a+b)/2if(f(a)*f(c).le.0)thenb=celsea=cend ifend do Loop1write(*,*)'x=',celsewrite(*,*)'Please input real interval'end ifendreal function f(x)f=4.1*x**3-5.3*x-11.8end结果:1.4节作业1.采样简单离散求和法求下面积分值:∫x2sin(x)+1xx 1代码:read(*,*) a,b,nh=(b-a)/(2.0*n)s=0.0x=a+hf2=0.0f4=0.0loop1: do i=1,n-1 x=x+hf2=f2+f(x)x=x+hf4=f4+f(x)end do loop1s=h/3.0*(f(a)+f(b)+4.0*f4+2.0*f2)write(*,150) s100 format(1x,'a=',f8.2,2x,'b=',f8.2,$ 2x,'n=',i4)150 format(1x,'s=',f16.7)endreal function f(x)f=x**2/(sin(x)+1)endd ouble precision i,ai,ydouble precision sum=0i=1do 10 while(1/i.gt.1e-5)sum=1/i+sumi=i+110 continuewrite(*,*) 'sum=',sumend结果:1.6节作业1.调试课本中的所有程序;(结果略)2.用双精度型数据计算:∑1x=11+12+13+⋯+1xxx=1直到1x≤10−5代码:double precision sum=0i=1do 10 while(1/i.gt.1e-5)sum=1/i+sumi=i+110 continuewrite(*,*) 'sum=',sumend结果:3.已知三角形三个顶点的坐标分别为A(1.5,2.5),B(-2.5,1), C(1,-1),采用复型数据类型求三角形的面积和重心。
代码:complex a,b,c,center,area,perimetera=(1.5,2.5)b=(-2.5,1)c=(1,-1)center=(a+b+c)/3perimeter=(a+b+c)/2area=sqrt(perimeter*(perimeter-a)*(perimeter-b)*$(perimeter-c))write(*,10)"center=",centerwrite(*,10)"area=",area10 format(1x,a,f6.3,f6.3)End结果:4.尝试编写课件例子中对应的破译程序。
有兴趣可以尝试修改原编码程序中后移位数(当前为5)变化的情况,比如移动位数为当前位置序号。
代码:program maincharacter*80 line1,line2character l1read(*,*)line1n=len(line1)do 10 i=1,nl1=line1(i:i)if((lge(l1,'A').and.lle(l1,'Z')).or.$ (lge(l1,'a').and.lle(l1,'z'))) thenm=ichar(l1)+iif((m.ge.ichar('a').and.m.le.ichar('z')).or.$(m.ge.ichar('A').and.m.le.ichar('Z')))thenelsem=m-26endifline2(i:i)=char(m)elseline2(i:i)=l1endif10 continuewrite(*,*)line2end结果:代码1.7节作业1.调试课件中的所有程序;(结果略)xx2+x0x+x0,其中x0是初始位2.自由落体位移公式为:其中s=12置,x0是初始速度,x为重力加速度,x为经历时间,编写一段程序根据时间值求位移s。
设x0=1.2m,x0=2.5m/s x0(用格式输入语句读入t,并格式输出结果。
)代码:program mainreal twrite(*,*) "Please input the time"read(*,*)tcall sum(t,s)write(*,10)"time=",twrite(*,10)"displacement=",s10 format(1x,a,f10.2)endsubroutine sum(t0,s)real t0,s,s0,v0,gs0=1.2v0=2.5g=9.8s=(g*t0**2)/2+v0*t0+s0end结果:1.8节作业1. 采用三种方法(矩形法、梯形法和Simpson 法)编程对进行积分,积分上下限等参数需通过read 语句从外部调入,并最终比较三种方法与理论解进行比较;∫xxxx (x )xx xx 代码:C 矩阵法real errorread(*,*) a,b,nx=ah=(b-a)/nf0=x*sin(x)s=0.0 do 10 i=1,nsi=f0*hs=s+six=x+hf0=x*sin(x)10 continuewrite(*,100) a,b,nwrite(*,200) s100 format(1x,'a=',f10.3,3x,'b=',$ f10.3,3x,'n=',i4)200 format(1x,'s=',f15.8)error=sin(b)-sin(a)-b*cos(b)+a*cos(a)-swrite(*,300) error300 format(1x,'error=',f16.10)endC 梯形法real errorread(*,*) a,b,nx=ah=(b-a)/ns=0.0do 10 i=1,nsi=((x+(i-1)*h)*sin(x+(i-1)*h)+$ (x+(i-1)*h)*sin(x+i*h))*h/2.0s=s+si10 continuewrite(*,100) a,b,nwrite(*,200) s100 format(1x,'a=',f10.3,3x,$ 'b=',f10.3,3x,'n=',i4)200 format(1x,'s=',f15.8)error=sin(b)-sin(a)-b*cos(b)+a*cos(a)-swrite(*,300) error300 format(1x,'error=',f16.10)endC sinpson法real errorread(*,*) a,b,nh=(b-a)/(2.0*n)s=0.0fa=fun(a)fb=fun(b)x=a+hf2=0.0f4=fun(x)do 10 i=1,n-1x=x+hf2=f2+fun(x)x=x+hf4=f4+fun(x)10 continues=h/3.0*(fa+fb+4.0*f4+2.0*f2)write(*,100) a,b,nwrite(*,150) s100 format(1x,'a=',f8.2,2x,'b=',f8.2, $ 2x,'n=',i4)150 format(1x,'s=',f16.7)error=sin(b)-sin(a)-b*cos(b)+a*cos(a)-swrite(*,200) error200 format(1x,'error=',f16.10)endreal function fun(x)fun=x*sin(x)end结果:矩阵法结果:梯形法结果:Sinpson法结果:分析:从上面得到的结果可以看出矩阵法误差最大,sinpson法次之,梯形法最优,但是从数学上分析,Sinpson法应得到最好的结果,在本题中误差较小,在可以接受的误差范围之内,如果遇到变化较大的函数进行积分,可以预见的是,sinpson法最优,梯形法次之,矩形法误差最大。
3.编程对任意系数一元多次方程x=x x x x+x x−1x x−1+x2x2+x0进行求根,求根范围和方程系数通过read语句从外部调入(采用一种方法即可,注意无根的处理);代码:program main5 read(*,*) x1,x2,a1,a2,a3,a4f1=a1*x1**3+a2*x1**2+a3*x1+a4f2=a1*x2**3+a2*x2**2+a3*x2+a4if(sign(f1,f2).eq.f1) goto 5f=1.020 if((abs(x1-x2).gt.1e-5).and.$ abs(f).gt.1e-6) thenx=x2-(x2-x1)/(f2-f1)*f2f=a1*x**3+a2*x**2+a3*x+a4if(sign(f,f1).eq.f) thenx1=xf1=felsex2=xf2=fend ifgoto 20end ifif(abs(f).gt.1e-6) x=(x1+x2)/2.0write(*,100) x100 format(1x,'x=',f15.7)end结果:4.改编课件中求函数极值程序,实现最大值的求解,函数为:x(x)=−3x2+8x+7代码:real low,high,x1,x2read(*,*) low,highwrite(*,200)x1=low+0.618*(high-low)x2=high-0.618*(high-low)10 if(high-low.gt.1e-4) then f1=3*x1*x1-8.0*x1-7.0f2=3*x2*x2-8.0*x2-7.0write(*,202) x1,f1,x2,f2if(f1.gt.f2) thenhigh=x1x1=x2x2=high-0.618*(high-low) elselow=x2x2=x1x1=low+0.618*(high-low) end ifgoto 10end iff1=3*x1*x1-8.0*x1-7.0f2=3*x2*x2-8.0*x2-7.0if(f1.gt.f2) thenf=f2x=x2elsef=f1x=x1end ifwrite(*,204) x,f200 format(12x,'x1',14x,'f1',$ 13x,'x2',13x,'f2'/)202 format(1x,4f15.7)204 format('0','x=',f10.6,5x,$ 'f(x)=',f16.10)end结果:。