显示标签为“MATLAB”的博文。显示所有博文
显示标签为“MATLAB”的博文。显示所有博文

2015年1月21日星期三

Matlab program for LU Factorization with partial (row) pivoting


上述代码等价的MATLAB内置函数是[L U P]=lu(A),此时满足LU=PA。
上述代码若修改成输出P比较好。即对应MATLAB的[L U P]=lu(A,’vector’)。此时满足LU=A(p,:)。

求解AX=B的时候我们需要交换A的行,对应的也需要对B进行相同的行交换。如果写成矩阵乘法的形式的话,LU分解后满足LU=PA,原方程AX=B变为LUX=PB,注意到求解出来的X的行没有发生交换。

万一需要p行变换的逆变换,那么p_back(p)=1:n即可。也就是说p向量比P矩阵更好用。P矩阵意味着需要进行矩阵乘法。

Reference:  http://cis.poly.edu/~mleung/CS3734/s03/ch02/LU_pivot.htm

2011年6月18日星期六

MATLAB随笔——图形的旋转放缩

使用MATLAB可以对图形进行旋转和放缩,这一切都是依赖这样一个矩阵

以下是示例代码,作用是绘制一个等边三角形,并不断迭代旋转缩小:

所得结果如下:


如果需要逆时针旋转,只需使用A的逆矩阵A^(-1)即可。

2011年4月6日星期三

使用MATLAB计算北京到纽约的新旧航线里程

数学实验的PPT课件参见百度文库
http://wenku.baidu.com/view/2eda008884868762caaed5a6.html
本文给出了实验的示例程序以及输出结果。

以下是mlab21.m的代码,用于计算北京到纽约的航线例程:

执行mlab21后得到以下结果
Dmatrix =
             0       1144.90       2155.64       9608.53      10993.77
       1144.90             0       1766.78       9936.44      11870.27
       2155.64       1766.78             0       8283.06      10764.64
       9608.53       9936.44       8283.06             0       4061.47
      10993.77      11870.27      10764.64       4061.47             0
可以清楚的看到,北京直飞纽约的航线例程为10993.77km,
而旧航线里程为1144.90+1766.78+8283.06+4061.47= 15256.21 (km).
假设飞机按照统计的平均时速980km/h匀速前进,那么新航线比旧航线至少节约了4.35小时,这尚未包含在各个中转站花费的候机时间。

以下是mlab22.m的代码,用于在球面上绘制新旧航线:


这一段程序调用了skyway(p1,p2,color)函数,代码如下:


执行mlab.22之后,可以在Figure(1)窗口中看到绘制的新旧航线图:
视角一(示太平洋)
视角二(示北极)