数学建模案例分析--线性代数建模案例(20例)65959 联系客服

发布时间 : 星期三 文章数学建模案例分析--线性代数建模案例(20例)65959更新完毕开始阅读1b048631b968a98271fe910ef12d2af90342a865

案例十一. 平面图形的几何变换

随着计算机科学技术的发展, 计算机图形学的应用领域越来越广, 如仿真设计、效果图制作、动画片制作、电子游戏开发等.

图26 计算机图形学的广泛应用

图形的几何变换, 包括图形的平移、旋转、放缩等, 是计算机图形学中经常遇到的问题. 这里暂时只讨论平面图形的几何变换.

【模型准备】平面图形的旋转和放缩都很容易用矩阵乘法实现, 但是图形的平移并不是线性运算, 不能直接用矩阵乘法表示. 现在要求用一种方法使平移、旋转、放缩能统一用矩阵乘法来实现. 【模型假设】设平移变换为

(x, y) (x+a, y+b)

旋转变换(绕原点逆时针旋转?角度)为

(x, y) (xcos? ysin?, xsin? + ycos?)

放缩变换(沿x轴方向放大s倍, 沿y轴方向放大t倍)为

(x, y) (sx, ty)

【模型求解】R2中的每个点(x, y)可以对应于R3中的(x, y, 1). 它在xOy平面上方1单位的平面上. 我们称(x, y, 1)是(x, y)的齐次坐标. 在齐次坐标下, 平移变换

(x, y) (x+a, y+b)

可以用齐次坐标写成

(x, y, 1) (x+a, y+b, 1). ?10a??x??x?a?于是可以用矩阵乘积?01b??y?=?y?b?实现.

?001??1??1???????旋转变换

(x, y) (xcos? ysin?, xsin? + ycos?)

可以用齐次坐标写成

(x, y, 1) (xcos? ysin?, xsin? + ycos?, 1).

?cos??sin?0??x??xcos??ysin??于是可以用矩阵乘积?sin?cos?0??y?=?xsin??ycos??实现.

?0????01?1???1???放缩变换

(x, y) (sx, ty)

可以用齐次坐标写成

(x, y, 1) (sx, ty, 1).

?s00??x??sx?于是可以用矩阵乘积?0t0??y?=?ty?实现.

?001??1??1???????【模型分析】由上述求解可以看出, R2中的任何线性变换都可以用分块矩阵

?AO??O1?乘以齐次坐标实现, 其中A是2阶方阵. 这样, 只要把平面图形上点的齐??次坐标写成列向量, 平面图形的每一次几何变换, 都可通过左乘一个3阶变换矩阵来实现.

参考文献

David C. Lay, 线性代数及其应用, 沈复兴, 傅莺莺等译, 北京: 人民邮电出版社, 2009. 页码: 139-141.

Matlab实验题

在Matlab命令窗口输入以下命令 >>clear all, clc,

>>t = [1,3,5,11,13,15]*pi/8; >>x = sin(t); y=cos(t); >>fill(x,y,'r'); >>grid on;

>>axis([-2.4, 2.4, -2, 2])

运行后得图25.

图26 Matlab绘制的图形

(1) 写出该图形每个顶点的齐次坐标;

?; 最后进3行横坐标加0.8, 纵坐标减1的图形平移. 分别绘制上述变换后的图形.

(2) 编写Matlab程序, 先将上面图形放大0.9倍; 再逆时针旋转

案例十二. 太空探测器轨道数据问题

太空航天探测器发射以后, 可能需要调整以使探测器处在精确计算的轨道里. 雷达监测到一组列向量x1, …, xk, 它们给出了不同时刻探测器的实际位置与预定轨道之间的偏差的信息.

图28 火星探测器

【模型准备】令Xk = [x1, …, xk]. 在雷达进行数据分析时需要计算出矩阵Gk = XkXkT. 一旦接收到数据向量xk+1, 必须计算出新矩阵Gk+1. 因为数据向量到达的速度非常快, 随着k的增加, 直接计算的负担会越来越重. 现需要给出一个算法, 使得计算Gk的负担不会因为k的增加而加重. 【模型求解】因为

?x1T???kT

Gk = XkXk = [x1, …, xk]?M?=?xixiT,

i?1T??xk???XkT?TTxGk+1 = Xk+1X= [Xk, xk+1]?T?= XkXkT + xk+1xk= G + xkk+1?1k?1,

x?k?1?T所以一旦接收到数据向量xk+1, 只要计算xk+1xk?1, 然后把它与上一步计算得到的Gk

Tk?1相加即可. 这样计算Gk的负担不会因为k的增加而加重.

【模型分析】计算机计算加法的时间与计算乘法的时间相比可以忽略不计. 因此在考虑计算矩阵乘积的负担时, 只要考察乘法的次数就可以了. 设xk的维数是n, 则Xk = [x1, …, xk]是nk的矩阵, Gk = XkXkT是nn的矩阵. 直接计算Gk = XkXkT需要做

Tn2k次乘法. 因而计算的负担会随着k的增加而增加. 但是对于每一个k, 计算xkxk始终只要做n2次乘法.

Matlab实验题

用Matlab编写一个程序用于处理这个问题.

参考文献

David C. Lay, 线性代数及其应用, 沈复兴, 傅莺莺等译, 北京: 人民邮电出版社, 2009. 页码: 123.

案例十三. 应用矩阵编制Hill密码

密码学在经济和军事方面起着极其重要的作用. 现代密码学涉及很多高深的数学知识. 这里无法展开介绍.

请求重传 噪声 加 信 加 冗 源 密 编 码 识 错 解 信 纠 密 宿 错 信 道 攻击 图29 保密通信的基本模型

密码学中将信息代码称为密码, 尚未转换成密码的文字信息称为明文, 由密码表示的信息称为密文. 从明文到密文的过程称为加密, 反之为解密. 1929年, 希尔(Hill)通过线性变换对待传输信息进行加密处理, 提出了在密码史上有重要地位的希尔加密算法. 下面我们略去一些实际应用中的细节, 只介绍最基本的思想.

【模型准备】若要发出信息action, 现需要利用矩阵乘法给出加密方法和加密后得到的密文, 并给出相应的解密方法.

【模型假设】(1) 假定每个字母都对应一个非负整数, 空格和26个英文字母依次对应整数0~26(见下表).

表9 空格及字母的整数代码表 F G H I J K L M 空格 A B C D E 0 1 2 3 4 5 6 7 8 9 10 11 12 13 N O P Q R S T U V W X Y Z 14 15 16 17 18 19 20 21 22 23 24 25 26 (2) 假设将单词中从左到右, 每3个字母分为一组, 并将对应的3个整数排成3维的行向量, 加密后仍为3维的行向量, 其分量仍为整数.

【模型建立】设3维向量x为明文, 要选一个矩阵A使密文y = xA, 还要确保接收方能由y准确地解出x. 因此A必须是一个3阶可逆矩阵. 这样就可以由y = xA得x = yA1. 为了避免小数引起误差, 并且确保y也是整数向量, A和A1的元素应该都是整数. 注意到, 当整数矩阵A的行列式= 1时, A1也是整数矩阵. 因此原问题转化为

(1) 把action翻译成两个行向量: x1, x2. (2) 构造一个行列式= 1的整数矩阵A(当然不能取A = E). (3) 计算x1A和x2A.