当前位置:网站首页 > MATLAB编程 > 正文

matlab function输出多个变量(matlab函数怎么输出多个参数)



matlab上机实践报告(精选5篇)

Matlab上机实习报告

这两周我们进行了Matlab的上机。为了熟练掌握Matlab的各种操纵,学会使用Matlab解决复杂矩阵的运算并学会用Matlab解决平差中的实际问题,我们以书上的例7-8为例,通过Matlab编程运行来解决这道题,以熟悉Matlab的各项操纵和编程。

首先,我对该题进行了分析,然后将解题思路和解题过程中需要的公式写在了草稿纸上,然后,我比照Matlab的正确语言将各项公式输进了Matlab中,进行调试运行的时候并没有一次就成功,因为分号等符号的不正确使用,矩阵输入的一些错误方式以及数据输入上的一些错误,一直没能能算出正确的结果,在进行了多次的调试改正后才最终得出了正确的结果。

通过这些天的上机实习,我学会了将矩阵正确输入Matlab 的方法、学会了利用Matlab进行复杂矩阵的转置、求逆等运算,也学会了一些Matlab专有语言如diag等的应用。可以说已经掌握了Matlab大概的功能,在以后的学习中,如果有需要用到Matlab的地方,我相信我也一定能好好使用Matlab来解决学习解题中遇到的问题。短短两周的实习很快结束。从这次实习中,我认识到了亲身实践是我们大学生活中很有用也很充实的一步,通过实习能学到课堂上学不到的一些东西。在课堂上我们仅仅知道该怎么去做,但没有亲自实践,只能靠想象,所以很多东西当时都很难理解,很多东西不经过实践就不会印象深刻。在上级之前,读过Matlab的相关书籍,觉得自己好像会了,但是在实际上机操纵过程中就会发现还是出现了很多这样或那样的问题。但是,经过上机的实践后,似乎就更容易理解其原理了,而且对其操纵与使用印象更深刻了。

总体来说,这几次实习我受益匪浅。在探索该如何运用Matlab课程算法实践过程中,培养了我的逻辑思维能力,增加了实际编程能力。让我在体会到分析实例与设计程序的艰辛的同时,也体会到了最后成功的喜悦。总而言之,这次Matlab的上机实习收获颇多,也让我深刻感受到,时间也是获得和掌握知识的一种好手段。

一、实验目得 初步熟悉 MATLAB 工作环境,熟悉命令窗口,学会使用帮助窗口查找帮助信息。

命令窗口 二、实验内容(1)熟悉MATLAB平台得工作环境.(2)

熟悉MATLAB 得5 个工作窗口。

(3)MATLAB 得优先搜索顺序.三、实验步骤 1、熟悉MATLAB 得5 个基本窗口 ① mand Window(命令窗口)

② Workspace(工作空间窗口)

③ mand History(命令历史记录窗口)

④ Current Directory(当前目录窗口)

⑤ Help Window(帮助窗口)

(1)命令窗口(mand Window)。

在命令窗口中依次输入以下命令:

>〉x=1 〉> y=[1 2 3

4 5 68 9]; 〉> z1=[1:10],z2=[1:2:5]; >> w=linspace(1,10,10); >〉 t1=ones(3),t2=ones(1,3),t3=ones(3,1)〉〉 t4=ones(3),t4=eye(4)x =1 z1 =

9t1 =

t2 =

t3 =

1 t4 =

t4 =

0

0

0

0

0

0

0

0

0

0

0

思考题: ①

变量如何声明, , 变量名须遵守什么规则、就是否区分大小写。

答:(1)变量声明

1、局部变量 每个函数都有自己得局部变量,这些变量只能在定义它得函数内部使用。当函数运行时,局部变量保存在函数得工作空间中,一旦函数退出,这些局部变量将不复存在。

脚本(没有输入输出参数,由一系列MATLAB命令组成得M文件)没有单独得工作空间,只能共享调用者得工作空间。当从命令行调用,脚本变量存在基本工作空间中;当从函数调用,脚本变量存在函数空间中. 2、全局变量 在函数或基本工作空间内,用global声明得变量为全局变量。例如声明a为全局变量:

>〉global a 声明了全局变量得函数或基本工作空间,共享该全局变量,都可以给它曲赋值。

如果函数得子函数也要使用全局变量,也必须用global声明.3、永久变量 永久变量用persistent声明,只能在M文件函数中定义与使用,只允许声明它得函数存取.当声明它得函数退出时,MATLAB不会从内存中清除它,例如声明a为永久变量: 〉〉persistent a(2)变量命名规则如下: :

始于字母,由字母、数字或下划线组成;区分大小写;可任意长,但使用前N个字符.N与硬件有关,由函数namelengthmax返回,一般N=63; 不能使用关键字作为变量名(关键字在后面给出); 避免使用函数名作为变量名.如果变量采用函数名,该函数失效.(3)区分大小写

试说明分号、逗号、冒号得用法。

答:分号:加上分号“;“其作用就是将计算机结果存入内存,但不显示在屏幕上,反之,语句结尾若不加“;”,则表示在语句执行后,在将计算结果存入内存得同时,还将运算结果显示出来.逗号:分割列表

冒号:从什么到什么,比如1:10意思就是——1到10 ③ ③

l inspace())

称为“线性等分”函数, , 说明它得用法。可使用help命令,格式如下:

>>help linspace

数 说明函数 ones())、、zero s()、eye()得用法。

答;(1)ones()函数:全部元素都为 1 得常数矩阵;(2)zeros()函数:全部元素都为 0 得矩阵;(3)eye()函数:单位矩阵;

(4)linspace()函数:如 a=linspace(n1,n2,n3),表示在线性空

间上,行矢量得值从 n1 到 n2(2)工作空间窗口(Workspace). 单击工作空间窗口右上角得按钮,将其从MATLAB 主界面分离出来。

① 在工作空间查瞧各个变量,或在命令窗口用who, whos(注意大小写)查瞧各个 变量。

② 在工作空间双击变量,弹出Array Editor 窗口(数组编辑器窗口),即可修改变量。

③ 使用save 命令把工作空间得全部变量保存为my_var、mat 文件。

〉〉save my_var、mat

④ 输入下列命令: 〉〉clear all %清除工作空间得所有变量

观察工作空间得变量就是否被清空。使用load 命令把刚才保存得变量载入工作空间。

>〉load my_var、mat

⑤ 清除命令窗口命令: >〉clc(3)历史命令窗口(mand History)。

打开历史命令窗口,可以瞧到每次运行MATLAB 得时间与曾在命令窗口输入过得命 令,练习以下几种利用历史命令窗口重复执行输入过得命令得方法。

① 在历史命令窗口中选中要重复执行得一行或几行命令,右击,出现快捷菜单,选择 Copy,然后再Paste 到命令窗口。

② 在历史命令窗口中双击要执行得一行命令,或者选中要重复执行得一行或几行命令 后,用鼠标将其拖动到命令窗口中执行。

③ 在历史命令窗口中选中要重复执行得一行或几行命令,右击,出现快捷菜单,选择 Evaluate Selection,也可以执行。

④ 或者在命令窗口使用方向键得上下键得到以前输入得命令。例如,按方向键“↑” 一次,就重新将用户最后一次输入得命令调到MATLAB 提示符下。重复地按方向上键 “↑”,就会在每次按下得时候调用再往前一次输入得命令。类似地,按方向键“↓”得时 候,就往后调用一次输入得命令.按方向键“←“或者方向键“→”就会在提示符得命令 中左右移动光标,这样用户就可以用类似于在字处理软件中编辑文本得方法编辑这些命令。

(4)

当前目录命令窗口(Current Directory).MATLAB 得当前目录即就是系统默认得实施打开、装载、编辑与保存文件等操作时得文 件夹。打开当前目录窗口后,可以瞧到用“save”命令所保存得my_var、mat 文件就是保存在 目录C:MATLAB6p5work 下。

(5)帮助窗口(Help Window)。

单击工具栏得图标,或选择菜单View|Help,或选择菜单Help|MATLAB Help 都能 启动帮助窗口。

① 通过Index 选项卡查找log2()函数得用法,在Search index for 栏中输入需要查找得 词汇“log2”,在左下侧就列出与之最匹配得词汇条目,选择“log2[1]”,右侧得窗口就 会显示相应得内容。

② 也可以通过Search 选项卡查找log2()函数得用法.Search 选项卡与Index 选项卡 不同,Index 只在专用术语表中查找,而Search 搜索得就是整个HTML 帮助文件。

2、MATLAB 得数值显示格式设置 屏幕显示方式有紧凑(pact)与松散(Loose)两种,其中Loose 为默认方式.>〉a=ones(1,30)

〉>format pact

〉〉a 数字显示格式有short、long、short e、long e 等,请参照教材得列表练习一遍。

〉〉format long >>pi

〉〉format short >〉pi

〉>format long 〉〉pi

>>format + 〉〉pi

〉>—pi

3、变量得搜索顺序 在命令窗口中输入以下指令:

>>pi

〉>sin(pi);

>>exist(’pi”)

〉>pi=0;>〉exist(’pi“)

>〉pi

〉〉clear pi 〉>exist('pi’)>>pi

思考题:① 3 次执行exist(’pi’)得结果一样吗?如果不一样,试解释为什么? 答:不一样,pi原来就是库存函数,但就是如果被赋值则系统默认被赋予得值为pi后来得值,但就是当执行clear pi之后所赋得值被清空,因此pi得值又成为3、1416 ② 圆周率 pi 就是系统得默认常量,为什么会被改变为 0? 答:pi原来就是库存函数,但就是如果被赋值则系统默认被赋予得值为 pi 后来得值,但就是当执行 clear pi之后所赋得值被清空,因此 pi 得值又成为3、1416

实验二

MA TLAB语言基础 一、实验目得 基本掌握 MATLAB 向量、矩阵、数组得生成及其基本运算(区分数组运算与矩阵运算)、常用得数学函数。交接字符串得操作.二、实验内容(1)向量得生成与运算。

(2)矩阵得创建、引用与运算。

(3)

多维数组得创建及运算。

(4)字符串得操作。

三、实验步骤 1、向量得生成与运算 1)

向量得生成 直接输入法: A =

>〉 B=[1;2;3;4;5]

B =

5  冒号生成发:

〉〉 A=1:2:10 ,B=1:10,C=10:—1:1

A =

B =

C =

10

1  函数法:

Linspace()就是线性等分函数,logspace()就是对数等分函数。

>〉 A=linspace(1,10),B=linspace(1,30,10)A =

Columns 1 through 91、0000

1、0909

1、1818

1、2727

1、3636

1、4545

1、5455

1、6364

1、7273

Columns 10 through 181、8182

1、9091

2、0000

2、0909

2、1818

2、2727

2、3636

2、4545

2、5455

Columns 19 through 272、6364

2、7273

2、8182

2、9091

3、0000

3、0909

3、1818

3、2727

3、3636

Columns 28 through 36

3、4545

3、5455

3、6364

3、7273

3、8182

3、9091

4、0000

4、0909

4、1818

Columns 37 through 454、2727

4、3636

4、4545

4、5455

4、6364

4、7273

4、8182

4、9091

5、0000

Columns 46 through 545、0909

5、1818

5、2727

5、3636

5、4545

5、5455

5、6364

5、7273

5、8182

Columns 55 through 63

5、9091

6、0000

6、0909

6、1818

6、2727

6、3636

6、4545

6、5455

6、6364

Columns 64 through 72

6、7273

6、8182

6、9091

7、0000

7、0909

7、1818

7、2727

7、3636

7、4545

Columns 73 through 81

7、5455

7、6364

7、7273

7、8182

7、9091

8、0000

8、0909

8、1818

8、2727

Columns 82 through 908、3636

8、4545

8、5455

8、6364

8、7273

8、8182

8、9091

9、0000

9、0909

Columns 91 through 999、1818

9、2727

9、3636

9、4545

9、5455

9、6364

9、7273

9、8182

9、9091

Column 100

10、0000

B =

Columns 1 through 91、0000

4、2222

7、4444

10、、8889

17、1111

20、333323、555626、7778

Column 1030、0000 >> A=logspace(0,4,5)A =

10

100

1000

10000 练习:

使用 logspace()创建1—4得有 10 个元素得行向量。

答案:

>〉 A=logspace(1,10,4*pi)

A =1、0e+010 *

Columns 1 through 9

0、0000

0、0000

0、0000

0、0000

0、0000

0、0000

0、0001

0、0005

0、0035

Columns 10 through 120、0231

0、1520

1、0000 2)向量得运算 维数相同得行向量只见可以相加减,维数相同得列向量也可以相加减,标量可以与向量直接相乘除。

〉〉 A=[1 2 3 4 5],B=3:7,A =

B =

>〉 AT=A”,BT=B“, AT =

BT =

>〉 E1=A+B, E2=A-B

E1 =

10E2 =

—2

—2

—2

〉〉 F=AT—BT, F =

-2

—2

〉〉 G1=3*A, G2=B/3, G1 =

12

15

G2 =1、0000

1、3333

1、6667

2、0000

2、3333  向量得点积与叉积运算。

〉〉 A=ones(1,10);B=(1:10); BT=B”;>> E1=dot(A,B)

E1 =

55

〉〉 E2=A*BT

E2 =

〉〉 clear >> A=1:3,B=3:5,A =

B =

〉〉 E=cross(A,B)

E = -2

—2 2.矩阵得创建、引用与运算

1)矩阵得创建与引用

矩阵就是由元素构成得矩阵结构,行向量与列向量就是矩阵得特殊形式。

 直接输入法:

〉〉 A=[1 2 3;4 5 6]

A =

〉〉 B=[ 1 4 75 86 9 ] B =

〉> A(1)

ans =〉〉 A(4:end)

ans =

6 〉〉 B(:,1)ans =

2〉> B(:)ans =

8>〉 B(5)

ans =抽取法 〉> clear 〉> A=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16] A =

10

12

13

16 >〉 B=A(1:3,2:3)

B =

10

11 〉> C=A([1 3],[2 4])

C =

10

12 〉〉 A([1 3;2 4])ans =

5 函数法: 〉〉 A=ones(3,4)A =

>〉 B=zero(3)

??? Undefined function or method “zero’ for input arguments of type ”double’、>> B=zeros(3)B =

0

0

0

0

0 >> C=eyes(3,2)??? Undefined function or method “eyes’ for input arguments of type ”double’、〉> C=eye(3,2)C =

0

0

0

0 >> D=magic(3)D =

拼接法 〉〉 clear 〉> A=ones(3,4)A =

>〉 B=zeros(3)

B =

0

0

0

0

0

0

0 >〉 C=eye(4)C =

0

0

0

0

0

0

0

0

0

>〉 D=[A B] D =

0

0

0

0

0

0

0 >〉 F=[A;C] F =

0

0

0

0

0

0

0

0

拼接函数与变形函数法:

〉〉 clear 〉> A=[0 1;1 1] A =

0

〉> B=2*ones(2)

B =

>> cat(1,A,B,A)ans =

0

0

>〉 cat(2 A,B,A)

??? cat(2 A,B,A)Error: Unexpected MATLAB expression、>〉 cat(2,A,B,A)ans =

0

0

1 >〉 repmat(A,2,2)ans =

0

0

0

0

〉> repmat(A,2)ans =

0

0

练习:使用函数法、拼接法、拼接函数法与变形函数法,按照要求创建以下矩阵:A 为

得全1矩阵、B 为得 0 矩阵/C 为得单位矩阵、D 为得魔方阵、E 由 C

与D纵向拼接而成,F 抽取 E 得2—--5 行元素生成、G 由 F 经变形为得矩阵而得、以 G 为子矩阵用复制函数(repmat)生成得大矩阵H。

答案 :

>〉 A=ones(3,4)

A =

1 〉〉 B=zeros(3,3)B =

0

0

0

0

0

0

0

0 >〉 C=eye(3)

C =

0

0

0

0

>〉 D=magic(3)D =

>> E=[C;D] E =

0

0

0

0

0

〉〉 F=(2:5,:)??? F=(2:5,:)Error: Expression or statement is incorrect—-possibly unbalanced(, {, or [、>〉 F=E(2:5,:)F =

0

0

〉〉 G=respace(E,3,4)

??? Undefined mand/function “respace’、〉>

G=respace(F,3,4)

??? Undefined mand/function ”respace“、〉> G=reshape(F,3,4)

G =

0

0

0

0

〉〉 H=repmat(G,2,2)H =

0

0

0

0

0

0

0

0

0

2)矩阵得运算  矩阵得加减、数乘与乘法

已知矩阵: >> A=[1 2

-1], A =

-1 >〉 B=[-1 0

2] B =

0

>〉 A+B ans =

1 〉〉 2*A ans =

-2 >〉 2*A-3*B ans =

-8 〉〉 A*B ans =

4-4

—2  矩阵得逆矩阵 〉〉 format rat;A=[1 0 1;2 1 2;0 4 6] A =

0

>> A1=inv(A)A1 =

—1/3

2/3

-1/6

-2

0

4/3

-2/3

1/6

>〉 A*A1

ans =

0

0

0

0

0

矩阵得除法 >〉 a=[1 2 1;3 1 4;2 2 1],b=[1 1 2],d=b’ a =

b =

d =

>> c1=b*inv(a),c2=b/a c1 =

6/7

3/7

-4/7

c2 =

6/7

3/7

-4/7

>> c3=inv(a)*d, c4=ab c3 =

2/7

-4/7

??? Error using ==〉 mldivide Matrix dimensions must agree、>〉 c3=inv(a)*d,c4=ad c3 =

2/7

-4/7

c4 =

2/7

-4/7

练习: 按下列要求求出各种得矩阵运算得值

求矩阵得秩、特征值与特征向量、矩阵得乘幂与开方;

矩阵得指数与对数

矩阵得提取与翻转 答案:

〉〉 A=[6 3

4 3

—2 5 7 —4

8-1 —3 —7] A =

-4

-1

—3

—7 〉> B=rank(A)B =〉> rb=rank(A)

rb =>> [X,Lamda]=eig(A)

??? Error using ==〉 eig Matrix must be square、〉〉 [X,Lamda]=eigs(A)??? Error using ==〉 eigs A must be a square matrix or a function which putes A*x、〉〉 C=[6 3 4

-2 5 7

—1-3] C =

—2

—1

—3 >> [X,Lamda]=eigs(C)

X =0、8013

-0、1094

-0、1606

0、3638

—0、6564

0、86690、4749

0、7464

-0、4719 Lamda =9、7326

0

0

0

-3、2928

0

0

0

1、5602 〉〉 [X,Lamda]=eig(C)

X =

0、8013

—0、1094

—0、16060、3638

—0、6564

0、86690、4749

0、7464

-0、4719 Lamda =9、7326

0

0

-3、2928

0

0

0

1、5602 〉> [X,Lamda]=eig(C)

X =

0、8013

—0、1094

-0、1606

0、3638

—0、6564

0、8669

0、4749

0、7464

—0、4719 Lamda =9、7326

0

0

0

—3、2928

0

0

0

1、5602 〉> D=A^2 ??? Error using ==> mpower Matrix must be square、〉> D=C^2 D =

33

34

〉〉 E=sqrtm(C)E =

2、2447 + 0、2706i0、6974 — 0、1400i0、9422-0、3494i

-0、5815 + 1、6244i

2、1005-0、8405i

1、7620-2、0970i

1、9719 - 1、8471i

-0、3017 + 0、9557i

0、0236 + 2、3845i >> F=expm(C)F =

1、0e+004 *

1、0653

0、5415

0、6323

0、4830

0、2465

0、2876

0、6316

0、3206

0、3745 〉〉 G=logm(C)Warning: Principal matrix logarithm is not defined for A with

nonpositive real eigenvalues、A non-principal matrix

logarithm is returned、〉 In funm at 153

In logm at 27 G =

1、7129 + 0、4686i0、5305-0、2425i0、5429-0、6049i

1、1938 + 2、8123i0、3658 — 1、4552i

—0、5514-3、6305i

-0、0748 - 3、1978i

0、7419 + 1、6546i1、8333 + 4、1282i >> H=fliplr(C)H =

-2

—1

>> I=triu(C)I =

0

0

-3 〉〉 J=tril(C)

J =

0

0

-2

0

-3 >> K=diag(C)K =

6-3 3.多维数组得创建及运算 1)多维数组得创建 >〉 A1=[1,2,3;4 5 6;7,8,9];A2=reshape([10:18],3,3)A2 =

10

13

16

14

17

12

15〉〉 T1(:,:,1)=ones(3);T1(:,:,2)=zeros(3)T1(:,:,1)

=

T1(:,:,2)=

0

0

0

0

0

0

0 〉> T2=ones(3,3,2)

T2(:,:,1)=

1 T2(:,:,2)=

1 >> T3=cat(3,A1,A2),T4=repmat(A1,[1,1,2])

T3(:,:,1)=

T3(:,:,2)=

10

13

16

17

15T4(:,:,1)

=

T4(:,:,2)=

2)多维数组得创建

数组运算用小圆点加在运算符得前面表示,以区分矩阵得运算。特点就是两个数组相对应得元素进行运算。

〉〉 A=[1:6];B=ones(1,6);>> C1=A+B,C2=A—B C1 =

C2 =

0

>> C3=A、*B,C4=B、/A,C5=A、B C3 =

6 C4 =

1、0000

0、5000

0、3333

0、2500

0、2000

0、1667 C5 = 1、0000

0、5000

0、3333

0、2500

0、2000

0、1667

关系运算或逻辑运算得结果都就是逻辑值.>〉 I=A〉3,C6=A(I)

I =

0

0

0

1 C6 =

6 〉〉 A1=A-3,I2=A1&A A1 =

—2

—1

0

I2 =

0

〉〉 I3=~I I3 =

0

0 4.字符串得操作 1)字符串得创建

>〉 S1=”Ilike MATLAB’ S1 = Ilike MATLAB >> S2=“I'’m a stuent、” S2 = I“m a stuent、〉> S3=[S2,”and’,S1] S3 = I“m a stuent、andIlike MATLAB 2)求字符串长度 〉〉 length(S1)ans =>> size(S1)ans =

13)字符串与一维数值数组得相互转换 >> CS1=abs(S1)CS1 =

101

32

65

84

66 〉> CS2=double(S1)CS2 =

108

105

101

32

77

65

76

>> char(CS2)

ans = Ilike MATLAB >> setstr(CS2)

ans = Ilike MATLAB 练习:用char()与向量生成得方法创建如下字符串AaBbCc、、、、、、XxYyZz、〉> S1=65:90;S2=97:122;〉〉 C=[S1;S2];>>

C=C(:)’;〉>

S3=double(C);char(S3)ans = AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz 实验三

MAL TAB B 数值运算 一、实验目得

掌握 MATLAB 得数值运算及其运算中所用到得函数,掌握结构数组与细胞数组得操作。

二、实验内容

1)

多项式运算。

2)

多项式插值与拟合。

3)

数值为积分。

4)

结构数组与细胞数组。

三、实验步骤

1、多项式运算

1)

多项式表示。在 MATLAB 中,多项式表示成向量得形式.如: 在 MATLAB 中表示为 >> s=[1 3-5 0 9] 2)

多项式得加减法相当于向量得加减法,但必须注意阶次要相同。如不同,低阶次得要补 0。如多项式与多项式相加。

〉> s1=[0 0 2 3 11] 〉〉 s2=[1 2 —5 4 7] 〉〉 s3=s1+s2 答;s1 =

0

0

3s2 =

—5

s3 =

—3

18 3)

多项式得乘、除法分别用函数 conv与得 deconv实现。

〉> s1=[2 3 11] >> s2=[1 3 —5 4 7] >〉 s3=conv(s1,s2)

>> s4=deconv(s3,s1)答;s1 =

11 s2 =

s3 =

—29

65

s4 =

7 4)

多项式求根用函数roots。

>〉 s1=[2 4 2] >> roots(s1)

答;s1 =

ans =

—1

5)

多项式求值用函数 polyval >> s1=[2 4 1-3] 〉〉 polyval(s1,3)

〉> x=1:10 〉〉 y=polyval(s1,x)答;s1 =

-3 ans =

90 x =

10 y =

Columns 1 through 8

193

352

579

886

1285

Columns 9 through 10 练习:求得“商”及余数.〉> s1=[1 0 1];s2=[1 3];s3=[1 1]; 〉> s4=[1 0 2 1]; >> [q,r]=deconv(conv(conv(s1,s2),s3),s4)答;q =

4 r =

0

0

-1 2、多项式插值与拟合 有一组实验数据如附表 1—1 所示。

附表 1-1 X 1 2 3 4 5 6 7 8 9 10 Y 16 32 7

1

分别用拟合(二阶至三阶)与插值(线性与三次样条)得方法来估算X=9、5 时 Y 得值。以下就是实现一阶拟合得语句。

〉> x=1:10 >〉 y=[16 32 70 142 260 436 682 1010 1342 1960] 〉> p1=polyfit(x,y,1)

%一阶拟合 >> y1=polyval(p1,9、5)

%计算多项式 P1 在x=9、5 得值 答;x =

9y =

Columns 1 through 8

32

70

142

260

436

682

1010

Columns 9 through 10

1342

1960 p1 =

200、9818 -510、4000 y1 =1、3989e+003 3、数值微积分

1)

差分使用 diff 函数实现。

>〉 x=1:2:9 〉〉 diff(x)答;x =

ans =

2 2)

可以用因变量与自变量差分得结果相处得到数值微分。

〉> x=linspace(0,2*pi,100);>〉 y=sin(x); >〉 plot(x,y)>〉 y1=diff(y)、/diff(x); 〉〉 plot(x(1:end-1),y1)答;

3)

cumsum 函数求累计积分,trapz 函数用梯形法求定积分,即曲线得面积。

〉〉 x=ones(1,10)

>> cumsum(x)>> x=linspace(0,pi,100); >> y=sin(x); 〉〉 trapz(x,y)〉> p=cumsum(y); >> p(100)*pi/(100—1)答;x =

ans =

9ans =

1、9998 ans =

1、9998 练习:图 A1就是瑞士地图,为了算出其国土面积,首先对地图作如下测量:以由西向东方向为 X 轴,由南向北方向为 Y 轴,选择方便得原点,并将从最西边界点到最东边界点在 X 轴上得区间适当划分为若干段,在每个分点得Y方向测出南边界点与北边界点得 Y 坐标Y1与 Y2,这样就得到表 1,根据地图比例尺回到18mm相当于 40Km,试由测量数据计算瑞士国土近似面积,与其精确值 41228 比较。地图得数据见附表 1—2(单位mm).附表 1—2 X 7 10、5 13 17、5 34 40、5 44、5 48 56 61 68、5 76、5 80、5 91 Y1 44 45 47 5

34 41 45 46 Y2 44 59 7

18 1 18 续表 X 96 101 104 106、5 111、5 118 123、5 1 36、5 142 146 150 157 158 Y1 43 37 33 28 32 65 55 54 52 50 66 66 68 Y2 121 124 1 21 1 21 121 116 1 22 83 81 82 86 85 68 提示:由高等数学得知识,一条曲线得定积分就是它与 x 轴所围成得面积,那么两条曲线所围成得面积可由两条曲线得定积分相减得到。、结构数组与细胞数组 1)

机构数组得创建. 〉> student、number=’31001’;〉〉 student、name=’Jack”;〉〉 student(2)、number=’20050731002’;〉〉 student(2)、name=’Lucy“; >> student 或者用 struct 函数创建。

>> student=struct(”number“,{’001”,“002’},”name',{'Jack’,“Lucy’});答;student =

1x2 struct array with fields:

number

name 2)

机构数组得操作。

〉> student(1)、subject=[]

%添加 subject 域并赋予空值 〉〉 student(1)、score=[] >〉(studeng)〉>fieldnames(studeng)

〉>fieldnames(student)

〉〉 getfield(student,{2},'name')〉〉 student=rmfield(student,”subject’)

%删除 subject 域 〉〉 student=setfield(student,{1},“score’,90);>> student(2)、score=88;

%比较与上一条语句就是否效果一样 答;student =

1x2 struct array with fields:

number

name

subject student =

1x2 struct array with fields:

number

name

subject

score ??? Undefined function or variable ’studeng’、练习:创建一结构数组stusorce,其域为:No,Name,English,Math,Chinese,Total,Average。结构数组得大小为 2×2。

3)

细胞数组得创建。

〉> A={’How are you!”,ones(3);[1 2;3 4],{“cell’}};

%直接创建

〉〉 B(1,1)={’Hello world”};

%由各个细胞元素创建

>> B(1,2)={magic(3)};

>〉 B(2,1)={[1 2 3 4]};答

或者用cell 函数先创建空得细胞数组,然后再给各个元素赋值 c=cell(1,2); >> c(1,1)={’Hello world’};>> c(1,2)={magic(3)}; 〉〉 c(1,3)={[1 2 3 4]}; 4)

细胞数组得操作。

〉> ans1=A(1,1)>> ans2=A(1,1)>〉 whos ans1 ans2 〉〉 celldisp(A)〉> a1=A{2,1}(1,2)>〉 [a2 a3]=deal(A{1:2})

答;ans1 =

’How are you!’ ans2 =

’How are you!’

Name

Size

Bytes

Class

Attributes

ans1

1x1

84

cell

ans2

1x1

84

cell

A{1,1} = How are you!

A{2,1} =

A{1,2} =

A{2,2}{1} = cell a1 =a2 = How are you!a3 =

实验四

MA LT AB B 符号运算

一、实验目得

掌握符号变量与符号表达式得创建,掌握MALTAB得symbol工具箱得一些基本运用。

二、实验内容

1)

符号变量、表达式、方程及函数得表示。

2)

符号微积分运算.

3)

符号表达式得操作与转换.4)

符号微分方程求解.三、实验步骤1、符号运算得引入

在数值运算中如果求,则可以不断让得让x趋近0,一球得表达式趋近什么数,但终究不能令 x=0,因为在数值运算中 0 不就是能作除数得。MATLAB得符号运算能解决这内问题。输入如下命令: 〉> f=sym(’sin(pi*x)/x')

>> limit(f,’x“,0)答;f = sin(pi*x)/x ans = pi 2 2、符号常量、符号变量、符号表达式得创建

1)

使用 sym()创建 输入以下命令,观察 Workspace 中 A、B、f就是什么内性得数据,占用多少字节得内存空间。

>〉 A=sym(”1’)

%符号常量 〉〉 B=sym(’x’)

%符号变量 >> f=sym(’2*x^2+3*x-1’)

%符号表达式 >> clear >> f1=sym(“1+2”)

%有单引号,表示字符串 >〉 f2=sym(1+2)

%无单引号 >〉 f2=sym(1+2)

〉> f4=sym(“2*x+3’)

%为什么出错 〉〉 x=1 〉〉 f4=sym(2*x+3)

答;A = 1 B = x f = 2*x^2+3*x-1 f1 = 1+2 f2 = 3 f2 = 3 f4 = 2*x+3 x =f4 = 5 通过瞧 MATLAB 得帮助可知,sym()得参数可以使字符串或就是数值类型,无论就是哪种类型都会生成符号类型数据。

2)

使用 syms创建 〉> clear >〉 syms x y z 〉> x,y,z 〉〉 f1=x^2+2*x+1 >〉 f2=exp(y)+exp(z)^2 >> f3=f1+f2 答;x = x y = y z = z f1 = x^2+2*x+1 f2 = exp(y)+exp(z)^2 f3 = x^2+2*x+1+exp(y)+exp(z)^2 3 3、符号矩阵创建

>〉 syms a1 a2 a3 a4 〉〉 A=[a1 a2;a3 a4] 〉> A(1),A(3)答;A = [ a1,a2] [ a3, a4] ans = a1 ans = a2 4 4、符号算术运算

1)

符号向量相乘、相除 符号量相成与数值量相乘一样,分成矩阵乘与数组乘。

〉> a=sym(5);b=sym(7); 〉> c1=a*b >〉 c2=a/b >> a=sym(5);B=sym([3 4 5]);>〉 C1=a*B,C2=aB >> syms a b >> A=[5 a;b 3];B=[2*a b;2*b a];〉> C1=A*B,C2=A、*B >〉 C3=AB,C4=A、/B 答;c1 =

35 c2 = 5/7 C1 = [ 15, 20, 25] C2 = [ 3/5, 4/5,1] C1 = [ 10*a+2*a*b,5*b+a^2] [

2*a*b+6*b,b^2+3*a] C2 = [

10*a,a*b] [ 2*b^2,3*a] C3 = [

2*a*(b—3)/(—15+a*b),(a^2-3*b)/(—15+a*b)] [

2*b*(a-5)/(-15+a*b), —(5*a-b^2)/(-15+a*b)] C4 = [ 5/2/a,a/b] [

1/2, 3/a] 2)

符号数值任意精度控制与运算 任意精度得 VPA 运算可以使用命令 digits(设定默认得精度)与vpa(对指定对象以新得精度进行计算)来实现。

>〉 a1=sym(’2*sqrt(5)+pi')

〉> a=sym(’2*sqrt(5)+pi’)〉〉 b=sym(2*sqrt(5)+pi)

>> digits >> vpa(a)>> digits(15)>〉 vpa(a)〉〉 c1=vpa(a,56)

〉〉 c2=vpa(b,56)

答 a1 = 2*sqrt(5)+pi a = 2*sqrt(5)+pi b = 35796*2^(-50)

Digits = 32 ans = 7、637263128 ans = 7、637 c1 = 7、63726312896

c2 = 7、6372726175781250000000 注意观察c1 与c2 得数值类型,c1 与 c2 就是否相等。

3)

符号类型与数值类型得转换 使用命令sym可以把数值型对象转换成有理数性符号对象,命令vpa可以讲数值型对象转换为任意精度得 VPA 型符号对象.使用 double,numeric 函数可以将有理数型与 VPA 型符号对象转换成数值对象、〉> clear >〉 a1=sym('2*sqrt(5)+pi’)

>〉 b1=double(a1)

%符号转数值 >> b2=isnumeric(b1)

%判断就是否转换成了数值 >> a2=vpa(a1,70)

%数值转符号 答;a1 = 2*sqrt(5)+pi b1 =7、6137 b2 =

1 a2 = 7、6372631285535589083128858 5 5、、符号表达式得操作与转换

1)独立变量得确定原则 独立变量得确定原则:在符号表达式中默认变量就是惟一得.MATLAB 会对单个英文小写字母(除 i、j外)进行搜索,且以 x 为首选独立变量。如果表达式中字母不唯一,且无 x,就选在字母表最接近x 得字母.如果有相连得字母,则选择在字母表中较后得那一个。例如:中,y 就是默认独立变量。,t 就是默认独立变量。

输入以下命令,观察并分析结果。

>> clear >〉 f=sym(”a+b+i+j+x+y+xz’)

>〉 findsym(f)

〉> findsym(f,1)>〉 findsym(f,2)>> findsym(f,3)

>〉 findsym(f,4)〉〉 findsym(f,5)>〉 findsym(f,6)答;f = a+b+i+j+x+y+xz ans = a, b, j,x,xz, y ans = x ans = x,xz ans =

x,xz,y ans = x,xz,y,j ans = x,xz,y,j,b ans = x,xz,y,j,b,a 2)符号表达式得化简 符号表达式化简主要包括表达式美化(pretty)、合并同类项(collcet)、多项式展开(expand)、因式分解(factor)、化简(simple或 simplify)等函数。

①合并同类项(collect)。分别按 x 得同幂项与e指数同幂项合并表达式: . 〉〉 syms x t; >〉 f=(x^2+x^exp(—t)+1)*(x+exp(-t));〉〉 f1=collect(f)〉〉 f2=collect(f,’exp(-t)“)答;f1 = x^3+exp(-t)*x^2+(x^exp(-t)+1)*x+(x^exp(-t)+1)*exp(-t)

f2 =(x^2+x^exp(-t)+1)*exp(-t)+(x^2+x^exp(—t)+1)*x ②对显示格式加以美化(pretty)。针对上例,用格式美化函数可以使显示得格式更符合数学书写习惯。

>〉 pretty(f1)>〉 pretty(f2)

答;f1 = x^3+exp(-t)*x^2+(x^exp(—t)+1)*x+(x^exp(—t)+1)*exp(-t)

f2 =(x^2+x^exp(-t)+1)*exp(-t)+(x^2+x^exp(—t)+1)*x >〉

pretty(f1)pretty(f2)

exp(-t)

exp(-t)

x

+ exp(—t)

x

+(x

+ 1)

x +(x

+ 1)exp(—t)

exp(—t)

exp(-t)

(x

+ x

+ 1)exp(-t)+(x

+ x

+ 1)x 注意与直接输出得 f1 与 f2 对比。

③多项式展开(expand)。展开成 x 不同次幂得多项式、〉> syms x 〉> f=(x—1)^12;〉> expand(f)〉〉 pretty(expand(f))

答;ans = 1+x^12-12*x^11+66*x^10—220*x^9+495*x^8—792*x^7+924*x^6-792*x^5+495*x^4-220*x^3+66*x^2—12*x

+ x

- 12 x

+ 66 x

— 220 x

+ 495 x

x

+ 924 x

- 792 x

+ 495 x

- 220 x

+ 66 x

- 12 x ④ 因式分解(factor)。将表达式做因式分解。

>> syms x;f=x^12—1; 〉> pretty(factor(f))

答;ans = 1+x^12—12*x^11+66*x^10—220*x^9+495*x^8-792*x^7+924*x^6—792*x^5+495*x^4—220*x^3+66*x^2-12*x

12

11

+ x

— 12 x

+ 66 x

— 220 x

+ 495 x

x

+ 924 x

— 792 x

+ 495 x

— 220 x

+ 66 x

- 12 x 〉〉 syms x;f=x^12—1;pretty(factor(f))

(x-1)(1 + x

+ x)(1 + x)

(1 — x + x)(1 + x)(x

— x

+ 1)⑤化简(simple或 simplify)。

将函数化简.〉〉 clear 〉〉 syms x;f=(1/x^3+6/x^2+12/x+8)^(1/3); 〉> g1=simple(f)>〉 g2=simplify(f)

答;g1 =(2*x+1)/x g2 =((2*x+1)^3/x^3)^(1/3)6 6、符号表达式得变量替换

subs 函数可以对符号表达式中得符号变量进行替换 >> clear >> f=sym(’(x+y)^2+4*x+10’)〉〉 f1=subs(f,’x',’s')

%使用 s 替换x >〉 f2=subs(f,”x+y’,“z’)答;f =(x+y)^2+4*x+10 f1 =(s+y)^2+4*s+10 f2 = z^2+4*x+10 7、符号极限、符号积分与微分

1)

求极限函数得调用格式 limit(F,x,a)

%返回符号对象 F 当 x→a 时得极限 limit(F,a)

%返回符号对象 F 当独立变量*→a 时得极限

limit(F)

%返回符号对象 F 当独立变量→0(a=0)时得极限 limit(F,x,a,’right’)

%返回符号对象 F 当 x→a 时得右极限 limit(F,x,a,’left”)

%返回符号对象F当 x→a 时得左极限 例一:

〉〉 clear >> f=sym(“sin(x)/x+a*x”)

>〉 limit(f,“x’,0)

%以 x 为自变量求极限 >> limit(f,”a’,0)

%以 a 为自变量求极限 >> limit(f)

%在默认情况下以 x 为自变量求极限 >> findsym(f)

%得到变量并且按字母表顺序排列 答‘f = sin(x)/x+a*x ans = 1 ans = sin(x)/x ans = 1 ans = a,x 例二: >> clear >〉 f=sym('sqrt(1+1/n));

〉〉 limit(f,n,inf)

%求 n 趋于无穷大时得极限

2)

求积分函数得调用格式 int(F)

%求符号对象 F 关于默认变量得不定积分 int(F,v)

%求符号对象 F 关于指定变量 v 得不定积分 int(F,a,b)

%求符号对象 F 关于默认变量得从 a 到 b 得定积分 int(F,v,a,b)

%求符号对象 F 关于指定变量得从 a 到b得定积分 3)

求微分方程得调用格式 diff(F)

%求符号对象 F 关于默认变量得微分 diff(F,v)

%求符号对象 F 关于指定变量 v 得微分 diff(F,n)

%求符号对象 F 关于默认变量得 n 阶微分,n 为自然数 1、2、3…… diff(F,v,n)%求符号对象 F 关于指定变量 v 得 n 阶微分 8 8、符号方程求解

1)常规方程求解函数得调用格式 g=solve(eq)

%求方程(或表达式或字串)eq 关于默认变量得解

g=solve(eq,var)

%求方程(或表达式或字串)eq 关于指定变量 var 得解 g=solve(eq1,eq2,…、,eqn,var1,var2,…,varn)

%求方程(或表达式或字串)eq1,eq2,eq3,……eqn 关于指定变量组var1,var2,……,varn)得解 求一元二次方程得解.其求解方法有多种形式:

① seq=solve(“a*x^2+b*x+c')

② seq=solve(’a*x^2+b*x+c=0”)③ eq=’a*x^2+b*x+c“;④ eq=”a*x^2+b*x+c=0’; seq=solve(eq)

⑤sym x a b c

eq=a*x^2+b*x+c seq=solve(eq)

2)常微分方程求解 求解常微分方程得函数就是 dsolve。应用此函数可以求得常微分方程(组)得通解,以及给定边界条件(或初始条件)后得特解。

常微分方程求解函数得调用格式:

r=dsolve(“eq1,eq2,…’,’cond1,cond2,…’,’v’)r=dsolve(’eq1’,’eq2”,…,“cond1’,’cond2’,…,’v”)说明: ① 以上两式均可给出方程 eq1,、qeq2 对应初始条件 cond1、cond2 之下得一 v 作为解变量得各微分方程得解。

② 常微分方程解得默认变量为 t。

③ 第二式中最多可接受得输入式就是 12 个。

④ 微分方程得表达方法。

在用 MATLAB 求解常微分方程时,用大写字母 Dy表示,用D2y表示,依此类推。

边界条件以类似于 y(a)=b 给出。其中 y 为因变量,a、b 为常数、如果初始条件给得不够,求出得解为含有 C1、C2 等待定常数得通解。

例一 求微分方程得通解、练习:(1)求。

(2)求函数得积分;求函数得导数(3)计算定积分(4)求下列线性方程组得解

(5)求解但 y(0)=2,在 z(0)=7 时,微分方程组得解。

实验五

MATLA B 程序设计

一、实验目得

掌握 MATLAB 程序设计得主要方法,熟练编写 MATLAB函数、二、实验内容

(1)M 文件得编辑。

(2)程序流程控制结构。

(3)子函数调用与参数传递。

(4)局部变量与全局变量。

三、实验步骤1、M M 文件得编辑

选择MATLAB 得菜单,打开新得M文件进行编辑,然后输入以下内容,并保存文件名为 expl、m。

s=0;for n=1:100

s=s+n;end s 答;s =

5050 保存好文件后,在命令窗口输入expl 即可运行该脚本文件,主义观察变量空间。紧接着创建 M 函数文件,然后输入以下内容,并保存文件名为 expl2、m。

function s=expl2(x)

s=0;for n=1:x

s=s+n; end

保存好文件后,在命令窗口输入

>〉 clear 〉> s=expl2(100)以 open 命令可以打开 M 文件进行修改。

〉〉open conv

%打开 conv 函数 2 2、程序流程控制结构

1)

for 循环结构

>〉 for n=1:10 n end 答;n =n =n =n =n =n =

6 n =n =

n =n =

另一种形式得 for 循环: 〉> n=10:—1:5;>〉 for i=n

%循环得次数为向量 n 得列数 i end 答;i =

10 i =i =i =i =i =2)

while 循环结构 在命令窗口输入:

clear x=1;while 1 x=x*2 end 将会瞧到 MATLAB 进入死循环因为 while 判断得值恒为真,这时须按 Ctrl+C键来中断运行,并且可瞧到 x 得值为无穷大。

练习:

(1)请把 exp2、m函数文件用 while 循环改写。

(2)用公式求得近似值,直到最后一项得绝对值小于为止,试编写M脚本文件、3)

if-else—end 分支结构

if—else—end 分支结构有如下 3 种形式。

(a)

if

表达式 语句组 1 end(b)

if

表达式 语句组 1 else 语句组2 end(c)

if

表达式 A

语句组 1 else if 表达式 B 语句组 2 else if 语句组 3 …… else

语句组 n end 4)

switch—case结构 创建 M 脚本文件 exp3、m,输入以下内容并在命令窗口中运行。

%功能:判断键盘输入得数就是奇数还就是偶数 n=input(’n=');if isempty(n)

error(’please input n');

n=input(“n=’);end switch mod(n,2)

case 1

A=’奇数'

case 0

A=’偶数” End 答;n=input('n=’); if isempty(n)

error('please input n’);

n=input(“n=’); end switch mod(n,2)

case 1

A=”奇数“

case 0

A=”偶数' end n=1 A = 奇数 3、子函数与参数传递

有一个函数,试编写实现该函数得函数文件.function g=expl4(x)

%主函数 g=0;for n=1:x

g=g+fact(n);

%调用子函数 end

function y=fact(k)

%子函数 y=1; for n=1:k

y=y*n; end 输入参数可以有函数 nargin 计算,下面得例子 sinplot(),当知输入一个参数 w 时,sinplot()函数会给p赋予默认值 0。4、局部变量与全局变量

关键词:Visual FoxPro,上机,错误,教学效果

1 引言

Visual Fox Pro是可视化数据库管理系统的代表,因为其功能强大,能够适应各类用户。这门课程是针对非计算机专业开设的一门程序语言课程,因为学生大部分是第一次接触程序语言,学习的学生大部分是文科类,学生会觉得很难,再加上他们认为对他们来说没有用,所以学习兴趣不高,给教学造成一定的困难。正因为是非计算机专业开设的程序语言课,所以课时数达不到计算机专业的课时数,因此在教学的过程中需要老师采取各种方法启发学生进行理解学习,但是在学习的过程中还是会出现各种问题。

2 常见错误

任何计算机语言都有它的语法规则,在Visual Fox Pro中同样有它自己的语法规则,同学们在实践的过程中只有掌握了规则才能写出正确的语句。但是由于学生都是初学编程,对VFP语法规则不熟或者题意不清或是粗心大意等原因,经常在上机的过程中出现错误提示问题。 一般来说,用户执行的操作有误时,如果是语法问题,VFP系统会向用户发出错误消息,引导用户进行修改;但是如果是语义错误,则是隐含的不提示的,不易察觉,需要仔细检查并且对程学语言非常熟练。

2.1 不明确的日期/日期时间常量

如计算今年还剩下多少天就到2016年了,同学们常输入的代码是? {01/01/16} -date(),运行时系统会弹出“不明确的日期/日期时间常量。 请使用正确格式:{^yyyy-mm-dd}”的对话框。因为在VFP中,严格的日期格式永远是正确的格式,即{^yyyy-mm-dd}这种格式,并且默认情况下也是要进行严格日期检查的。如要在VFP用{MM/DD/YY}或者其他非严格的日期格式,就必须要先用set strictdate to 0语句设置不进行严格的日期格式检查,然后再输入上述语句运行则不会出错了。因此正确语句是:

Set strictdate to 0

?date()-{01/01/16}

2.2 找不到变量

1) 命令窗口同时执行多行语句

例如: stroe “ Visual Foxpro ” to a

?a

按照VFP的语法规则,一行只能写一句,并且在命令窗口写完一句后必须按回车键才能执行,但是初学者输入第一行后并没有按回车,而是移到下一行继续输入命令直至所有行的命令全部输入结束才按回车,或者直接将命令全部复制粘贴后回车执行,甚至任意按回车,实际这种操作方法永远执行的都是最后一句,所以上述例子实际执行的是命令:?a,所以系统提示“找不到变量N”。因为前面stroe“Visual Foxpro”to a赋值语句根本没有执行,所以a变量根本就没有定义。原因还在于学生们没有理解透命令回车的真正含义。

2) 变量使用前未定义

例如: if Account <> ” administrator ” or password<> ” admin ”

?”用户名或者密码不正确,请核对后再输”

Else

?”用户名和密码都正确”

Endif

执行代码,但系统弹出提示信息:找不到变量Account和password。那是因为在VFP中变量必须要先定义后使用,如果直接给变量赋值也相当于定义了变量,就不用再用专门的定义语句dimension去进行定义了。在上午语句中只要做些相应的修改即可,在if语句之前加入两条语句,接收键盘输入帐户和密码值的两个变量,如下:

Accept “请输入用户名” to Account

Accept “请输入密码” to password

这样就定义了两个新变量来接收键盘输入的账号和密码信息,用户在运行代码的时候就不会出现问题了。

2.3 打开表文件有误

在上机实验的过程中经常有学生举手提问,就是访问表文件的时候,经常会出现“表文件不存在”或“.fpt文件无效”等提示,导致学生无法正常对表进行操作,此时学生对VFP不够熟练所以不能自行解决问题。此类问题的原因主要是两个方面。

1) 表文件不存在。学生上机实验的文件有时候是自己拷贝过来的,或者是自己书写保存的,此时VFP有自己默认的保存路径,但是路径没有按照实验要求。例如stud.dbf表文件是存放在d:vf的文件夹下,而系统的默认路径是:c:visual stu-diovfp98,当要对stud.dbf表文件进行操作的时候则操作默认路径下的同名表文件,如果默认路径没有此文件,则会出现“表文件不存在”的提示。所以我们在操作之前则可以将默认路径改成d:vf,只需在命令框输入语句set default to d:vf。

2) 提示“.fpt文件无效”是因为表文件所对应的备注文件.fpt破坏了或被删除造成的。

2.4 误使用标点符号

由于学生对语法规则没有牢记,或者自己疏忽大意,经常犯此类错误。

1) 标点符号输入不正确

在VFP命令行中,要求标点符号都必须在英文半角的状态下输入,而大多数学生则往往忘记切换输入法,甚至有些同学不认为标点符号有什么区别,若输入了中文状态下的标点符号则引发此类错误,系统则会弹出“不能识别的命令谓词”的消息

例如输入统计及格率查询语句:select班级,count(*) as该科总人数,sum(iif(成绩!=“不及格”,1,0))/count(*) as及格率from考试成绩group by班级order by 1

执行命令的时候系统往往提示“不能识别的命令谓词”,因为这条命令的标点符号不符合语法要求,必须都改成英文半角状态下才行,此类错误是常有的,所有要强调输入完命令之后一定要检查标点符号是否符合规范,如有此类错误先检查标点。

2) 误使用“;”续行符

VFP命令如果一行太长可以使用英文半角“;”续行,表示下一行和本行是同一样命令,而有的同学可能理解不深,在输入命令的时候不知道怎么使用分号。

如输入以下命令:

Instore “ good ” to a;

Instore“moning!”to b;

?a,b

结果会弹出语法错误的对话框,因为加了分号这三句话当成一条语句执行,相当于在命令框里面输入了:Instore“good ”to a Instore“moning!”to b ?a,b。这时只要把每句话后面的分号“;”删除就可以,就能每句执行。

2.5 命令动词输入有误

VFP中,系统软件默认的命令动词输入正确的情况下在命令框是蓝色的,而学生经常会输入错误,首先没有变成蓝色则可能拼写错误,例如:select写成了selcet 。还有就是显示是蓝色的但是也提示错误,例如:from写成了form也是蓝色,因为form是表单的意思,也是VFP的默认的命令词语。

2.6 语法格式错误

任何一门语言都有它自身的语法格式,汉语、英语有,计算机语言也同样有语法格式。VFP相对其它语言来说,语法格式较为宽松。 例如在VFP中的关键字和变量名是不区分大小的;简单变量也不需要用特定的语句进行定义声明,只需要给简单变量赋值则变量就自动定义产生了。但是它也是语法约束格式,只有彻底了解VFP的语法格式才能避免此类错误。比如在VFP程序语句中所有的标点符号都必须是英文半角情况下输入的,例如查询语句中select后面要查询的多个字段之间应该用英文半角下的逗号“’,”隔开,而不是分号冒号等。

3 结语

综上所述都是学生在实践操作的过程经常遇到的问题,这些问题都是学生对VFP的基础掌握不牢造成的,所以学生的实验操作也是教学中的一个重要环节。只有加强练习,多给案例让学生自己的去完成,才能对VFP程序语言的理解更加深入,才能使用正确的排错方法,能够自己进行调试,真正提高自己的编程水平。

参考文献

[1]徐红.数据库原理与应用[M].北京:北京大学出版社,2006.

[2]教育部考试中心.全国计算机等级考试二级教程——VisualFox Pro6.0程序设计[M].北京:高等教育出版社,2011.

[3]曾华.启发式教学的Visual Fox Pro课堂实践[J].现代计算机,2012(5).

[3]高永惠.Visual Fox Pro中常见错误及其处理方法[J].怀化学院学报,2003(10):86-88.

[4]刘艳松.VFP结构化程序设计教学中常见错误及分析[J].株洲师范高等专科学校学报,2007(10):62-64.

信息技术课包括理论教学和上机实践,用理论来指导实践,通过实践又可以更好地理解理论,二者相辅相成的,缺一不可。在以前的教学中,很多老师往往重理论教学,轻实践操作,经常是教师先演示讲授一遍,然后再让学生依葫芦画瓢完成教学任务,自己巡视辅导一下就算完了。其实,在实际教学过程中,学生的学习效果并不好,对于学习能力较强和以前接触过此类问题的学生,你还没有讲完,他就会操作了;而学习能力较弱的学生,即使你演示一遍他也没有弄清楚是怎么一回事;还有一部分学生甚至走神了或者做其他事情,压根没有听见你在说什么。况且,这种方法很不利于学生的自主学习和创新能力的培养。那么,该采用什么教学模式来组织教学呢?通过不断尝试、总结,我认为可以通过以下六个环节来组织好信息技术上机实践课。

一、激情导入

“良好的开端是成功的一半”,信息技术课堂导入部分在整个课堂教学中起着提纲挚领的重要作用,教师如果能够设计出构思巧妙、想象奇特的导入方式,就能够集中学生的注意力,激发学生的学习兴趣,创设良好的学习情境,提高教师的课堂控制能力,从而为课堂教学奠定一个良好的基础。导入的时间一般掌握在2—3分钟,导入新课的方法通常有谈话导入、故事导入、媒体导入等等。现在用的较多的是媒体导入。多媒体教学,由于声、光、电效果的参与,其直观、生动、形象等特点不言而喻。因而能激发学生的学习兴趣,增强学生的求知欲望。如在讲授用flash制作形状补间动画时,我先播放一段自制的Flash补间小动画给学生欣赏。在这段flash动画中,骑着笤帚的小巫师在“变法术”:狗变成了蚂蚁,鸟变成了兔子……,同学们纷纷睁大了眼睛,惊叹不已,这时候我告诉同学:“这是怎么回事呢?这就是我们今天将要学习的新内容——“形状补间动画”,学会了形状补间动画,你就拥有了哈利波特的魔棒,想怎么变就怎么变!”学生立刻响应,教师很自然地把学生引导到课堂教学中。这个导入设计用动画、声音充分调动学生的感官,让学生对所学内容充满好奇和期待,从而促进学生学习的主动性,迎合了学生渴望新知、追求刺激的心理特点。

二、任务驱动

任务驱动教学法就是以任务作为驱动,教师把教学内容设计成一个或多个具体的任务,让学生通过完成一个个具体的任务,掌握教学内容,完成教学目标。例如,在讲授WORD中插入图片时,我首先通过给学生观看学校六十周年校庆的视频片段,激发学生热爱母校的情感和学习WORD的兴趣,引出本节的主题任务——为母校六十五周年校庆制作宣传海报,在完成这个主题任务过程中,再给出一个个小任务(比如如何改变图片的大小、位置、图片与文字的关系),让学生运用已学知识,自已动手,自主探究,以任务的方式再次激发学生兴趣,使教学内容合理流动,水到渠成。学生在完成每个任务的过程中,总是从思考讨论完成任务的办法开始,在对讨论的结果进行探究验证的基础上,完成任务,最后通过作品展示,让学生更多地体验一种成就感,进一步激发他们强烈的创造欲望和爱校热情。

三、自主探究

建构主义学习理论认为:“学习是一个积极主动的建构过程,学习者不是被动接受外在信息。”教学的目的在于帮助每一个学生进行有效的学习,使之按自己的性向得到尽可能充分的发展。只有当学生能自由参与探索与创新时,他们学得最好。在信息技术上机课中,教师在教学过程中不可能也没必要对所有的知识点逐一讲解,有些内容,我们可以做简单的讲授后让学生去实践,让学生在实践中去体会,去掌握;有些内容,我们完全可以以“任务”的方式布置给学生,让学生自己通过看书、浏览教学光盘、上网查询等方式自主去探究,充分相信学生的能力。

在讲授“电子邮箱的使用”一节时,我只是对电子邮箱的含义及工作原理作了简单的介绍,介绍提供免费电子邮箱的网站有哪些,然后告诉学生我的电子邮箱地址。而对如何申请一个免费电子邮箱、如何收发电子邮件只字不提。我的要求是,每个同学通过阅读教材、浏览网站、相互讨论等方式,申请成功一个免费电子邮箱,并给我发送一个电子邮件。一个礼拜后,我打开了自己的邮箱,发现邮箱中不仅有学生发来的邮件,还有贺卡,他们甚至已经熟练地掌握了附件发送、多方同时发送(抄送、暗送等)等操作方法。有的学生在邮件中写到,他们非常喜欢这种自主探究的学习方式,称不仅自己能切实掌握书本知识,而且在学习中发现问题时,能培养自己独立思考、主动探究的能力。教学实践表明,自主探究这一环节,时间至少要保证30分钟以上。

四、鉴赏评价

心理学告诉我们,学生有经常获得认可与欣赏的需要。当学生基本完成任务后,教师要帮助学生对学习过程和结果进行评价,并促进评价的内化。老师可以用广播软件将个别学生的优秀作品放映给全体学生欣赏;将方法上有创新的学生请上讲台当“小老师”,让其将自己的做法演示给大家看,将自己的想法讲解给大家听,以此增强学生的成就感,激发学生的学习内驱力和创新精神。“听来的容易忘,看到的不易记,只有动手做才能学得会。”这时老师再让同学们用小老师的方法试一试,这样可以举一反三,融会贯通。

五、课堂小结

课堂小结是课堂教学结构的收尾阶段,是教师对一堂课所讲知识的重、难点和学生在课堂中的学习态度、表现等进行的小结,因此教师的语言一定要简洁、明了。这一环节的时间不要超过2分钟。

六、作好铺垫

每节课结束前都要为下节课埋下伏笔,如:在学习了“FLASH逐帧动画”后,可设计这样一段结束语:“这节课我们学习了逐帧动画,但还不尽人意,比如动画要一帧一帧地制作,如果这个动画比较复杂,有上千帧,我们是不是还要逐帧制作呢?其实,不需要的,flash除了能制作逐帧动画外,还能够“替”我们完成一些形式的动画。由于时间关系,我们下次课来学习好不好?”使学生感到“课已尽而意无穷”,从而继续保持浓厚的学习兴趣,为在已有知识的基础上进一步深化、进行新的探索和再创造打下良好的心理基础。

2011级国际经济与贸易学生实习报告

专业班级 : 国贸1101 姓 名: 罗宏森 学 号:

实习报告

一、实习目的

实习是专业教育的一个重要实践性教育环节。通过实习,可以使我们熟悉外贸实务的具体操作流程,增强感性认识,并可从中进一步了解、巩固与深化已经学过的理论和方法,提高发现问题、分析问题以及解决问题的能力。

二、实习主要内容

1.利用simtrade提供的各项资源,做好交易前的准备工作。2.学会运用网络资源宣传企业及产品。

3.使用邮件系统进行业务磋商,掌握往来函电的书写技巧。

4.掌握不同贸易术语在海运、保险方面的差异。在询盘、发盘、还盘、接受环节的磋商过程中,灵活使用贸易术语(CIF、CFR、FOB)与结算方式(L/C、T/T、D/P、D/A),正确核算成本、费用与利润,以争取较好的成交价格。5.根据磋商内容,正确使用贸易术语与结算方式签订外销合同。

6.掌握四种主要结算方式(L/C、T/T、D/P、D/A)的进出口业务流程。7.根据磋商内容做好备货工作,正确签订国内买卖合同。8.正确判断市场走向,做好库存管理。

9.正确填写各种单据(包括出口业务中的报检、报关、议付单据,进口业务中的信用证开证申请)。

10.掌握开证、审证、审单要点。

11.学会合理利用各种方式控制成本以达到利润最大化的思路。

12.体会国际贸易的物流、资金流与业务流的运作方式,体会国际贸易中不同当事人的不同地位、面临的具体工作与互动关。

三、实习过程及收获

1.前期实习

㈠前期准备

首先是花少许时间注册属于自己的公司,将三个角色空白的公司资料一一填写完全。

出口商:

进口商:

工厂:

公司成立后,前往广告公司在上分别发布一条公司广告与一条产品需求和供应广告。出口商广告:

进口商广告:

㈡邮件磋商与订立合同

做完这些后,便选中自己的出口商、进口商和工厂,各起草了一封邮件发送给自己的交易对象。

在收到邮件后,表明自己所需物品以及可能达成的交易条件,此封邮件即构成询盘。

收到询盘邮件后,出口商即可在市场上寻找合适的货源提供商即工厂。出口商可起草邮件发送至工厂,对所需产品进行询价。如果所需货物数量巨大,出口商一般要求工厂给出优惠价格。

厂在收到出口商询价的邮件后即可在正确核算生产成本、增值税、公司综合费用以及一定的利润空间的基础上对出口商报价。

接到工厂的报价后,出口商进行出口预算,预算内容主要有:合同金额、采购成本、FOB总价、内陆费用、报检费、报关费、海运费、保险费、核销费、银行费用、其他费用、退税收入以及所得利润。具体的预算表的核算根据合同、贸易术语的不同以及产品性质的不同会由变化。比如根据进口商的询盘要求“CIF TORONTO”,上述的预算表一切内容出口商都要填列。在核算出各项成本与利润后,确定对进口商的报价。出口预算表:

进口商接到出口商的报价后,根据争取利润最大化的原则对出口商报价进行还盘,争取对自己有利的协定。之后,在得到自己满意的答复后,进口商发送表示接受对方发盘的邮件,邮件中再次复述经过磋商协定的内容。接着,出口商起草外销合同并填写“出口预算表”。外销合同主要包含了交易双方的公司名址、货物的详细信息、贸易方式以及结算方式、注意事项以及双方权责条款等。在检查无误后发送给进口商。

进口商在收到出口商发来的合同后进行进口预算,预算表的主要内容有:合同金额、CIF总价、内陆运费、报检费、报关费、进口关税、增值税、消费税、海运费、保险费、银行费用以及其他费用。一一核算好并对出口商发来的合同检查无误后便在合同上签字。此时,合同生效,进入履约阶段。合同:

进口预算表:

㈢、履行合同

由于第一次交易采取的是的贸易术语是CIF,结算方式是L/C。因此在合同生效后,根据合同要求,出口商在收到进口商发来的信用证后才开始履行贸易手续。首先是进口商填写“信用证申请书”并提交给进口地银行,进口地银行根据申请书开立信用证。经过进口商同意后,信用证先后发送给出口地银行、出口商,并经过审证通过后,由出口商接受信用证。信用证:

出口商接受信用证后便开始备货,即与工厂签订国内买卖合同,工厂凭此合同向出口商发货并收取货款。之后,货物进入出口商库存。工厂合同:

工厂业务截图:

备货后,出口商根据货物的重量与体积与船公司恰订舱位。货物出运委托书:

配舱回单:

之后便是出口报检,出口报检要求出口商提供销货合同、信用证、商业发票、装箱单、出境货物报检单进行报检。以上单据,缺一不可。报检完成后,检验机构会签发“出境货物通关单”及相应的检验证书。商业发票:

装箱单:

出境货物报检单:

通关单:

报检之后是为货物办理保险,保险的办理需凭商业发票和货物运输保险投保单。保险的基本险有三种:FPA、WPA、All Risks;特殊附加险有多种,如:War Risk、Strike Risk等等。基本险中,All Risks的保险范围最广,因此我选择投All Risks。

接下来,便是为货物办理报关。首先需前往外管局申领核销单,凭填好的出口收汇核销单办理备案,备案后即可送货。之后是凭商业发票、装箱单、出境货物通关单、出口收汇核销单和出口货物报关单进行报关。报关后,货物自动装船出运。货物装船出运后,出口商应及时发送“SHIPPING ADVICE”给进口商,好让进口商做好筹措资金、付款和接货的准备。报关单:

Shipping advice:

核销单:

在此之后,出口商还要申请商品的普惠制产地证明书,然后填写汇票,凭商业发票、装箱单、原产地证明书、货物运输保险单、海运提单和汇票前往出口地银行进行押汇。原产地证:

出口地银行对单据检查无误后,将单据送往进口地银行并进行议付。此时,出口商便可以顺利结汇了。结汇后,出口商还需办理出口核销和出口退税。出口核销是指外汇监管当局对出口单位的出口货物实施跟踪监管直到货款收回进行核销的一种事后监督制度。而出口退税是对已经报关离境的出口货物,由将期在出口前生产和流通各关节已经缴纳的国内增殖税或者消费税等间接税的税款,退还给出口企业的一项税收制度。通过出口退税,企业可以在一定程度上将商品以更低的价格打入国际市场,提高企业竞争力。

另外一边,进口地银行对单据检查无误后便发送给进口商,进口商付款后便可取回单据。取回单据后,便可前往船公司换取提货单并为货物办理报检报关,此处的报检报关与出口商所办理的差别不大。顺利完成报检报关并缴纳进口税和增值税后,即可提取货物。

最后,进行进口付汇核销,再根据市场行情进行销货,一整笔业务即全部完成。

㈣收获与体会

在这第一笔业务中,我对整个国际贸易流程有了一个初步的认识。这种认识不再像以往一样停留在书本的理论知识上,而是升华到了实践的层面;通过这一笔业务,我可以将书本所学的知识经过串联,最终形成一个体系,不再是零零散散的认识。

国际贸易的中间环节多,涉及面广,除双方当事人外,还涉及船公司、检验、保险、海关等部门。如果哪一个环节出了问题,就会影响到整笔交易的正常进行甚至法律上的纠纷。在本笔贸易中,在进行进出口预算时,很多数据都需要自己上淘金网查询。比如:内陆费用、报检费、报关费、海运费、保险费、核销费、银行费用、其他费用、退税收入等。由于以前没有进行核算的经验,尽管在帮助栏有填写指导和公式,但在真正的核算上我却错误百出,最后出口预算只有54%的正确率,这说明我的业务水平还很差,远远没有达到入门的要求;在制单的时候也是一样,需要填写的东西没填,导致一张单据往往要填写多次才能达到100%的正确。类似这样的事情,层出不穷。若是换做真实的实习环境,恐怕我早就该被老板抄了。第一笔贸易让我意识到了本次实习就是一个提高自己的大好良机,一个人的能力只有在实践中才能逐渐成长。2.后期实习

经过第一笔贸易后,随着贸易笔数的增加,我缮制单据的能力在不断加强,速度越来越快,单据的填写错误也渐渐少了起来。在此期间,我先后达成了1笔出口贸易和3笔进口贸易,分别尝试了在各种贸易术语(CIF、CFR、FOB)与结算方式(L/C、T/T、D/P、D/A)下进行进出口贸易,使综合水平相对初期实习有了一个质的飞跃。同时也对各种术语与结算方式的具体流程有了一个比较清晰的了解。采用FOB术语时,出口商负责在进口商指定船公司后帮助进口商洽订舱位,并负责报检报关等一切费用,但不承担海运费与保险费,还要负责提供一应单据,如:商业发票、装箱单、产地证明书、海运提单和汇票等,但货物自装船出运后,一切风险和费用均转移给买方。进口商负责在收到“SHIPPING ADVICE”后给货物投保,并承担海运费;进口地的报检报关费也由进口商承担;同样,货物装船后的一些风险由进口商承担。当采用CFR术语时,出口商除承担FOB条件下所应承担的责任费用外,还需负责货物的海运费。而进口商则无需负担货物的海运费,但仍需承担保险费。而采用CIF术语时,出口商除承担CFR条件下所应承担的责任费用外,还需负责为货物投保,险种以双方签订的合同为准,如进口商有特别需要,如投保战争险、罢工险等特殊附加险时,额外费用由双方协商结果为准。

在结算方式方面,采用L/C时,进口商需负责向进口地银行申请开立信用证,进口地银行需要根据申请书开立信用证,在进口商同意后发往出口地银行。出口地银行审证无误后,将信用证发给出口商,出口商审证无误后即可接受信用证。这里需要注意的是,信用证与单据必须做到“单证一致,单单一致”,否则贸易过程中极易出错,在真实的环境下,可能会因此造成巨大的损失甚至要走法律程序。

采用D/P时与D/A时,大体流程相同,但有所区别的是:在D/P结算方式下,进口商需要向银行付款后才能取回相关单据;而D/A结算方式下,进口商只需做出承兑,保证在规定付款期前付款便可获得单据,凭此单据即可提货。

当采用T/T时,出口商直接将相关单据,如:商业发票、装箱单、海运提单以及CIF条件下的投保单等直接邮递给进口商,进口商收到单据后可销货后再付款。另外需要补充的是,在出口商结汇方面,L/C方式下出口商是将单据交给银行,以此“押汇”;而D/P与D/A方式下,出口商则是交单委托银行收款,即“托收”,并且在此方式下银行不需要垫付任何款项;在T/T方式下,出口商直接将单据发给进口商,不经过银行。

后两天的实习是一个补缺补漏、体会各个细节并且消化应用的阶段。在逐渐把握整个实习流程和和体系后我要做的就是把以前学过的理论内容与实习时间中的内容相结合。这相当于对以前学习的知识的一种复习,同时又使本次实习让我更加印象深刻。在此阶段我逐渐融入实习中,并当做实际交易在锻炼自己,不断考察各种因素,改进各种不足,尽量使最少的成本达到最大的利润,这让我有了一个真正商人的感觉。

五、不足之处

1.预算能力不够。在整个贸易过程中我的预算能力时高时低,极不稳定。究其原因,还是没有正确理解帮助里的公式和计算方法,在计算上太过马虎,常常应付了事。殊不知预算决定了成本的控制与利润的获得,没有好的预算为基础,那么利润最大化则是空谈。2.单据填写错误率高,业务操作常常出错。尽管这一现象随着制单的增加而逐渐改善,但在前期和中期的实习中却屡见不鲜。首先可能是因为以前没有接触过各种单据,在初期的填写上感觉很费劲,尽管有指导书的帮助,也要很久才能真正读懂并且填好一张单据。在单据的填写中我们必须重质又重量,这就要求我们密切注意各个单据之间的联系,很多单据之间往往数据相通,如:商业发票、装箱单;在这个时候,主要单据的基础作用就显现出来了,只有在完善主要单据的基础上,其他单据才能又快又好的填写。经过多次练习后,我才逐渐掌握了填单的技巧。可以说,单据的填写能力,是在不断的纠错和改错中锻炼出来的。

3.对贸易软件的规则不认真阅读。最明显的一个例子就是,在整个贸易过程中,我所有的进出口货物都填写了报检单并且报检。后来才知道,许多货物是不用报检的,或者只用出口或进口商报检。由此可知,我在这上面浪费了大把的时间,也许这也是我预算表总是出错最直接的原因。4.邮件与广告发的太少。老师在实习前就提醒过大家,在贸易的往来过程中应尽量使用邮件磋商。可真正在实习过程中,为了求得贸易速度与成交量,我往往直接省略了邮件的步骤或者只是简单的发一封两封“意思意思”,结果造成后期系统提示里一直提醒“邮件发的过少”。广告和信息也是一样,除第一次按照指导书上发了之后,在整个实习过程中我很少发布广告或者信息,所需的信息都是在现实中直接与同学交谈达成,改变了老师让我们实习的初衷,也让自己缺乏了许多锻炼的机会。

六、总结

到此这篇matlab function输出多个变量(matlab函数怎么输出多个参数)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • matlab函数输入参数太多(matlab输入参数太多plot)2024-12-11 22:54:10
  • matlab函数输入参数太多(matlab函数输入参数不足)2024-12-11 22:54:10
  • matlab中脚本文件和函数文件有什么区别?(matlab软件程序分为脚本文件和函数文件)2024-12-11 22:54:10
  • matlab函数(matlab函数用法大全)2024-12-11 22:54:10
  • matlab函数与脚本(matlab函数脚本为什么不能符号运算)2024-12-11 22:54:10
  • matlab脚本和函数合起来运行(matlab脚本和函数合起来运行怎么办)2024-12-11 22:54:10
  • matlab函数与脚本的区别(matlab脚本文件和函数文件怎么联系)2024-12-11 22:54:10
  • matlab 常用函数(matlab常用函数符号)2024-12-11 22:54:10
  • matlab函数的写法(matlab函数的用法)2024-12-11 22:54:10
  • matlab函数功能大全(matlab中各种函数的详解)2024-12-11 22:54:10
  • 全屏图片