Mathcad学习笔记 王定略 0930301058
x循环变量,y值域;z为”for”语句下执行的语句,会计算值域y中每个x值对应的z值,一般z值会随x的变化而变化。 Eg:
i?1fori?1?9,i的值域就是1到9的整数。这个值域也可以用向量给f(x):?x?x?ix出来。 Eg:
a:??1385?fori?af(x):?x?x?ix,这里i的值域就是向量a,i取值在值域中按顺序一个一
个取。
“while”语句格式: while x y
x:条件表达式;y:运算表达式。如果x为真(不为0),则执行运算表达式y。表达式y的计算必须导致x的变化。一旦x变为假(=0),循环结束。不过如果y表达式无法使x变成假,则会陷入死循环,只能按Esc键才能停止计算,这个是要注意的。 Eg:
i?1whilei?7f(x):?x(注意:运算表达式y如果不止一个表达式,要用add x?x?i,
i?i?1line嵌套起来。)这里专门用了一个变量i来执行循环变量,大多数情况下,函数变量本身就可以承担循环变量的任务。For语句的循环,循环次数是固定的,而while语句的循环是不定的。这是二者最大的区别。
48. continue语句和break语句都是用来执行中断循环的语句。二者的区别在于,
continue语句只中断正在执行的一次循环,中断后会进跳过continue语句以
11
Mathcad学习笔记 王定略 0930301058
后的语句而进入下一次循环;而break语句则是中断整个循环语句,中断后执行循环语句后面的语句。它们都和条件语句一道使用。 Eg:
s?0fork?0?nf(n):?s?s?kss?s?kfork?0?notherwiseifn?0continueifmod(k,2)?0,f(n)的功能是当n≥0时,0到n奇数之和返
回给f(n);当n<0时,取膜,0到-n之和。(for语句执行语句不止一个,都要用add line 嵌套)。 49. 这里专门强调一次,一个程序中,到底哪一句是最后一次执行的语句,要注
意,要小心,特别是条件语句多的函数。 50. return语句和on error语句。
return x ,读到return运算符,终止程序,并返回x。
x on error y ,计算y,如果y发生错误(无意义),则计算x并返回x,否则返回y的计算结果。on error 运算符是一种特殊的条件运算符。 51. 程序的递归,也就是函数自己调用自己本身。这在每一种语言中都是非常重
要的运算方式。 Eg:
f(n):?n?f(n?1)ifn?2,f(n)程序功能是返回n!。里面自己调用自己f(n-1),
1otherwise从而实现循环。
52. mathcad有大量的函数,比如mod(x,y),x/y返回余数。等,多少要了解一些。
以下是几个常用的函数,更多的要去了解,最好能找个mathcad函数大全下下来查比较好。
max(A,B,?):返回A,B,?所有元素中的最大值。 min(A,B,?): 返回A,B,?所有元素中的最小值。 mod(x,y):返回余数;
round(x,n):四舍五入到小数点后n位,若缺省n则默认是0,四舍五入取整; Round(z,y):返回round(z/y)?y;
floor(z):返回≤z的最大整数;Floor(z,y):返回≤z的y的最大倍数;
12
Mathcad学习笔记 王定略 0930301058
ceil(z):返回≥z的最小整数;Ceil(z,y):返回≥z的y的最小倍数;
trunc(z):去掉z的小数部分,返回整数部分;Trunc(z,y):返回trunc(z/y)?y。 53. 几个常用的统计函数:(统计函数的参数都是针对矩阵的)
均 值:mean(A,B,?): A,B,?所有矩阵内的所有元素相加求均值。 中位数:median(A,B, ?):返回所有矩阵元素,从小到大排列,正中间的那个元素值,如果是偶数,则去正中两个元素的均值。
方 差:var(M);Var(M),前者是矩阵所有元素的最大似然估计方差,后者是所有元素的无偏估计方差。
??(Mvar(M)?i?0j?0m?1n?1i,j?mean(M))2??(M、Var(M)?i?0j?0m?1n?1i,j?mean(M))2。
m?nm?n?1标准方差:stdev(M),Stdev(M),分别表示var2(M);Var2(M)。 协方差:cvar(A,B)。相关系数:corr(A,B)。 54. 几个矩阵函数:
augment(A,B,?):矩阵合成函数,就是将矩阵(向量)A,B,?按从左到右的顺序合成矩阵。Eg:A=(1 2);B=(3 4)则augment(A,B)=(1 2 3 4)。
stack(A,B,?):矩阵合成函数,不过它是将矩阵(向量)A,B,?按从上到下的顺序合成矩阵。
Submatrix(A,ir,jr,ic,jc):提出子矩阵函数,表示一个由矩阵A的第ir行到jr行之间和第ic列到jc列之间的子矩阵。
rows(M),cols(M):分别是求矩阵M行数和列数的函数。 rank(M):求矩阵M的秩的函数。 tr(M):求矩阵M的迹的函数。
sort(V):将向量V中所有的元素按从小到大的顺序进行排序输出一个新向量。 rref(M):对矩阵M进行单位化变换,将M左边方阵范围部分变换成一个单位矩阵。(针对高斯消去法)如果M是个方阵,则得到一个单位矩阵,如果M是个增广矩阵,则变换后,最右边一列则是方程组的解。 indentity(n):生成一个单位矩阵,行列数为n。
diag(V):生成一个对角矩阵,对角元素按向量V元素的顺序排列。 eigenvals(M):求矩阵M的特征值。
13
Mathcad学习笔记 王定略 0930301058
eigenvec(M,z):求矩阵M对应于特征值Z的特征向量。 eigenvecs(M):求矩阵的特征向量。 55. 柱状图:
hist(intvls,data)返回一个列向量,数据data(矩阵)所有元素中,出现在intvls上的频率。(intvls是个整数,就是把data里所有的元素按从小到大的顺序,均分成intvls份;向量的值就是按从小到大的顺序,每一个等分区间里面元素的个数。)
histogram(intvls,data)返回具有两列的一个矩阵,第一列包含等长的 intvls 的中点,其范围为 min(data) ≤ value ≤ max(data)。第二列与 hist(intvls, data) 相同;结果矩阵具有 intvls 行。柱状图输出的第一列对于绘制柱状图的水平轴很有用。(返回一个两列的矩阵,data里面的元素按从小到大顺序均分成了intvls份,有intvls个区间,以区间的中点的值代表这个区间,组成了矩阵第一列;第二列的值就是hist(intvls,data)返回的值,按从小到大的顺序,每个区间里面data分布元素的个数。)
mode(A, B, C, ...) 返回元素 A、B、C、... 中出现频率最高的数。 (下面的比较是自己边用的过程中写的,可能很乱,不系统。)
i?0whilen?i56. 在写函数的时候,如何在一堆语句中插入一条语句。Egp(n):?,
m?m?(n?1)m我要给m赋个初值。插入在i←0和while语句之间。Mathcad中插入add line时,默认如果在一个语句中add line 就是嵌套。所以在i←0后按add line无法实现我们的目的。正确的做法是:先删掉“←”,则第一句变得没有意义,这个时候点add line可以实现我们的目的。插入一条语句。
57. 利用“插入-组件-数据导入向导(一般是excel文档)”或者“插入-数据-数据
导入向导”完成数据的输入;利用“插入-数据-文件输出(推荐输出为txt文本文档)”实现数据的输出。其实mathcad中输入输出的功能有很多,我比较支持利用上述的方法实现数据输入输出。另外,数据输出的时候,最好输出为txt文本,需要弄到excel里面去的话,自己在复制粘贴。 选中输入输出文件范围,单击右键,属性,可以编辑修改值域,阈值、所选范围、输
14
Mathcad学习笔记 王定略 0930301058
入输出路径等。
58. 前面讲过,矩阵计算中有个功能是向量化
,功能是矩阵向量化,让两个
矩阵之间的计算变成两个矩阵中元素的计算。其实它的功能远比这个强大,它能实现矩阵中每个元素的函数计算。EG:
?147????????????????????????????9?; (3?A2?2A?Ln(A)?4)??214.079A??894??????125.792?645??166.946?。它实267.19761.386??61.38690.609??61.386现了将矩阵的函数计算,矩阵中的每一个元素都将按照这个函数式计算。
15