第7章例题源程序
程序设计语言编译原理第三版第7章

N→ Є
D →id: T { enter(top(tblptr), , T.type, top(offset)); top(offset):= top(offset) +T.width } 24
§7.2
说明语句
2.含嵌套说明的翻译模式:
(1)语义规则中的操作: Mktable (previous): 创建一张新符号表,并返回指向新表的一个指针; Enter (table, name, type, offset):
(2)置相对地址为当前offset之值, (3)使offset加上该名字所表示的数据对象的域宽。
20
§7.2 说明语句
3. 相应的翻译模式:
PD { offset:=0 } { enter (, T.type,offset);
DD;D
Did:T
offset:=offset+t.width } Tinteger
(0) (1) (2) (3) (4) (5)
(2) (3) (4)
16
§7.1 中间语言
4.间接三元式:便于代码优化处理
方法:间接码表+三元式表
按运算的先后顺序列出有关三元式在三元表中的位置 例: 语句X:=(A+B)*C;Y:=D↑(A+B)的间接三元式表示如下所示: 间接代码 三元式表 (1) (2) (3) (1) (4) (5)
30
已归约串
PLACE
输入串
语义动作
# #X # X:= # X:= # X:= # X:= # X:=
X:= -B*(C+D)# X := -B*(C+D)# X_ -B*(C+D)# X__ B*(C+D)# -B X__B *(C+D)# -E X__B *(C+D)# { E.place:=p=<B>} E1 X_T1 *(C+D)# {E1.place:=newtemp=T1; 生成四元式(1) } … … … … # X:=E*(C X_T1__C +D)# # X:=E*(E1 X_T1__C +D)# { E1.place:=p=<C> } … … … …
C语言程序设计第四版_谭浩强7章

➢函数的功能
return z; }
函数体
函数首部,不是语 句,行尾无分号
精选课件ppt
函数的返回值,类 型与首部定义一致14
函数的定义
关于函数类型的说明
无返回值的函数类型为void; 有返回值的函数,其类型根据返回值 类型决定;省略类型时默认为int(建议 不要省略)
精选课件ppt
15
函数的调用
int main( )
{ int max(int a[ ],int n);
int x[6],i;
for(i=0;i<=5;i++)
scanf("%d",&x[i]);
printf("max=%d",max(x,6));
return 0;
}
实参为数组名
精选课件ppt
int max(int a[ ],int n) { int m,i; m=a[0]; for (i=1;i<n;i++)
float fac; fac=1; for(i=1;i<=n;i++)
fac=fac*i; return fac;
printf("c="); scanf("%d",&c);
}
sum=factorial(a)+factorial(b)+factorial(c);
printf("%d!+%d!+%d!=%.0f",a,b,c,sum);
函数1 函数2 函数3
函数1 函数2
精选课件ppt
34
变量作用域——局部变量和全局变量
VB实习第七章

实习内容:例题7-1以下程序段用来在C盘根目录下建立一个名为test.txt的顺序文件。
例题7-2某班30名同学学习成绩如表7-2所示。
建立一个名为“student.txt”的顺序文件存放该班同学的学习成绩,每条记录包括学号、姓名、高数、英语、物理、计算机刘向数据。
例题7-3对例题7-2中生成的“student.txt”文件记录进行如下处理:(1)计算每个学生的平均成绩。
(2)将平均成绩大于或等于80分的记录写入“student1.txt”文件中。
例题7-4统计例题7-3中生成的“student1.txt”文件中的记录数。
例题7-5将例题7-2生成的顺序文件“student.txt”读出,按随机方式写入随机文件“student2.txt”中。
例题7-6从随机文件“student2.txt”中读出数据,计算平均成绩,并将大于或等于80分的学生成绩写入另一个随机文件“student3.txt”中。
例题7-7以二进制模式建立一个数据文件,其中的内容是随机产生的100个大写字母。
例题7-8以二进制方式读取文件text。
Txt,并将结果显示在文本框中。
例题7-9编写一个复制文件的程序。
例题7-10编写一个加密软件,要求将源文件按“字节逐位倒排序加密法”,加密。
习题7-3把随机产生的200个4位整数存入顺序文件file1.txt中。
事件代码为:Private Sub Command1_Click()Dim a(1 To 200) As Integer, i%, n%, m%For i = 1 To 200a(i) = Int(Rnd * 9000 + 1000)Next iOpen "H:\VB实习\周晓伟\实验七\file1.txt" For Output As #1For m = 1 To 200Write #1, a(m);If m Mod 20 = 0 ThenPrint #1,End IfNext mCloseEnd Sub运行结果为:习题7-4从第三题的file1.txt文件中读出数据存入数组a中,从中挑选出所有各位和百位是偶数的数据存入数组b中,并存储到随机文件file2.txt中。
第七章程序设计基础

(2)FOR—ENDFOR语句 格式:FOR <循环变量>= <初值>TO<终值> [STEP<步长>] <循环体> ENDFOR 注释: ① <步长>的默认值为1 ② <初值>、<终值>和<步长>都可以是数值表达式。但这些数 值表达式仅在循环语句执行开始时被计算一次。在循环语 句的执行过程中,初值、终值和步长是不会改变的。 ③ 可以在循环体内改变循环变量的值,但这影响循环体的执 行次数 ④ EXIT和LOOP同样可以出现在该循环语句的循环体内。当 执行到LOOP时,结束循环体的本次执行,然后循环变量 增加一个步长值,并再次判断循环条件是否成立。 例题见P168
3、循环结构 循环结构也称为重复结构,是指程序在执行过程中,其 中的某段代码被重复执行若干次。被重复执行的代码段, 通常称为循环体。VF支持循环结构的语句包括:DO WHILE—ENDDO、FOR—ENDFOR和SCAN— ENDSCAN。 (1)DO WHILE—ENDDO语句 格式:DO WHILE<条件> <语句序列1> [LOOP] <语句序列2> [EXIT] <语句序列3> ENDDO
三、多模块程序 模块是一个相对独立的程序段,它可以被其它模块 调用,也可以调用其他模块。通常,把被调用的模 块称为子程序,把调用其他模块而没有被其他模块 调用的模块称为主程序。应用程序一般都是多模块 程序,包含多个程序模块。 1、模块的定义与调用 (1)模块的定义 在VF中,模块可以是命令文件,也可以是过程。过 程定义的语句格式为: PROCEDURE / FUNCTION<过程名> <命令序列> [RETURN[<表达式>]] ENDPROC / ENDFUN
经典C++源程序

求数组最大值,最小值及其下标# include<iostream.h>void cout_max(void*p,int x,int n){int max=0,min=0;if(x==4){float*p1;p1=(float*)p;for(int i=1;i<n;i++){if(p1[i]>p1[max])max=i;if(p1[i]<p1[min])min=i;}cout<<"float型数组中:\n";cout<<"最大值为:"<<p1[max]<<"其下标为:"<<max<<endl;cout<<"最小值为:"<<p1[min]<<"其下标为:"<<min<<endl;}if(x==8){double*p1;p1=(double*)p;for(int i=1;i<n;i++){if(p1[i]>p1[max])max=i;if(p1[i]<p1[min])min=i;}cout<<"double型数组中:\n";cout<<"最大值为:"<<p1[max]<<"其下标为:"<<max<<endl;cout<<"最小值为:"<<p1[min]<<"其下标为:"<<min<<endl;}}void main(){float a[]={12.3,25.3,21,36,21.0,54.32,1,9,8.53,4};double b[]={12.3,60,25.3,21,21.0,54.32,1,0.56,9,8.53,4};cout_max(a,sizeof(a[0]),sizeof(a)/sizeof(a[0]));cout_max(b,sizeof(b[0]),sizeof(b)/sizeof(b[0]));}统计字母,数字等各类字符# include<iostream.h># include<string.h>void choose(char*p,int n){int sum1=0,sum2=0,sum3=0,sum4=0;for(int i=0;i<n;i++){if(p[i]>='A'&&p[i]<='z'||p[i]>='a'&&p[i]<='z')sum1++;if(p[i]==' ')sum2++;if(p[i]>='0'&&p[i]<='9')sum3++;elsesum4++;}cout<<"统计结果为:\n";cout<<"字母总数为:"<<sum1<<endl;cout<<"空格总数为:"<<sum2<<endl;cout<<"数字总数为:"<<sum3<<endl;cout<<"其他字符总数为:"<<sum4<<endl;}void main(){char ch[100];cout<<"请输入一段字符";cin.getline(ch,81);choose(ch,strlen(ch));}用调用函数,实现从两个数为输出较大者(要求用指针变量传递参数值# include<iostream.h>void cout_max(float*a,float*b){cout<<"最大数为:"<<((*a>*b)?*a:*b);cout<<endl;}void main(){float a,b;cout<<"请输入要比较的两个数:\n";cin>>a>>b;cout_max(&a,&b);}坐标系下的坐标转化为极坐标下的坐标# include<iostream.h># include<math.h>void cout_change(float&x,float&y){float c,q;x=sqrt(x*x+y*y);y=atan(y/x);}void main(){float x,y;cout<<"请输入直角坐标系下的坐标:\n";cout<<"x=";cin>>x;cout<<"y=";cin>>y;cout_change(x,y);cout<<"极坐标系下的坐标为:\n";cout<<"c="<<x<<endl;cout<<"q="<<y<<endl;}C++程序链表例题# include<iostream.h># include<string.h>struct node{char num[12];char name[20];int age;node*next;};struct LikedList{node*head;int size;};struct student{char num[12];char name[20];int age;};LikedList create(){LikedList list;node*p;p=new node;list.head=p;list.size=0;strcpy(p->name,"0");strcpy(p->num,"0");p->age=0;p->next=NULL;return list;}LikedList create(student*a,int n){LikedList list=create();list.size=n;node*p1,*p2;p2=list.head;for(int i=0;i<n;i++){p1=p2;p2=new node;strcpy(p2->num,(a+i)->num);strcpy(p2->name,(a+i)->name);p2->age=(a+i)->age;p1->next=p2;}p2->next=NULL;return list;}void search(LikedList&list,int a){node*p1,*p2;p2=list.head;int sum=0;for(int i=0;p2->next!=NULL;i++){p1=p2;p2=p2->next;if(p2->age==a){cout<<"在链表中找到一个这个年龄的学生,并已删除该结点!\n";p1->next=p2->next;delete p2;p2=p1;sum++;list.size--;}}if(sum!=0){cout<<"共删除"<<sum<<"个结点\n";}else{cout<<"无该年龄的学生,该结点已插入到链表尾端。
课后习题六(第七章)

课后习题(第七章)1、为了缩短指令中地址码的位数,应采用( B )寻址。
A、立即数B、寄存器C、直接D、间接2、指令系统中采用不同寻址方式的目的主要是( B )A. 可降低指令译码难度B. 缩短指令字长、扩大寻址空间、提高编程灵活性C. 实现程序控制D. 提高指令执行速度3、零地址运算指令在指令格式中不给出操作数地址,它的操作数来源自( C )A. 立即数和栈顶B. 暂存器C. 栈顶或隐含约定的位置D. 存储器4、单地址指令中,为完成两个数的算术运算,除地址译码指明的一个操作数外,另一个数常采用( C )A. 堆栈寻址方式B. 立即寻址方式C. 隐含寻址方式D. 基址寻址方式5、二地址指令中,操作数的物理位置安排,描述正确的是( C )A. 两个主存单元(且依然在现指令系统中采用)B. 栈顶和次栈顶C. 主存单元或寄存器D. 两个同时为寄存器不允许使用6、操作数在寄存器中的寻址方式称为( C )寻址A. 直接B. 立即C. 寄存器直接D. 寄存器间接7、寄存器间接寻址方式中,操作数在( C )A. 通用寄存器B. 堆栈C. 主存单元D. I/O外设中8、变址寻址方式中,操作数的有效地址是( C )A. 基址寄存器内容加上形式地址B. 程序计数器内容加上形式地址C. 变址寄存器内容加上形式地址D. 形式地址本身9、采用基址寻址可扩大寻址范围,且( B )A. 基址寄存器内容由用户确定,在程序执行过程中一般不可变B. 基址寄存器内容由操作系统确定,在程序执行过程中一般不可变C. 基址寄存器内容由用户确定,在程序执行过程中可随意变化D. 基址寄存器内容由操作系统确定,在程序执行过程可随意变化10、变址寻址和基址寻址的有效地址形成方式类似,但是( C )A. 变址寄存器内容在程序执行过程中是不可变的B. 在程序执行过程中,变址寄存器和基址寄存器的内容可以随意变化C. 在程序执行过程中,变址寄存器的内容可随意变化D. 以上均不对11、堆栈寻址中,设A为累加器,SP为栈顶指针,[SP]为其指向的栈顶单元,如果进栈的动作顺序是(SP)-1→SP,(A)→[SP],那么出栈的动作顺序是( A )A. [SP] →(A),(SP)+1→SPB. (SP)+1→SP,[SP] →(A)C. (SP)-1→SP,[SP] →(A)D. [SP] →(A),(SP)-1→SP12、设变址寄存器为X,形式地址为D,某机具有先变址再主存间址的寻址方式,则这种寻址方式的有效地址为( C )A. EA=(X)+DB. EA=(X)+(D)C. EA=((X)+D)D. EA=((X))+D13、设变址寄存器为X,形式地址为D,某机具有先主存间址再变址的寻址方式,则这种寻址方式的有效地址为( B )A. EA=(X)+DB. EA=(X)+(D)C. EA=((X)+D)D. EA=((X))+D14、运算型指令的寻址和转移类指令的寻址不同点在于( A )A. 前者取操作数,后者决定程序转移地址B. 前者计算转移地址,后者取操作数C. 前者是短指令,后者是长指令D. 前者是长指令,后者是短指令15、指令的寻址方式有顺序和跳跃两种,采用跳跃寻址方式可以实现( C )A. 程序的条件转移B. 程序的无条件转移C. 程序的条件转移和无条件转移D. 以上均不对16、设相对寻址的转移指令占两个字节,第一个字节是操作码,第二个字节是相对位移量(补码表示),若CPU每当从存储器取出一个字节时,即自动完成(PC)+1 PC。
C语言1_7章课后作业答案
C语言1-7章课后作业答案第一章 C语言概述【习题1-1】简述C语言的特点。
答:C语言的特点:C语言简洁、紧凑、使用灵活、方便;运算符丰富;数据结构丰富;C是结构式语言;C语法限制不太严格,程序设计自由度大;C语言允许直接访问物理地址;C语言程序生成代码质量高;C语言适用范围大,可移植性好。
【习题1-2】请从以下的4个选项中选择一个正确答案。
(1)A (2)C (3)B (4)D(5)A (6)C【习题1-3】填空。
(1)英文字母、下划线、数字(2)函数(3) 函数头、函数体(4)独立(5);、#、/*…*/、{、}、 main、main【习题1-4】请指出以下哪些是合法的标识符?哪些又是合法的用户标识符。
101 int 3ip x_1 x+1 count 1234Xy x%y if while a.bc x&y _ _1_112 Abc name x break for x=y合法的标识符有:x_1、int、count、Xy、if、while、Abc、name、x、break、for合法的用户标识符有:x_1、count、Xy、Abc、name、x【习题1-5】简述上机调试运行C程序的操作步骤。
答:上机运行C语言程序的操作步骤为:启动Visual C++ 6.0→建立工程→创建源程序文件→输入(编辑)源程序内容→保存源程序文件→编译源程序文件→连接目标程序→执行程序→开始另一个程序。
【习题1-6】上机运行本章的3个例题。
略【习题1-7】参照本章例题,编写一个C语言源程序,输出以下信息:**************Nice to meet you!**************编写程序如下:#include<stdio.h>void main(){printf("**************\n");printf("Nice to meet you!\n");printf("**************\n");}第二章基本数据类型和运算符【习题2.1】上机编辑并调试本章所有例题。
管理信息系统期末考试习题例题精华(附答案)
第六章练习题一、选择题1.信息系统设计是系统开发的重要阶段,进行系统设计的主要依据应是()。
A、可行性研究报告 B 系统分析报告C、系统调查报告D、系统规划报告2. 下面不属于系统设计的方法是()。
A、结构化设计B、生命周期法C、Jackson 方法D、Parnas方法3. 在系统总体结构设计时,应采纳什么样的方法()。
A、程序设计B、结构化设计C、由里向外D、自底向上4. 结构化设计的基本思想是()。
A、模块化B、集成化C、自底向上,逐步求精D、规范化5. 在结构化生命周期法中,系统分析和系统实施之间的阶段是()。
A、详细设计 B系统设计C、需求分析D、编程调试6. 对于结构化设计思想的描述哪一项是错误的()。
A、在结构化设计中,模块的功能应当简单明确,易于理解B、自顶向下,逐步求精C、设计者应先设计顶层模块D、越下层模块,其功能越具体,越复杂7. 在系统设计过程中采用模块化结构,是为了满足()。
A、系统性的要求B、灵活性的要求C、可靠性的要求D、实用性的要求8. 系统设计阶段的主要目的是()。
A、设计新系统的目标 B 将系统逻辑方案转换成物理方案C、代码设计D、程序设计9. 系统设计时应()。
A、按用户要求划分子系统B、按领导要求划分子系统C、按逻辑功能划分子系统D、按业务划分子系统10. 下面属于结构化系统设计的特点是( )。
A、总体与局部的统一B、数据传递迅速、及时C、采用模块结构图的描述方式D、以上都不是11. 关于模块间调用的规则哪一项是错误的()。
A、下层模块可直接与同级模块进行通信B、下层模块只有接到上级模块调用命令才能执行C、上下级模块之间可直接通信D、模块调用顺序自上而下12.下列术语中不属于对模块间关系的描述的是()。
A、调用关系 B主次关系C、嵌套关系D、从属关系13. 耦合是系统各模块间连接的一种度量,一组模块都访问同一数据结构应属于下列哪种耦合()。
A、内容耦合 B公共耦合C、外部耦合D、控制耦合14. 模块发生改动,最容易引发错误的是()。
管理信息系统期末考试习题例题精华(附答案)
第六章练习题一、选择题1.信息系统设计是系统开发的重要阶段,进行系统设计的主要依据应是()。
A、可行性研究报告 B 系统分析报告C、系统调查报告D、系统规划报告2. 下面不属于系统设计的方法是()。
A、结构化设计B、生命周期法C、Jackson 方法D、Parnas方法3. 在系统总体结构设计时,应采纳什么样的方法()。
A、程序设计B、结构化设计C、由里向外D、自底向上4. 结构化设计的基本思想是()。
A、模块化B、集成化C、自底向上,逐步求精D、规范化5. 在结构化生命周期法中,系统分析和系统实施之间的阶段是()。
A、详细设计 B系统设计C、需求分析D、编程调试6. 对于结构化设计思想的描述哪一项是错误的()。
A、在结构化设计中,模块的功能应当简单明确,易于理解B、自顶向下,逐步求精C、设计者应先设计顶层模块D、越下层模块,其功能越具体,越复杂7. 在系统设计过程中采用模块化结构,是为了满足()。
A、系统性的要求B、灵活性的要求C、可靠性的要求D、实用性的要求8. 系统设计阶段的主要目的是()。
A、设计新系统的目标 B 将系统逻辑方案转换成物理方案C、代码设计D、程序设计9. 系统设计时应()。
A、按用户要求划分子系统B、按领导要求划分子系统C、按逻辑功能划分子系统D、按业务划分子系统10. 下面属于结构化系统设计的特点是( )。
A、总体与局部的统一B、数据传递迅速、及时C、采用模块结构图的描述方式D、以上都不是11. 关于模块间调用的规则哪一项是错误的()。
A、下层模块可直接与同级模块进行通信B、下层模块只有接到上级模块调用命令才能执行C、上下级模块之间可直接通信D、模块调用顺序自上而下12.下列术语中不属于对模块间关系的描述的是()。
A、调用关系 B主次关系C、嵌套关系D、从属关系13. 耦合是系统各模块间连接的一种度量,一组模块都访问同一数据结构应属于下列哪种耦合()。
A、内容耦合 B公共耦合C、外部耦合D、控制耦合14. 模块发生改动,最容易引发错误的是()。
Java面向对象程序设计案例教程课件:图形用户界面开发与事件处理
《Java面向对象程序设计案例教程》
7.2 Swing基础
• Swing组件是Java语言提供的第二代GUI设计工 具包,它以AWT为基础,在AWT内容的基础上 新增或改进了一些GUI组件,使得GUI程序功能 更强大,设计更容易、更方便。
• Swing与AWT有以下不同。
• (1) Swing是完全用Java语言编写的,所以称 Swing组件是轻量级组件,没有本地代码,不依 赖操作系统的支持,比AWT构件具有更强的实 用性。Swing在不同的平台表现一致,并且有能 力提供本地窗口系统不支持的其他特性。
《Java面向对象程序设计案例教程》 • Swing的类层次结构如图所示:
《Java面向对象程序设计案例教程》
• 3. 简单的范例 • 一个简单的Swing GUI应用程序。该程序生成一个窗
口, • 窗口中有一个标签,用于显示输出。 • (1) 程序代码: • 1. import java.awt.* ; • 2. import javax.swing.* ; • 3. public class SwingDemo • 4. { • 5. public static void main(String args[]) • 6. { • 7. JFrame fm = new JFrame("第一个Windows程序") ; • 8. JLabel label = new JLabel("这是第一个GUI程序") ;
• 教材例题7-12 利用组合框显示、选取地名。
• 教材例题8.2 ,例题8.3用不同方法生成JFrame窗口
《Java面向对象程序设计案例教程》
• 7.3.2 面板容器JPanel
• 面板JPanel也是Java中常用到的容器之一,面板是一种透明 的容器,既没有标题,也没有边框,就像一块透明的玻璃。 与JFrame不同,它不能作为最外层的容器单独存在,它首 先必须作为一个构件放置到其他容器中,然后再把它作为容 器,把其他构件放到其中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例7.1 当λ取何值时,齐次线性方程组:⎪⎩⎪⎨⎧=-++=+-+=+--0)1(0)3(2042)1(321321321x x x x x x x x x λλλ 有非零解。
syms lamdaA =[1-lamda,-2,4;2,3-lamda,1;1,1,1-lamda]; D =det(A); f actor(D)例7.2 求下列极限。
(1)ax ax m ma x --→lim (2)x a x a x x )sin()sin(lim 0--+→(3))1(lim 2x x x x -++∞→ (4)22lim ax ax a x ax --+-+→syms a m x;f=(x^(1/m)-a^(1/m))/(x-a);limit(f,x,a) %求极限(1) f=(sin(a+x)-sin(a-x))/x;limit(f) %求极限(2) f=x*(sqrt(x^2+1)-x);limit(f,x,inf,'left') %求极限(3) f=(sqrt(x)-sqrt(a)-sqrt(x-a))/sqrt(x*x-a*a); limit(f,x,a,'right') %求极限(4)例7.3 求下列函数的导数。
(1)x e y +=1 ,求y' 。
(2)y=xcos(x),求y''、y'''。
(3)⎩⎨⎧==ta y t a x sin cos ,求'x y 、''x y 。
(4)2y xe z y=,求'x z 、'y z 。
(5)z=f(x,y)由方程x 2+y 2+z 2=a 2定义,求'x z 、'y z 。
syms a b t x y z;f=sqrt(1+exp(x));diff(f) %求(1)。
未指定求导变量和阶数,按默认规则处理 f=x*cos(x);diff(f,x,2) %求(2)。
求f 对x 的二阶导数 diff(f,x,3) %求(2)。
求f 对x 的三阶导数2f1=a*cos(t);f2=b*sin(t);diff(f2)/diff(f1) %求(3)。
按参数方程求导公式求y 对x 的导数 %求(3)。
求y 对x 的二阶导数(diff(f1)*diff(f2,2)-diff(f1,2)*diff(f2))/(diff(f1))^3 f=x*exp(y)/y^2;diff(f,x) %求(4)。
z 对x 的偏导数 diff(f,y) %求(4)。
z 对y 的偏导数 f=x^2+y^2+z^2-a^2;zx=diff(f,x)/diff(f,z) %求(5)。
zy=diff(f,y)/diff(f,z) %求(5)。
例7.4 在曲线y=x 3+3x-2上哪一点的切线与直线y=4x-1平行。
x=sym('x');y=x^3+3*x-2; %定义曲线函数 f=diff(y); %对曲线求导数 g=f-4;solve(g) %求方程f-4=0的根,即求曲线何处的导数为4例7.5 求下列不定积分。
(1)⎰-dx x32)3( (2) ⎰xdx 2sin(3)⎰dt e tα (4)⎰+dt x xt215x=sym('x'); f=(3-x^2)^3;int(f) %求(1)f=sin(x)^2; %求(2) int(f)syms alpha t; f=exp(alpha*t);int(f) %求(3)f=5*x*t/(1+x^2);int(f,t) %求(4)例7.6 求下列定积分。
(1)dx x ⎰-211 (2)dx x ⎰+∞∞-+211(3)dx x x ⎰-32103)1( (4)dt tx x⎰sin 24 x=sym('x');t=sym('t');int(abs(1-x),1,2) %求(1)3f=1/(1+x^2);int(f,-inf,inf) %求(2)f=x^3/(x-1)^10;I=int(f,2,3) %求(3)double(I) %将上述符号结果转换为数值int(4*x/t,t,2,sin(x)) %求(4)例7.7 求椭球的体积。
1222222=++cz b y a x syms a b c z;f=pi*a*b*(c^2-z^2)/c^2; V=int(f,z,-c,c)例7.8 求空间曲线c 从点(0,0,0)到点(3,3,2)的长度。
设曲线c 的方程是:⎪⎩⎪⎨⎧===32233t z t y t x syms t; x=3*t; y=3*t^2; z=2*t^3;f=diff([x,y,z],t); %求x,y,z 对参数t 的导数g=sqrt(f*f'); %计算一型积分公式中的根式部分 l=int(g,t,0,1) %计算曲线c 的长度例7.9 求函数y=x 的傅立叶变换及其逆变换。
syms x t; y=abs(x);Ft=fourier(y,x,t) %求y 的傅立叶变换 fx=ifourier(Ft,t,x) %求Ft 的傅立叶逆变换例7.10 计算y=x 2的拉普拉斯变换及其逆变换.x=sym('x'); y=x^2;Ft=laplace(y,x,t) %对函数y 进行拉普拉斯变换 fx=ilaplace(Ft,t,x) %对函数Ft 进行拉普拉斯逆变换例7.11 求数列 fn=e -n 的Z 变换及其逆变换。
syms n z fn=exp(-n);Fz=ztrans(fn,n,z) %求fn 的Z 变换 f=iztrans(Fz,z,n) %求Fz 的逆Z 变换例7.12 求下列级数之和。
4(1) ++++++=21116191411n s (2) +-++-+-=+ns n 1)1(413121112 (3) +++++=n nx x x x s 32332 (4) 10000169414+++++= sn=sym('n');s1=symsum(1/n^2,n,1,inf) %求s1s2=symsum((-1)^(n+1)/n,1,inf) %求s2。
未指定求和变量,默认为n s3=symsum(n*x^n,n,1,inf) %求s3。
此处的求和变量n 不能省略。
s4=symsum(n^2,1,100) %求s4。
计算有限级数的和例7.13 求函数的泰勒级数展开式。
(1)求3233121x x x x +--+-的5阶泰勒级数展开式。
(2)将2211xx x x +-++在x=1处按5次多项式展开。
x=sym('x');f1=sqrt(1-2*x+x^3)-(1-3*x+x^2)^(1/3); f2=(1+x+x^2)/(1-x+x^2);taylor(f1,x,5) %求(1)。
taylor(f2,6,1) %求(2)。
展开到x-1的5次幂时应选择n=6例7.14 解下列方程。
(1)22144212-+=-++x x x x (2) 17433=---x x x (3) 1)43sin(2=-πx (4) 010=-+x xe xx=solve('1/(x+2)+4*x/(x^2-4)=1+2/(x-2)','x') %解方程(1) f=sym('x-(x^3-4*x-7)^(1/3)=1');x=solve(f) %解方程(2) x=solve('2*sin(3*x-pi/4)=1') %解方程(3)x=solve('x+x*exp(x)-10','x') %解方程(4)。
仅标出方程的左端例7.15 求下列方程组的解。
5(1)⎪⎪⎩⎪⎪⎨⎧=+=+411281133y x y x (2) ⎩⎨⎧=+=+29833y x y x (3) ⎩⎨⎧=+=+29833v u v u (4)⎩⎨⎧=--=+023252222y xy x y x 命令如下:[x y]=solve('1/x^3+1/y^3=28','1/x+1/y=4','x,y') %解方程组(1) [x y]=solve('x+y-98','x^(1/3)+y^(1/3)-2','x,y') %解方程组(2)[x y]=solve('x^2+y^2=5', '2*x^2-3*x*y-2*y^2=0','x,y') %解方程组(4)例7.16 求下列微分方程的解。
(1)求2222xy x dx dy +=的通解。
(2)求xe xy dx dy x =+22的通解。
(3) 求221y xdx dy +=的特解,1)2(=y 。
(4)求⎪⎩⎪⎨⎧-=-=y2x dtdy 2y 4x dt dx的通解。
(5)求⎪⎪⎩⎪⎪⎨⎧=+=-002222x dt y d y dt xd 的通解。
y=dsolve('Dy-(x^2+y^2)/x^2/2','x') %解(1)。
方程的右端为0时可以不写 y=dsolve('Dy*x^2+2*x*y-exp(x)','x') %解(2)y=dsolve('Dy-x^2/(1+y^2)','y(2)=1','x'); %解(3)[x,y]=dsolve('Dx=4*x-2*y','Dy=2*x-y','t') %解方程组(4) [x,y]=dsolve('D2x-y','D2y+x','t'); %解方程组(5)。