数学实验一.docx
《数学实验一.docx》由会员分享,可在线阅读,更多相关《数学实验一.docx(16页珍藏版)》请在冰豆网上搜索。
数学实验一
重庆大学
学生实验报告
实验课程名称
开课实验室
学院年级专业班
学生姓名学号
开课时间至学年第学期
总成绩
教师签名
数学与统计学院制
开课学院、实验室:
实验时间:
年月日
课程
名称
实验项目
名称
实验项目类型
验证
演示
综合
设计
其他
指导
教师
成绩
实验目的
[1]熟悉MATLAB软件的用户环境;
[2]了解MATLAB软件的一般目的命令;
[3]掌握MATLAB数组操作与运算函数;
[4]掌握MATLAB软件的基本绘图命令;
[5]掌握MATLAB语言的几种循环、条件和开关选择结构。
[6]学习由实际问题去建立数学模型的过程;
[7]训练综合应用物理学、解析几何、高等数学和微分方程的知识分析和解决实际问题;
[8]熟练应用matlab软件的作图,方程求解,微分方程求解等功能来求解其中涉及的数学问题;
[9]提高论文写作、文字处理、排版等方面的能力
基础实验
一、实验内容
1.在同一个坐标下作出,
这四条曲线的图形,观察、发现、联想、猜想,给出验证及理论证明。
2.用subplot分别在不同的坐标系下作出四条曲线:
1)概率曲线:
2)四叶玫瑰线:
=sin2;(polar函数)
3)叶形线:
4)曳物线:
3.作出曲面1)
2)环面:
的3维图形
4.建立一个命令M-文件:
求所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。
例如,153是一个水仙花数,因为
。
5.利用下面的几个关系式给出几个数学常量的近似值:
欧拉常数=
圆周率满足:
第一个要求精确到小数点后20位,第二个要求精确到小数点后4位,第三个精确到小数点后6位.并讨论精确度和迭代次数有什么样的关系.
6.求下列方程的根
1)
在[-1,1]上的近似解。
2)判定方程
有几个实根?
3)找出函数
的所有零点。
7.求解线性方程组:
8.求下列方程组的解
使用命令solve()或fsolve()。
x0=[-5,-5]
二、实验过程(一般应包括实验原理或问题分析,算法设计、程序、计算、图表等,实验结果及分析)
第一题名字为ex1的M文件:
x=-4:
0.1:
4;
y=1+x;
plot(x,y)
holdon
y=1+x+(x.^2)/2;
plot(x,y)
holdon
y=1+x+x.^2/2+x.^3/6;
plot(x,y)
holdon
y=2.71828.^x;
plot(x,y)
运行结果截图:
第二题名字为ex2的M文件:
x=-2:
0.1:
2;
y=2.71828.^-(x.^2);
subplot(2,2,1),plot(x,y);title('概率曲线')
theta=0:
0.01*pi:
2*pi;
rho=sin(2.*theta);
subplot(2,2,2),polar(theta,rho);title('四叶玫瑰线')
t=-5:
0.1:
5;
x=(3.*t)./(1+t.^3);
y=(3.*t.^2)./(1+t.^3);
subplot(2,2,3),plot(x,y);title('叶形线')
y=-5:
0.01:
5;
x1=log((1+(1-y.^2).^0.5)./y)-(1-y.^2).^0.5;
x2=log((1-(1-y.^2).^0.5)./y)+(1-y.^2).^0.5;
subplot(2,2,4),plot(y,x1,y,x2);title('曳物线')
运行结果截图:
第三题第一小题名字为ex3的M文件:
x=-2:
0.01:
2;
y=x;
[X,Y]=meshgrid(x,y);
Z=sin(pi*(X.^2+4.*Y.^2).^0.5);
mesh(X,Y,Z);
运行结果截图:
第三题第二小题名字为ex4的M文件:
u=0:
0.01*pi:
2*pi;
v=u;
[U,V]=meshgrid(u,v);
X=(1+cos(U)).*cos(V);
Y=(1+cos(U)).*sin(V);
Z=sin(U);
mesh(X,Y,Z);
运行结果截图:
第四题名字为ex5的M文件:
forx=100:
999;
a=mod(x,10);
b=mod(fix(x/10),10);
c=fix(x/100);
ifx==a*a*a+b*b*b+c*c*c
y=x
end
end
运行结果截图:
第五题中,迭代次数越多,所得结果越接近其精确值。
第五题第一小题名字为ex6的M文件:
i=0;e=1;
while1/jiecheng(i+1)>10^-20
i=i+1;
e=e+1/jiecheng(i);
end
sprintf('%1.20f',e)
名字为jiecheng的M文件:
functiony=jiecheng(x)
y=1;
fori=x:
-1:
1;
y=y*i;
end
end
运行结果截图:
第五题第二小题名字为ex7的M文件:
i=3;y=1+1/2;
while1/i>=10^-6
y=y+1/i;
i=i+1;
end
y=y-log(i-1)
运行结果截图:
第五题第三小题名字为ex8的M文件:
y=1;i=2;
while1/i^2>=10^-12
y=y+1/i^2;
i=i+1;
end
sprintf('%1.6f',sqrt(6*y))
运行结果截图:
采用放大法在区间[-1,1]上求近似根。
第六题第一小题名字为ex9的M文件:
x=-1:
0.01:
1;
y=x.*sin(x)+cos(x)-sin(x)-2.*x;
plot(x,y)
gridon
放大后,可以观察到,在0.356与0.3565之间有一根。
第六题第二小题:
该方程左边单调递增,值域为负无穷大到正无穷大,所以有且仅有一个实根。
名字为ex10的M文件:
x=-3:
0.01:
3;
y=x.^7+x.^5+1;
plot(x,y)
gridon
运行结果截图:
缩小区间至[-1,-0.5];
截图如下;
第六题第三小题名字为ex11的M文件:
p=[1,-6,-2,12];
roots(p)
运行结果截图如下:
第七题名字为ex12的M文件:
A=[721-2;9153-2;-2-2115;13213];
B=[4;7;-1;0];
x=A\B
运行结果截图:
第八题第一小题名字为ex13的M文件:
y=fsolve('qwe',[-5,-5])
名字为qwe的M文件:
functionf=qwe(x)
f
(1)=2*x
(1)-x
(2)-2.71828^(-x
(1));
f
(2)=-x
(1)+2*x
(2)-2.71828^-(x
(2));
运行结果截图:
第八题第二小题名字为ex14_1的M文件:
y=fsolve('asd',[-100;-100;-100])
名字为asd的M文件:
functionF=asd(x);
F
(1)=x
(1)^2-5*x
(2)^2+7*x(3)^2+12;
F
(2)=3*x
(1)*x
(2)+x
(1)*x(3)-11*x
(1);
F(3)=2*x
(2)*x(3)+40*x
(1);
运行结果截图;
应用实验(或综合实验)
一、实验内容
1.炮弹发射视为斜抛运动,已知初始速度为200m/s,问要击中水平距离360m、垂直距离160m的目标,当忽略空气阻力时,发射角应多大?
进一步思考:
如果要考虑水平方向的阻力,且设阻力与(水平方向)速度成正比,系数为0.1(1/s),结果又如何?
炮弹质量假设为10千克?
2.讨论:
有这样的电视节目,对一件商品要求观众猜价格,主持人对观众所猜的数目的回答是高或者低(相对于实际价格).现在的问题时,对于价格在1000元之内的商品,寻找一个最好的方法,保证在最少的次数猜中商品价格.试给出竞猜5次得到正确答案的概率位多大.(设商品最小价格单位为元)提示:
利用二分法的思想,可以比较快的得到竞猜次数的最大值.一个更有趣的方法是二叉树,其深度就是对应的解.对于平均次数,可以采用模拟的方法,比如产生10000次随机数,看每次猜中的次数,平均就得到平均次数.
二、问题分析
第一题:
第一小问里面,炮弹的速度可以看成是水平方向的匀速直线运动,竖直方向加速度为g的匀减速直线运动。
第二问中,竖直方向不变,水平方向增加阻力,即水平方向为加速度逐渐减小的减速运动。
可以运用加速度是速度队时间的导数,速度是位移对时间的导数来解决。
第二题:
观众要用最快的方法猜得最终结果,即采用C语言中的二分查找法。
每次折半查找,直到找到最终的商品价格。
三、数学模型的建立与求解(一般应包括模型、求解步骤或思路,程序放在后面的附录中)
第一题:
第一小问:
水平方向初速度×运动时间=水平位移360m。
竖直方向初速度×运动时间-0.5gt^2=竖直位移160m。
水平初速度为vcosθ,竖直方向初速度为vsinθ。
第二小问:
竖直方向方程不变,水平方向由a=-0.01v,将a用dv/dt替换,解出v与时间t的关系,对时间t积分得到水平位移x与时间的关系。
由于水平位移题中规定为160m,得出水平方向方程。
联立即可求得发射角θ与时间t。
第二题:
提示给出运用二叉树模型,二叉树深度即为竞猜者的机会数。
这样分析,二叉树的前面5层的每一个节点,竞猜者均能在主持人给出的提示的帮助下猜中。
也就是1000个商品价格里会有31个价格消费者可以猜中,概率P=0.031。
编写程序模拟该过程时,每次折半时结果都要取整,否则会因为找不到该数而进入死循环。
每次猜中时,如果次数不超过5,计数器t加一,整个循环结束后,t/总实验次数即为概率。
模拟一次猜测过程时,先产生一个随机数key作为该次的中奖数字。
采用二分查找法查找,如果第一次middle的值小于key,则下一次在middle与high之间查找key。
如果middle的值大于key,下一次在low与middle之间查找key,如果恰等于key,则退出循环,并比较查找次数,如果小于等于5,计数器t加一。
四、实验结果及分析
第一题第一问运行结果截图如下:
第一题第二问运行结果截图如下:
第二题运行结果截图如下:
由第一题结果可以看见,增加空气阻力后,角度减小以增加水平方向的速度分量,且运动时间相应延长了。
(注:
运算结果为弧度制)
第二题的结果可以看见,即使增加样本数目,P依旧在0.031附近摆动。
且同样的样本数目概率也不一样,体现了该模拟的随机性。
五、附录(程序等)
1.以下是第一题第一问的名字为ex15_4的M文件:
y=fsolve('pd1',[0;0])
以下是名字为pd1的M文件:
functionF=pd1(x)
F
(1)=200*cos(x
(1))*x
(2)-360;
F
(2)=200*sin(x
(1))*x
(2)-9.8/2*x
(2)*x
(2)-160;
以下是第一题第二问名字为ex15_3的M文件:
y=fsolve('pd',[0;0])
以下是名字为pd的M文件:
functionF=pd(x)
F
(1)=200*sin(x
(1))*x
(2)-9.8/2*x
(2)*x
(2)-160;
F
(2)=100*200*cos(x
(1))-100*200*cos(x
(1))*exp(-0.01*x
(2))-360;
2.以下是第二题的名字为gailv的M文件:
N=input('请输入样本数目:
');
t=0;
fori=1:
N
low=0;high=1000;
key=rand(1,1)*1000;count=1;
key=ceil(key);
while1
middle=ceil((low+high)/2);
ifmiddle>key
high=middle;count=count+1;continue;
end
ifmiddlelow=middle;count=count+1;continue;
end
ifmiddle==key
break;
end
end
ifcount<=5
t=t+1;
end
end
P=t/N
总结与体会
初次运用matlab软件,还是很不习惯。
虽然有些算法的分析过程和上学期C语言有很多相似之处,但是实现起来却大不一样,很多语法规则都变了,也有很多函数的名字以及用法都不时那么清楚,造成了编写程序上的障碍。
但是,通过这次应用,真的体会到了matlab的强大,很多非常复杂的方程组,以及很多不能直观画出来的图像,可以通过计算机很轻松的解决,为分析很多复杂问题提供了便利。
教师签名
年月日