4 by 4 Matrix Inversion

download 4 by 4 Matrix Inversion

of 22

Transcript of 4 by 4 Matrix Inversion

  • 7/31/2019 4 by 4 Matrix Inversion

    1/22

    4 by 4 MATRIX INVERSION

    &BACKWARD COMPUTATION

    Using Visual Basic 6.0

    COURSE: SVY 312

    COURSE TITLE: COMPUTERAPPLICATIONS IN SURVEYING

    BY

    GROUP

    Lecturer: BADEJO (DR)

    October, 2009

  • 7/31/2019 4 by 4 Matrix Inversion

    2/22

    GROUP MEMBERS

    Name

    Matric No

    Obey Ife Akin

    060405026

    Oluwo Abisoye .I.T

    070405027

    Ufan Iboro Anietie

    060405019

    Falade

  • 7/31/2019 4 by 4 Matrix Inversion

    3/22

    Introduction

    Before we can talk of programming, a certain problem has to exist and inorder to solve this problem there are some certain stages which one must

    go through. These stages include:

    - Existence of a problem to be solved

    - Understanding the problem

    - Planning the solution- Preparing flowchart or algorithm

    - Coding

    - Inputting program into the computer

    - Program run and testing

    - Documentation.

    We have two problems to be dealt with so we are going to take a look at

    how these problems can be solved using Visual Basic 6.0 application.

  • 7/31/2019 4 by 4 Matrix Inversion

    4/22

    ABOUT Visual Basic 6.0

    Visual Basic is a tool that allows you to develop Windows (Graphic User

    Interface - GUI) applications. The applications have a familiar appearance to

    the user.

    Visual Basic is an object-oriented programming development system for

    creating applications that run under any of the Microsoft Windows

    environments. It has the following two major components:

    1. An extensive collection of prewritten tools, called controls. These controlsare accessible as icons within a graphical programming environment for

    creating customized windows components (e.g., menus, dialog boxes, text

    boxes, slide bars, etc.).

    2. A complete set of program commands, derived from Microsofts

    implementation of the classical Basic programming language. The

    command set includes features that embrace contemporary programming

    practices.

    The overall approach to Visual Basic programming is twofold:

    1. Create a user interface that is appropriate to the particular application athand.

    2. Add a group of Basic instructions to carry out the actions associated with

    each of the controls.

    Visual Basic is event-driven, meaning code remains idle until called upon

    to respond to some event (button pressing, menu selection etc). Visual

    Basic is governed by an event processor. Nothing happens until an event is

    detected. Once an event is detected, the code corresponding to that event

    (event procedure) is executed. Program control is then returned to the

    event processor.

  • 7/31/2019 4 by 4 Matrix Inversion

    5/22

    Some Features of Visual Basic include:

    - Full set of objects - you 'draw' the application

    - Lots of icons and pictures for your use

    - Response to mouse and keyboard actions

    - Clipboard and printer access- Full array of mathematical, string handling, and graphics functions

    - Can handle fixed and dynamic variable and control arrays

    - Sequential and random access file support

    - Useful debugger and error-handling facilities

    - Powerful database access tools

    - ActiveX support

    - Package & Deployment Wizard makes distributing your applications

    simple

    Structure of a Visual Basic Application

    Application (Project) interface is made up of:

    a) Forms - Windows that you create for user interface

    b) Controls - Graphical features drawn on forms to allow user interaction(textboxes, labels, scroll bars, command buttons, etc.) (Forms and

    Controls are objects.)

    c) Properties - Every characteristic of a form or control is specified by a

    property. Example properties include names, captions, size, color,

    position, and contents. Visual Basic applies default properties. You can

    change properties at design time or run time.

    d) Methods - Built-in procedure that can be invoked to impart some action

    to a particular object.

    e) Event Procedures - Code related to some object. This is the code that isexecuted when a certain event occurs.

  • 7/31/2019 4 by 4 Matrix Inversion

    6/22

    f) General Procedures - Code not related to objects. This code must be

    invoked by the application.

    g) Modules - Collection of general procedures, variable declarations, and

    constant definitions used by application.

    Steps in Developing a Visual Basic

    ApplicationThere are three primary steps involved in building a Visual Basic

    application:

    1. Draw the user interface

    2. Assign properties to controls

    3. Attach code to controls

    4 by 4 MATRIX INVERSION

    For this particular problem, we used the adjoint/co-factormethod to

    create a program which can be used to solve the 4 by 4 matrix.

    We started off by creating the user interface which looks like the one

    below;

  • 7/31/2019 4 by 4 Matrix Inversion

    7/22

    Afterwards, we went on to write the codes for the program. The program

    codes are written below;

    Private Sub Command1_Click()

    Dim a11 As Double, a12 As Double, a13 As Double, a14 As Double, a21 As

    Double, a22 As Double, a23 As Double, a24 As Double, a31 As Double, a32

    As Double, a33 As Double, a34 As Double, a41 As Double, a42 As Double,

    a43 As Double, a44 As Double

    Dim b11 As Double, b12 As Double, b13 As Double, b14 As Double, b21 As

    Double, b22 As Double, b23 As Double, b24 As Double, b31 As Double, b32

    As Double, b33 As Double, b34 As Double, b41 As Double, b42 As Double,b43 As Double, b44 As Double

    Dim detA As Double

    Dim c11, c12, c13, c14, c21, c22, c23, c24, c31, c32, c33, c34, c41, c42,

    c43, c44 As Double

    a11 = Val(e1.Text)

  • 7/31/2019 4 by 4 Matrix Inversion

    8/22

    a12 = Val(e2.Text)

    a13 = Val(e3.Text)

    a14 = Val(e4.Text)

    a21 = Val(e5.Text)

    a22 = Val(e6.Text)

    a23 = Val(e7.Text)

    a24 = Val(e8.Text)

    a31 = Val(e9.Text)

    a32 = Val(e10.Text)

    a33 = Val(e11.Text)

    a34 = Val(e12.Text)

    a41 = Val(e13.Text)

    a42 = Val(e14.Text)

    a43 = Val(e15.Text)

    a44 = Val(e16.Text)

    detA = -a41 * (a12 * ((a23 * a34) - (a24 * a33)) - a13 * ((a22 * a34) - (a24 *

    a32)) + a14 * ((a22 * a33) - (a23 * a32))) + a42 * (a11 * ((a23 * a34) - (a24

    * a33)) - a13 * ((a21 * a34) - (a24 * a31)) + a14 * ((a21 * a33) - (a23 *

    a31))) - a43 * (a11 * ((a22 * a34) - (a24 * a32)) - a12 * ((a21 * a34) - (a24 *

    a31)) + a14 * ((a21 * a32) - (a22 * a31))) + a44 * (a11 * ((a22 * a33) - (a23* a32)) - a12 * ((a21 * a33) - (a23 * a31)) + a13 * ((a21 * a32) - (a22 *

    a31)))

    dA.Text= detA

    c11 = a22 * ((a33 * a44) - (a43 * a34)) - a23 * ((a32 * a44) - (a34 * a42)) +

    a24 * ((a32 * a43) - (a33 * a42))

  • 7/31/2019 4 by 4 Matrix Inversion

    9/22

    c12 = -(a21 * ((a33 * a44) - (a34 * a43)) - a23 * ((a31 * a44) - (a41 * a34))

    + a24 * ((a31 * a43) - (a33 * a41)))

    c13 = a21 * ((a32 * a44) - (a34 * a42)) - a22 * ((a31 * a44) - (a41 * a34)) +

    a24 * ((a31 * a42) - (a32 * a41))

    c14 = -(a21 * ((a32 * a43) - (a33 * a42)) - a22 * ((a31 * a43) - (a41 * a33))

    + a23 * ((a31 * a42) - (a32 * a41)))

    c21 = -(a12 * ((a33 * a44) - (a43 * a34)) - a13 * ((a32 * a44) - (a34 * a42))

    + a14 * ((a32 * a43) - (a42 * a33)))

    c22 = a11 * ((a33 * a44) - (a43 * a34)) - a13 * ((a31 * a44) - (a34 * a41)) +a14 * ((a31 * a43) - (a41 * a33))

    c23 = -(a11 * ((a32 * a44) - (a42 * a34)) - a12 * ((a31 * a44) - (a34 * a41))

    + a14 * ((a31 * a42) - (a41 * a32)))

    c24 = a11 * ((a32 * a43) - (a33 * a42)) - a12 * ((a31 * a43) - (a33 * a41)) +

    a13 * ((a31 * a42) - (a32 * a41))

    c31 = a12 * ((a23 * a44) - (a43 * a24)) - a13 * ((a22 * a44) - (a42 * a24)) +

    a14 * ((a22 * a43) - (a42 * a23))

    c32 = -(a11 * ((a23 * a44) - (a43 * a24)) - a13 * ((a21 * a44) - (a41 * a24))

    + a14 * ((a21 * a43) - (a41 * a23)))

    c33 = a11 * ((a22 * a44) - (a42 * a24)) - a12 * ((a21 * a44) - (a41 * a24)) +

    a14 * ((a21 * a42) - (a41 * a22))

    c34 = -(a11 * ((a22 * a43) - (a42 * a23)) - a12 * ((a21 * a43) - (a41 * a23))

    + a13 * ((a21 * a42) - (a22 * a41)))

    c41 = -(a12 * ((a23 * a34) - (a33 * a24)) - a13 * ((a22 * a34) - (a32 * a24))

    + a14 * ((a22 * a33) - (a32 * a23)))

    c42 = a11 * ((a23 * a34) - (a33 * a24)) - a13 * ((a21 * a34) - (a31 * a24)) +

    a14 * ((a21 * a33) - (a31 * a23))

  • 7/31/2019 4 by 4 Matrix Inversion

    10/22

    c43 = -(a11 * ((a22 * a34) - (a32 * a24)) - a12 * ((a21 * a34) - (a31 * a24))

    + a14 * ((a21 * a32) - (a31 * a22)))

    c44 = a11 * ((a22 * a33) - (a32 * a23)) - a12 * ((a21 * a33) - (a31 * a23)) +

    a13 * ((a21 * a32) - (a31 * a22))

    b11 = c11 / detA

    b12 = c12 / detA

    b13 = c13 / detA

    b14 = c14 / detA

    b21 = c21 / detA

    b22 = c22 / detA

    b23 = c23 / detA

    b24 = c24 / detA

    b31 = c31 / detA

    b32 = c32 / detA

    b33 = c33 / detA

    b34 = c34 / detA

    b41 = c41 / detA

    b42 = c42 / detA

    b43 = c43 / detA

    b44 = c44 / detA

    d1.Text= b11

    d2.Text= b21

  • 7/31/2019 4 by 4 Matrix Inversion

    11/22

    d3.Text= b31

    d4.Text= b41

    d5.Text= b12

    d6.Text= b22

    d7.Text= b32

    d8.Text= b42

    d9.Text= b13

    d10.Text= b23

    d11.Text= b33

    d12.Text= b43

    d13.Text= b14

    d14.Text= b24

    d15.Text= b34

    d16.Text= b44

    End Sub

    Private Sub Command2_Click()

    e1.Text= ""

    e2.Text= ""

    e3.Text= ""

    e4.Text= ""

    e5.Text= ""

  • 7/31/2019 4 by 4 Matrix Inversion

    12/22

    e6.Text= ""

    e7.Text= ""

    e8.Text= ""

    e9.Text= ""

    e10.Text= ""

    e11.Text= ""

    e12.Text= ""

    e13.Text= ""

    e14.Text= ""

    e15.Text= ""

    e16.Text= ""

    d1.Text= ""

    d2.Text= ""

    d3.Text= ""

    d4.Text= ""

    d5.Text= ""

    d6.Text= ""

    d7.Text= ""

    d8.Text= ""

    d9.Text= ""

    d10.Text= ""

    d11.Text= ""

    d12.Text= ""

  • 7/31/2019 4 by 4 Matrix Inversion

    13/22

    d13.Text= ""

    d14.Text= ""

    d15.Text= ""

    d16.Text= ""

    dA.Text= ""

    End Sub

    Private Sub Command3_Click()

    End

    End Sub

    Algorithm for 4 by 4 Matrix Inversion

    10 Draw up a 4 by 4 matrix

    20 Calculate the minor of each of the following elements ( i.e. a11,a12...a44)

    by finding the determinant of the 3 by 3 matrix

    30 Calculate the cofactor of the different elements of the rows andcolumns and apply the necessitated symbols in front of each of them.

    40 Transpose the cofactor to obtain the adjoint

    50 Calculate the determinant

    60 Divide the adjoint by the determinant to obtain the inverse matrix.

  • 7/31/2019 4 by 4 Matrix Inversion

    14/22

    Highlights and Deficiencies of Method of solution

    The method of solution employed in this program is the co-factor/adjointmethod. The method as we all know is easy to understand but it is very

    long because of the step by step breakdown of the methodology employed.

    The highlights of this method of solution include;

    - Step by step understanding of the methodology involved

    - Straightforwardness of the method of solution

    Some of the deficiencies attached to this method of solution are;

    - It is cumbersome to calculate.

    - It is time-taking and could be really confusing if one is not careful.

    Sample of the Input and Output of the Program

    We are going to test run the program with a 4 by 4 matrix. The input is on

    the left side of the program interface while the output is on the right side of

    the program interface. A sample run of the program is displayed below;

  • 7/31/2019 4 by 4 Matrix Inversion

    15/22

    Before output is calculated

    After the output has been displayed

    BACKWARD COMPUTATION

    Backward computation is a method used in solving traverse problems.

    This problem is not as cumbersome as the 4 by 4 matrix inversion problem

    although it involves the use of additional functions such as sine, cosine, etc.

    As usual, we start off with the designing of the user interface which is

    shown below:

  • 7/31/2019 4 by 4 Matrix Inversion

    16/22

  • 7/31/2019 4 by 4 Matrix Inversion

    17/22

    dx = x2 - x1

    dist = Sqr(dy ^ 2 + dx ^ 2)

    Distance.Text= dist

    If(dx > 0 And dy > 0) Then

    Bearing = (Atn(dx / dy)) * (180 / (4 * Atn(1)))

    TrueBearing = Bearing

    ElseIf(dx > 0 And dy < 0) Then

    Bearing = (Atn(dx / dy)) * (180 / (4 * Atn(1)))

    TrueBearing = 180 + Bearing

    ElseIf(dx < 0 And dy < 0) Then

    Bearing = (Atn(dx / dy)) * (180 / (4 * Atn(1)))

    TrueBearing = 180 + Bearing

    ElseIf(dx < 0 And dy > 0) Then

    Bearing = (Atn(dx / dy)) * (180 / (4 * Atn(1)))

    TrueBearing = 360 + Bearing

    ElseIf(dx = 0 And dy > 0) Then

  • 7/31/2019 4 by 4 Matrix Inversion

    18/22

    Bearing = (Atn(dx / dy)) * (180 / (4 * Atn(1)))

    TrueBearing = 0

    ElseIf(dx = 0 And dy < 0) Then

    Bearing = (Atn(dx / dy)) * (180 / (4 * Atn(1)))

    TrueBearing = 180

    ElseIf(dx > 0 And dy = 0) Then

    TrueBearing = 90

    ElseIf(dx < 0 And dy = 0) Then

    TrueBearing = 270

    End If

    text6.Text= TrueBearing

    latitude = dist * Cos(TrueBearing)

    Text1.Text= latitude

    departure = dist * Sin(TrueBearing)

    Text2.Text= departure

  • 7/31/2019 4 by 4 Matrix Inversion

    19/22

    End Sub

    Private Sub Command2_Click()

    End

    End Sub

    Private Sub Command3_Click()

    p1x.Text= ""

    p2x.Text= ""

    p1y.Text= ""

    p2y.Text= ""

    Distance.Text= ""

    text6.Text= ""

    Text1.Text = ""

    Text2.Text = ""

    End Sub

    Algorithm for Backward Computation

    10 Input coordinate of points A and B

    20 Let E = EB EA

    30 Let N = NB - NA

  • 7/31/2019 4 by 4 Matrix Inversion

    20/22

    40 Let = Tan -1(E/N)

    50 Let {deg} = * (180/(atn(1)*4))

    60 Let distance = sqr(E2 + N2)

    70 If E > 0 and N > 0 then bearing AB = {deg}

    80 If E > 0 and N < 0 then bearing AB = 180 - {deg}

    90 If E < 0 and N > 0 then bearing AB = 360 - {deg}

    100 If E < 0 and N < 0 then bearing AB = 180 + {deg}

    110 If E = 0 and N > 0 then bearing AB = 0

    120 If E = 0 and N < 0 then bearing AB = 180

    130 If E = 0 and N > 0 then bearing AB = 90

    140 If E = 0 and N = 0 then bearing AB = 360

    150 Print distance and bearing AB

    160 If AB < 180 then bearing BC = bearing AB + 180 +

    170 If AB > 180 then bearing BC = bearing AB - 180 +

    180 If AB > 360 then bearing BC = bearing BC 360

    190 Print bearing BC

    Highlights and Deficiencies of Method of Solution

    The method of solution employed in this problem is very easy to use andeasily understandable. As regards the program itself, there are a couple of

    deficiencies of which includes;

    - Inadequate text boxes to enable the program compute results for more

    coordinates.- Multi tasking is not enabled in the program.

  • 7/31/2019 4 by 4 Matrix Inversion

    21/22

    Some of the highlights to look out for include;

    - The conversion of the bearings from radians to degrees

    - The negative and positive signs in front of the coordinates or other

    parameters.

    Sample of input and output of the program

    The above shows the program interface with the required inputs only. It

    is only after the inputs must have been keyed in that we can then click on

    the calculate button in order to get our output. It is shown below;

  • 7/31/2019 4 by 4 Matrix Inversion

    22/22