学习MATLAB的心得体会
随着期末的临近,本学期的MATLAB的学习也就此落下了帷幕。回顾我之前学习MATLAB的历程,我有以下几点感悟:
1. 要有耐心。在编程序的时候少不了的要出现许多的错误,有时候调试很长时间程序仍旧无法得出正确结果,但是在这时要耐着性子一点一点的检查,总能找到错误所在。
2. 要细致。有时因为少打一个分号,逗号等就可能引起程序错误。另外尤其是if、for、while等语句一定要在结尾加end。
3. 善于利用MATLAB中的函数。比如有一道题是验证哥德巴赫猜想,如果直接调用prime(n)函数(该函数表示n以内的质数)会使程序非常简便,而若挨个对数进行判断必然会使程序变得复杂,影响效率。MATLAB有丰富的函数库,善于利用可以极大的提高编程效率。
4. MATLAB是一种非常简便的语言,它与我本学期学的C语言不同,C语言所耗费的时间和精力是比较大的,比如定义变量就分为int,char,float等类型,而MATLAB则不然,它无需定义变量的类型。比如求y=x+1,当x=1,2,3,4,5时y的值。如果用C语言则需要定义变量,还要用for循环,调用输出函数等,而MATLAB只需输入x=1:5;y=x+1然后回车即可。
5. 注重实践,多动手。编程序是一种操作能力,只有多上机练习,才能培养自己的动手能力。同时,在上机练习的过程中,
对程序的理解也得到了加深。
总而言之,MATLAB是是一款非常实用的软件,它不仅对我们现在的学习有益处,而且在今后数学建模中也将发挥巨大的作用,所以我深感学好MATLAB的重要性。虽然本学期的学习告一段落,但我知道,自己对MATLAB的学习还只是皮毛,今后我将继续对MATLAB的学习,并将它应用到实际中来解决实际问题。
姓名:王帅杰
班级:自动化55班
学号:2150504126
学院:电信学院
第二篇:matlab程序设计及心得体会
1.编写程序,建立向量n=〔1,2,3,4,5〕,并利用n产生下列向量:
(1)2 , 4 , 6 , 8 , 10 (2)1/2 , 1 , 3/2 , 2 , 5/2
(3)1, 1/2 , 1/3 , 1/4 , 1/5 (4)1 , 1/4 , 1/9, 1/16, 1/25。
注意:向量n=1:5,/是传统意义上的矩阵的除法,,而./是两个矩阵的对应元素相除,同理相乘。此处是对应元素相除,所以一定要记住应该用点除,而非除法。
2. 从键盘输入一个三位数,将它反向输出。 例如输入639,输出为936。
注意:输出函数:disp(),取整用fix(),取余函数mod(x,y)与rem(x,y)一样。
3. 输入一个百分制成绩,要求输出成绩等级A,B,C,D,E。其中90-100分为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E。
要求:(1)分别用if语句和switch语句实现。
(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。
注意:switch语句中的case最好用0~9的数字表示而不是表达式!不可用break!后不可用表达式!!!为了表示另一种情况,记住用if与其搭配~不要太死板,学会灵活。
4. 建立5*6的矩阵,要求输出矩阵第n行元素。当n的值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并給出出错信息。
注意:随机产生一个0~1矩阵可以用rand函数,整数矩阵便用fix(100*rand(m,n))函数。产生m*n 阶[a,b]均匀分布U(a,b)的随机数矩阵:
unifrnd (a,b,m, n)
5. 产生20个两位随机整数,输出其中小于平均值的偶数。
注意:fix(100*rand(m,n))与round(100*rand(m,n))几乎一样的,随机产生m*n阶矩阵,学会变通,随机产生两位随机整数。fix是指向0靠拢取整。fix(3.7)=3,fix(-3.7)=-3。floor指向下取整,ceil指向上取整。round指四舍五入取整!!round最常用~记住a=o指赋值,而a==0指判断,与c语言一样~当矩阵只有一行时,可用a(i)表示每一个数。用k(i)表示来输出每一个数!表示矩阵中的每一列时用a(:,i),表每一行时用a(i,:)。
6. 输入20个数,求其中的最大数和最小数。要求分别用循环结构和调用MATLAB的max函数、min函数来实现。注意:熟记其中的函数将对编程的速度有很大的提高!孩子,加油!
7. ,当a取-30.,-2.9,……,2.9,3.0时,求各点的函数值。要求分别用顺序结构和循环结构实现。
注意:用size返回向量元素的个数,如果是矩阵,size(a,2)指返回矩阵的竖的个数,即多少列。其中一维是指行,二维指列。记住表示一个向量时,步长放中间。!
8. 当n分别取100、1000、10000时,求下列各式的值:(要求分别用循环结构和向量运算(使用sum函数)来实现)
(1)
(2)
(3)
(4)注意:使用while循环时,注意对n初始化,与c语言较象。普通指数时直接用^,自然指数时,若x已知,用y=exp(x)。
9. 若两个连续自然数的乘积减1是素数,则称这两个连续自然数是亲密数对,该素数是亲密素数。例如:2*3-1=5,由于5是素数,所以2和3是亲密数对,5是亲密素数。求〔2,50〕区间内,
(1)亲密数对的对数;
(2)与上述亲密数对对应的所有亲密素数之和。
注意:x=primes(n)输出不超过n整数的素数,a=length(x)表示输出素数的个数。用b=isprime(n)来判断n是否为素数,若为素数则b=1,反之为0。学会变通,求和用if循环就好。
10. 根据,求:
(1)y<3时的最大n值;
(2)与(1)的n值对应的y值。
注意:不能被题目吓跑~~·很简单的,耶耶!
11. 已知
(1)当时,y的值是多少?
(2)当f(n)=1*2+2*3+3*4+……+n*(n+1)时,y的值是多少?
12. 编写一个函数文件,用于求两个矩阵的乘积和点乘,然后在命令文件中调用该函数。
13. 定义一个函数文件,求給定复数的指数、对数、正弦、余弦,并在命令文件中调用该函数文件。
14. 先用函数的递归调用定义一个函数文件求,然后调用该函数文件求zhuyi:yaoxunzaoyigehanshubiannnengjiejue defangfa~~
15.写出下列程序的输出结果。
(1)
s=0;
a=[12 13 14;15 16 17;18 19 20;21 22 23];
for k=a
for j=1:4
if rem(k(j),2)~=0
s=s+k(j);
end
end
end
s
(2)命令文件
global x
x=1:2:5;y=2:2:6;
sub(y);
x
y
函数文件sub.m
function fun=sub(z)
global x
z=3*x;
x=x+z;
16已知:,编程求的近似值。
注意:在编程过程中,一个小小的乘号将导致很难查出错误,很会影响心情,所以不能忽略小问题,必须仔细小心!
17.输入下面的矩阵,求该矩阵的对角线元素之和,并找出最大和最小的元素的值以及其所在的行、列号。将最大值替换成inf,最小值替换成-inf。
注意:①找出矩阵中具体某个元素的具体位置的方法:
ind=find(a==max)
siz=[4,4]
[I,J] = ind2sub(siz,ind)便可以找到最大元素的位置!!
[I1,I2,I3,...,In] = ind2sub(siz,ind)
②对角线元素用diag函数~~
③要找出一个很大矩阵的最大最小元素用两个for循环。!
加油~写出这道题好兴奋啊,这种感觉真好!!
18. 求解猴子吃桃问题。猴子在第一天摘下若干个桃子,当即吃了一半,又感觉不过瘾,于是就多吃了一个。以后每天如此,到第10天再想吃时,却发现就只剩一个桃子。请编程计算第一天猴子摘的桃子个数。
注意:不要被问题吓到,很简单的一个问题罢了~当顺着不行时,试着倒着来解答编程。
19. 求n阶勒让德多项式的值,其递归公式为:
注意;它要的仅仅只是一个定义函数~并没有需要一个确切的值。
20. 利用恒等式计算圆周率的近似值。
注意:sqrtm(a):矩阵a开平方根;sqrt(a):矩阵a对应的元素开平方根。
21. 输入一个正整数,如果它是偶数就除以2,是奇数就乘以3加上1,如此一直变化,直到最后变成1。
注意:判断一个数是否为整数可以用判断语句a==round(a)!!在matlab中,用~=表示不等于,与c语言不同。
22. (1)用递归调用求Fibonacci数列定义如下: f1=f2=1 , f(n+1)=f(n)+f(n-1) 。
(2)求Fibonacci数列大于4000的最小项。
注意:这道题目很简单,却花了很长的时间~·主要是题目意思没弄清便动笔,要学会分清题意,冷静分析。另外还要注意while的条件,1便执行,0则跳出~。
23. 列出所有的水仙花数。水仙花数是一个三位数,其各位数字的立方和等于该书本身。例如:153=13+53+33
注意:当输出的不仅仅是一个数时,需要定义一个数组a(i),i=i+1,输出为a。if语句中,判断条件中为==,而不是赋值语句=!!!别总犯相同的错误~~·
24. 试编一个m程序,将一维数组x中的N个数按颠倒的次序重新存储。如N=5,原来x为:而经过颠倒处理后x中数据的次序应该为:x=[ 9 7 5 3 1 ]
25. 已知某班的5名学生的三门课成绩列表如下:
学生序号1 2 3 4 5
高等数学78 89 64 73 68
外语83 77 80 78 70
MATLAB语言82 91 78 82 68
试写出有关命令,先分别找出三门课的最高分及其学生序号;然后找出三门课总分的最高分及其学生序号。针对上述的成绩表,求出其三门课总分存入数组ZF,再利用SORT命令对之按降序排序,同时把相应的学生序号存入数组XH。