null数学建模实 验*数学建模实 验王汝军
河西学院数学与统计学院wangrujun711@163.com实验一 高射炮的控制区域*实验一 高射炮的控制区域wangrujun711@163.com王汝军
河西学院数学与统计学院实验目的实验目的1.了解计算机图形技术与算法在实际领域的应用。
2.介绍了曲线簇的包络问
、分形曲线问题及其相应的绘图算法。
3.初步掌握使用MATLAB软件
绘图算法
*实验内容实验内容高射炮发射的炮弹在空中呼啸而过划出一条抛射线,抛射的弹道曲线的参数方程为
其中 为炮弹出膛时初始速度, 是高射炮的发射角度, 是重力加速度,其近似值为9.8 .*实验内容实验内容由不同的发射角发射的炮弹具有不同的弹道曲线,当炮弹出膛速度 确定时:
我们希望知道它的最远射程是多少?
当炮击目标确定后,如何调整发射角度使炮弹能准确地落在目标位置处爆炸?
而一门高射炮可以控制什么样的空间区域?*实验准备实验准备信息的图形表示是人们便于理解和接受的最自然的形式。计算机图形技术的发展使得图形的输入、图形的构造和表示、图形的管理和操作,以及图形的数据分析、数据与图形之间的相互转换,都非常方便。人们常常从外部文件或程序等信息源获取数据,以图形的形式输出处理结果。例如自动将科学计算的结果以图形形式输出,绘制地形地貌图、等高线图、勘探图、天气预报图等等。本章从计算机图形学的角度介绍了曲线簇的包络和分形曲线问题。*实验准备1实验准备11.曲线簇的包络曲线
在平面上,方程 常常表示一族曲线,当 取确定值时可以画出这族曲线中的一条曲线。
有时,曲线簇也可写成参数方程的形式,如引例问题中弹道曲线的参数方程,这里 是常说的参数,而 与 是可变常数参数。于是,当 固定 ,而 变化时形成一个单参数曲线簇;固定 ,而 变化时形成另一个单参数曲线簇。
*实验准备1实验准备1二元函数 的等高线簇 ,微分方程的积分曲线簇 是平面曲线簇的常见的例子。
如果一条曲线上的每一点都与曲线簇中某一曲线相切,则称这条曲线为该曲线簇的包络。曲线簇 对参数 求导后与它自己联立得到方程组
由这个方程组确定的曲线:
称为单参数曲线簇 的包络。
*实验准备1实验准备1当曲线簇的方程是参数方程时,该曲线簇的包络曲线由
消去参变量而得到。*实验准备2实验准备2客观事物有它自己的特征长度,要用恰当的尺度去测量。用尺来测量万里长城,嫌太短;用尺来测量大肠杆菌,又嫌太长。从而产生了特征长度。还有的事物没有特征尺度,就必须同时考虑从小到大的许许多多尺度(或者叫标度),这叫做“无标度性”的问题。
如物理学中的湍流,湍流是自然界中普遍现象,小至静室中缭绕的轻烟,巨至木星大气中的涡流,都是十分紊乱的流体运动。*实验准备2实验准备2流体宏观运动的能量,经过大、中、小、微等许许多度尺度上的漩涡,最后转化成分子尺度上的热运动,同时涉及大量不同尺度上的运动状态,就要借助“无标度性”解决问题,湍流中高漩涡区域,就需要用分形几何学。
在二十世纪七十年代,法国数学家芒德勃罗(B.B.Mandelbrot)在他的著作中探讨了“英国的海岸线有多长”这个问题。这依赖于测量时所使用的尺度。
*null*谢尔宾斯基三角形分形树null*实验准备2实验准备22.分形曲线
分形(fractal)应用于数学、物理、化学、生物学。把形态、功能和信息方面具有自相似性的对象称为分形。在分形曲线中Koch分形曲线是最简单的一种。
Koch分形从一条直线段开始,将线段中间的三分之一部分用一个等边三角形的另两条边代替,形成具有5个结点的新的图形,如图所示:
*实验准备2实验准备2这就是Koch分形曲线的生成元。在新的图形中,又将图中每一直线段中间的三分之一部分都用一个等边三角形的另两条边代替,再次形成新的图形,这时,图形中共有17个结点。
二维分形图形不同于一般的平面曲线,它们的维数通常介于1到2之间。例如Koch分形曲线,每次迭代时,每一条线被分成4份,线段的比例为1/3。*实验准备2实验准备2按照维数计算公式
其中 表示线段的份数, 表示取线段的比例,计算得Koch分形曲线的维数是 ln4/ln3≈1.2619,而且每迭代一次曲线长度增加4/3倍。
Koch分形曲线迭代算法继续进行下去可以形成复杂的分形曲线。在迭代过程中,图形中的点将越来越多,而曲线最终显示细节的多少将取决于所进行的迭代次数和显示系统的分辩率。
Koch分形曲线的绘图归结于算法的设计和计算机系统性能。*实验
1实验方法11.引例中炮弹的包络曲线
由引例知高射炮弹的弹道曲线的参数方程为
固定 , 为可变常数参数,则有
*实验方法1实验方法1当曲线簇的方程是参数方程时,该曲线簇的包络曲线由
消去参变量而得到
下按此法编程,绘制包络线
*程序1程序1%绘制包络线
function baoluo(v,n)
%v初始速度, n包络线数
m=16;g=9.8;%m为参数t的分割细度
alpha=(2:n)*pi/(2*n);
t1=2*v*sin(alpha).*cos(alpha)./(v*g.*cos(alpha));
for k=1:n-2
a=alpha(k);
v1=v*cos(a);v2=v*sin(a);
t0=2*v2/g;
t=(0:m)*t0/m;
x(k,:)=v1*t; y(k,:)=v2*t-g/2*t.^2;
end
plot(x',y','LineWidth',2);
*nullhold on
t=v/g:0.001:sqrt(2*v)/g;
x1=v.*sqrt(t.^2-v./(g.^2));
y1=v.^2./g-1/2.*g.*t.^2;
plot(x1,y1, 'LineWidth',2)
*实验方法2实验方法22. 有两个点变成五个点:
Q1与Q3分别位于P1与P2的三分点处
Q1=P1+(P2-P1)/3;Q3=P1+2/3(P2-P1);
Q2=Q1+(Q3-Q1)*A’;
P5=P2;P2=Q1; P3=Q2;P4=Q3;%=是赋值号
其中
是正交旋转矩阵
*null分形曲线节点数变化规律
假设第k此为 ,第k+1次为 ,则
*程序2程序2%绘制Koch曲线
function koch(x1,m)
p=[0,0;x1,0];
a=[cos(pi/3),-sin(pi/3);sin(pi/3),cos(pi/3)];
for k=1:m
n=max(size(p));
d=diff(p)/3;
q=p(1:n-1,:);
p(5:4:4*n-3,:)=p(2:n,:);
p(2:4:4*n-6,:)=q+d;
p(3:4:4*n-5,:)= p(2:4:4*n-6,:)+d*a.';
p(4:4:4*n-4,:)= q+2*d;
end
plot(p(:,1),p(:,2))
axis equal;
*思考与练习思考与练习1. 导弹问题中
A 最远射程如何获得?
B 由于高射炮初始速度确定的,目标确定后,如何获得发射角度?
2. 分形问题
A 分形树如何形成?
B 谢尔宾斯基三角形垫片如何生成?*