Matlab数学实验报告.docx

上传人:b****6 文档编号:6327103 上传时间:2023-01-05 格式:DOCX 页数:15 大小:89.07KB
下载 相关 举报
Matlab数学实验报告.docx_第1页
第1页 / 共15页
Matlab数学实验报告.docx_第2页
第2页 / 共15页
Matlab数学实验报告.docx_第3页
第3页 / 共15页
Matlab数学实验报告.docx_第4页
第4页 / 共15页
Matlab数学实验报告.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

Matlab数学实验报告.docx

《Matlab数学实验报告.docx》由会员分享,可在线阅读,更多相关《Matlab数学实验报告.docx(15页珍藏版)》请在冰豆网上搜索。

Matlab数学实验报告.docx

Matlab数学实验报告

 

数学实验报告

 

班级:

学号:

 

第一次实验任务

过程:

a=1+3i;b=2-i;

结果:

a+b=3.0000+2.0000i

a-b=-1.0000+4.0000i

a*b=5.0000+5.0000i

a/b=-0.2000+1.4000i

过程:

x=-4.5*pi/180;y=7.6*pi/180;

结果:

sin(abs(x)+y)/sqrt(cos(abs(x+y)))=0.2098

心得:

对于matlab中的角度计算应转为弧度。

(1)过程:

x=0:

0.01:

2*pi;y1=sin(x);y2=cos(x);y3=exp(x);y4=log(x);

plot(x,y1,x,y2,x,y3,x,y4)plot(x,y1,x,y2,x,y3,x,y4)

结果:

(2)过程:

>>subplot(2,2,1)

>>plot(x,y1)

>>subplot(2,2,2)

>>plot(x,y2)

>>subplot(2,2,3)

>>plot(x,y3)

>>subplot(2.2.4)

>>subplot(2,2,4)

>>plot(x,y4)

结果:

心得:

在matlab中,用subplot能够实现在同一页面输出多个坐标系的图像,应注意将它与holdon进行区别,后者为在同一坐标系中划出多条曲线。

5、随机生成一个3x3矩阵A及3x2矩阵B,计算

(1)AB,

(2)对B中每个元素平方后得到的矩阵C,(3)sinB,(4)A的行列式,(5)判断A是否可逆,若可逆,计算A的逆矩阵,(6)解矩阵方程AX=B,(7)矩阵A中第二行元素加1,其余元素不变,得到矩阵D,计算D。

过程:

A=fix(rand(3,3).*10);

B=fix(rand(3,3).*10);

结果:

(1)A*B=

2228

4964

76100

(2)C=B.^2

C=

14

916

2536

(3)sin(B)

ans=

0.84150.9093

0.1411-0.7568

-0.9589-0.2794

(4)a=det(A)

a=0

(5)由det(A)存在,且det(A)=0,故A不可逆

(6)X无解

(7)l=A(2,1),l1=l+1,m=A(2,2),m1=m+1,n=A(2,3),n1=n+1

D=A,D(2,1)=l1,D(2,2)=m1,D(2,3)=n1

D=

123

567

789

心得:

熟练掌握matlab中对数组的操作方法尤为重要,其中,除了要牢记一些十分方便的函数外,应注意对数组的每一个元素进行操作时,应在运算符前加“.”号,如.^.*等。

6、设y=(x2+excosx+[x])/x,分别计算x=1,3,5,7.4时y的值。

其中[x]表示x的取整函数。

过程:

x=1,y=(x^2+exp(x)*cos(x)+fix(x))/x

结果:

x=1

y=3.4687

x=3

y=-2.6282

x=5

y=14.4198

x=7.4

y=105.2995

7、已知某地区1-12月份的平均气温为5,8,13,20,25,28,31,33,27,24,19,10,请绘图表示。

过程:

T=[5,8,13,20,25,28,31,33,27,24,19,10];

bar(T)

结果:

 

第2次实验任务

1.某大学本科生就业情况如下:

458人考入研究生,60人签到外企或合资企业,184人签到国营大企业,87人签到私人企业,13人自主创业,画出饼图表示之;

过程:

x=[458601848713];

pie3(x)

答案:

2.求极限

过程:

symsxa;

limit('((x-a)/(x+a))^x',x,inf)

答案:

ans=exp(-2*a)

3.求极限

过程:

>>symsx;

>>limit('tan(x)^(1/log10(x))',x,0,'right')

答案:

ans=exp

(1)

 

4.设

过程:

symsxqt;

q=limit('(1+1/x)^(2*x)',x,inf);

df=diff('q^t',t)

答案:

df=q^t*log(q)

 

5.展开多项式

过程:

symsab;

F=(a+b)^3+(b-1)^2+a+2*b;

expand(F)

答案:

ans=a^3+3*a^2*b+3*a*b^2+b^3+b^2+1+a

6.分解因式

过程:

symsx;

F=x^5+3*x^4+2*x^2+x-1;

factor(F)

答案:

ans=x^5+3*x^4+2*x^2+x-1

7.求方程

的根

过程:

symsx;

C=solve(‘x^3-2*x+1=0’)

答案C=

1

1/2*5^(1/2)-1/2

-1/2-1/2*5^(1/2)

8.

过程:

>>symsx;

>>f=sqrt(x+sqrt(x+sqrt(x)));

>>df=diff(f)

答案:

df=1/2/(x+(x+x^(1/2))^(1/2))^(1/2)*(1+1/2/(x+x^(1/2))^(1/2)*(1+1/2/x^(1/2)))

9.求不定积分

过程:

symsx;

F=1/(sqrt(2*x+3)+sqrt(2*x-1));

Nf=int(F,x,)

答案:

Nf=-1/12*(2*x-1)^(3/2)+1/12*(2*x+3)^(3/2)

 

过程:

symsx;

F=1/(1+cos(x));

Nf=int(F)

答案:

Nf=tan(1/2*x)

10求定积分

过程:

symsx;

F=1/(x*sqrt(log(x)*(1-log(x)));

Nf=int(F,x,exp(1/2),exp(3/4))

答案:

ans=

asin(2*log(2511)-96*log

(2)-1)-asin(2*log(90727)-100*log

(2)-1)

11.解方程组

过程:

symsxy;

eq1=sym(‘2*x+y=8’);

eq2=sym(‘x-3*y=1’);

[x,y]=solve(eq1,eq2)

答案:

x=25/7

y=6/7

12.求和

过程:

symsk;

symsum(1/k^2,k,1,20)

答案:

ans=/

13.

过程:

symsx;

taylor(cos(2*x),x,15,pi/6)

答案:

ans=1/2-3^(1/2)*(x-1/6*pi)-(x-1/6*pi)^2+2/3*3^(1/2)*(x-1/6*pi)^3+1/3*(x-1/6*pi)^4-2/15*3^(1/2)*(x-1/6*pi)^5-2/45*(x-1/6*pi)^6+4/315*3^(1/2)*(x-1/6*pi)^7+1/315*(x-1/6*pi)^8-2/2835*3^(1/2)*(x-1/6*pi)^9-2/14175*(x-1/6*pi)^10+4/155925*3^(1/2)*(x-1/6*pi)^11+2/467775*(x-1/6*pi)^12-4/6081075*3^(1/2)*(x-1/6*pi)^13-4/42567525*(x-1/6*pi)^14

 

14.编写猜数游戏程序:

首先由计算机随机产生一个[1,100]之间的一个整数,然后由用户猜测所产生的这个数。

根据用户猜测的情况给出不同的提示,如果猜测的数大于产生的数,则显示“High”,小于则显示“Low”,等于则显示“Youwon!

”,同时退出游戏。

用户最多有7次机会。

过程:

a=fix(rand

(1)*100);

fori=1:

1:

7

x=input('pleaseinputthenumberyouguess');

ifx>a

fprintf('high');

continue;

end

ifx

fprintf('low');

continue;

end

ifx==a

fprintf('youwon');

break;

end

end

结果:

pleaseinputthenumberyouguess50

lowpleaseinputthenumberyouguess75

highpleaseinputthenumberyouguess63

highpleaseinputthenumberyouguess56

lowpleaseinputthenumberyouguess60

youwon>>

 

心得体会:

(1)灵活运用符号方程和各类求解函数对于我们高数的学习和数学问题的验证将会产生很大帮助。

(2)应熟练掌握生成某个围随机整数等常用技巧。

(3)应正确区分循环中的continue与break的作用,即continue是跳过当次循环,而break是跳出整个循环。

 

第三次Matlab上机实验报告

第一题:

每门课程考试阅卷完毕,任课教师都要对各班的考试成绩进行统计,统计容包括:

全班人数,总得分,平均得分,不及格的人数及90分(包括90分)以上的人数.请编制程序解决这一问题,并自给一组数据验证程序的正确性.要求:

使用者在提示下通过键盘输入学生成绩,计算机自动处理后,显示需要的结果.

问题分析及程序:

1分析:

运用循环来对数组中的每个数的值进行判定,从而达到统计各项人数的目的。

2程序:

a=input('请输入数组学生成绩 a[n]=');%输入学生成绩到数组中

n=length(a);

s=0;

p=0;

q=0;

for i=1:

n%在循环中进行统计

    s=a(i)+s;

    if a(i)>=90

        p=p+1;

    elseif a(i)<60

        q=q+1;

    end

end

        r=s/n;

        fprintf('全班人数%.0f 总得分%.0f 平均得分%.2f 不及格的人数%.0f 90分(包括90分)以上的人数%.0f\n',n,s,r,q,p);%输出

运行结果:

请输入数组学生成绩a[n]=[8798679890706066]

全班人数8总得分636平均得分79.50不及格的人数090分(包括90分)以上的人数3

结果分析:

灵活运用循环语句,选择语句等基本语句,能很方便地在程序中实现很多基本功能。

第二题:

1习题1:

编程计算小于1000的水仙花数。

问题分析及程序:

分析:

水仙花数指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。

所以在外层设置1到1000的循环,层对每一个数是否满足水仙花数的条件进行判断并输出。

程序:

i=10;

g=0;

s=0;

b=0;

fprintf(‘1到1000的水仙花数有:

\n’)

whilei<1000

g=mod(i,10);

s=(mod(i,100)-g)/10;

b=(i-10*s-g)/100;

ifi==g^3+b^3+s^3

fprintf('%.0f\n',i);

end

i=i+1;

end

运行结果:

1到1000的水仙花数有:

153

370

371

407

结果分析:

(1)在1到1000只有以上四个水仙花数;

(2)其实,改程序的代码还可以进行进一步简化,用三个for循环语句的嵌套(每一个for循环代表某一位上数字的变化)来实现对一个三位数的检验。

2习题3:

求方程2x+y+4z=100的所有非负整数解。

问题分析及程序:

分析:

对于该三元一次方程,无法用现成的数学函数直接求解,应用一个三层循环对x,y,z的取值进行判断。

程序:

fprintf('方程的解有:

\n');

i=1;

forx=1:

50

fory=1:

100

forz=1:

25

if2*x+y+4*z==100

i=i+1;

end

end

end

end

fprintf(‘%.0f个’,i);

结果:

方程的解有:

577个

分析:

总共有577组解(因数量过多,故只在此显示解的数量)。

第三题:

编写猜数游戏程序:

首先由计算机随机产生一个[1,100]之间的一个整数,然后由用户猜测所产生的这个数。

根据用户猜测的情况给出不同的提示,如果猜测的数大于产生的数,则显示“High”,小于则显示“Low”,等于则显示“Youwon!

”,同时退出游戏。

用户最多有7次机会。

问题分析及程序:

分析:

产生随机数,进行七次循环,每次对输入的值进行判定,若相同则提前跳出循环。

程序:

a=fix(rand

(1)*100);

fori=1:

1:

7

x=input('pleaseinputthenumberyouguess');

Ifx>a

fprintf('high');

continue;

end

Ifx

fprintf('low');

continue;

end

ifx==a

fprintf('youwon');

break;

end

end

结果:

pleaseinputthenumberyouguess50

lowpleaseinputthenumberyouguess75

highpleaseinputthenumberyouguess63

highpleaseinputthenumberyouguess56

lowpleaseinputthenumberyouguess60

youwon

结果分析:

用二分法能有较高概率猜中结果。

第四题:

Fibonacci数组元素满足Fibonacci规则:

(1)用循环语句形成前20个分量的数组;

(2)求该数组中第一个大于10000的数.

问题分析及程序:

分析:

分别用for循环和while循环能解决以上两个问题。

程序:

(1)

a

(1)=1;

a

(2)=1

fori=3:

20

a(i)=a(i-1)+a(i-2);

end

结果:

112358

1321345589144

23337761098715972584

41816765

(2)

a

(1)=1;

a

(2)=1;

i=3;

whilea(i-1)<10000

a(i)=a(i-1)+a(i-2);

ifa(i)>10000

fprintf(‘第一个大于10000的数是:

%d’,a(i))

end

i=i+1;

end

结果:

第一个大于10000的数是:

10946

第五题:

5.

(1)编写一个function函数,调用该函数,可以求一组数的最大值及最小值.

(2)通过键盘输入一组数,利用

(1)编写的function函数,得出最大最小数.

问题分析:

在函数中利用循环求得最大最小值并返回这两个值。

程序:

(1)

function[y1y2]=daxiao(x)

n=length(x);

y1=x

(1);

y2=x

(1);

fori=2:

n

ifx(i)>x(i-1)

y1=x(i);

elsey2=x(i);

end

end

(2)

x=input('请输入这组数的值x[n]=');

[y1y2]=daxiao(x);

fprintf('最大值是:

%.0f,最小值是:

%.0f',y1,y2)

结果:

请输入这组数的值x[n]=[3445566789991]

最大值是:

99,最小值是:

1

结果分析:

函数中的应给存放最值的变量存初值,否则不会得到预期的结果。

心得体会:

(1)matlab中的语句与C语言中的语句结构具有很高的相似性,熟练掌握循环结构,选择结构等将会对我们matlab程序的编写产生很大帮助。

(2)函数的返回值可以是也可以是多个值。

当函数返回的是多个值时,应注意用多个变量进行接收,否则得不到预期的结果。

(3)应熟练掌握MATLAB程序中的几个输入输出函数,以及它们的用法,比如fprintf(不要误写成print,并且在使用时,应在单引号指明变量输出的格式与类型)与input。

总的感悟

通过本学期的Matlab课程的学习,我对Matlab有了全新的认识,在高等数学上某些问题的解决与验证也有了新的工具,程序的编写能力也有所提高。

相信在未来我能有效得利用好Matlab这款强大的工具,为我的学习提供帮助。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 临床医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1