Showing posts with label maths help. Show all posts
Showing posts with label maths help. Show all posts

Sunday, January 11, 2009

Transformations of Graphs

 

This looks at how a given graph will change when the the function is changed slightly eg how the graph y=x will change when it becomes y = 2x.

y = af(x)

The graph f(x) will "steeper" as the y value of each point is multiplied by a. It will appear like a "stretched" version of the graph y=f(x) 

graph transformation y=af(x)

 

 

y =f(x) + a

The graph f(x) will move up by the amount a as a is added to each y value. This means that the points of intersection of the graph and the y axis will increase by the amount a. The intersection of the graph and the x-axis will depend upon the function of the graph.

transformation graph f(x) + a

 

y = f(ax)

This will make the graph appear "narrower" beacuse y is taking the value of f(x) a time across. So if the value of f(x) is 3 when x =12 then the value of f(4x) = 3 when x=3 as 12/4=3.

transformation graph f(ax)

y=f(x+a)

This will shift the graph to the left by a. This is because the value of f(x) at x+a is displayed at the point x so effectively the graph occurs a earlier and therefore shifts to the left.

transformation graph y(x+a)

Saturday, January 10, 2009

Sec, Cosec, Cot

Sec, cosec and cot are all functions in trigonometry. They are simply equal to one over on of the other functions, ie cos, sin and tan.

so

Sec = 1/cos

Cosec = 1/sin

cot = 1/tan

You can remember which is paired with which using the third letter rule. This is that the third letter is the first letter of the corresponding function ie)

sec goes with cos
cosec goes with sin
cot goes with tan

Wednesday, December 3, 2008

Matrix Calculator, C++ Program

I recently went back to my c++ matrix calculator program and noticed it needed some improving so here are the improvements along with the source code.


Download the c++ matrix calculator here


Firstly I have added add/minus features to it. I accidentaly forgot to code these last time but have included them in the new program with the commands add and min. A note on the code, all the min function actually does is reverse all the signs on the second matrix and then call add.


I have also allowed you to determine both the number of rows and columns in the matrix to give it more flexibility. However this is not extended to the transformations (rotate and reflect) which still only work in 3 dimensions. Also in this process I have changed the lgth variable in the matrix to colls so that it now has rows and colls.


Finally to avoid some errors i have ensured all answer matrices are assigned colls and rows values.


Please feel free to use the program and don’t be put off by the fact it uses a command prompt, just type help to see the list of commands and when you type the command followed by enter it will give you step by step guidance on what to do.


David Woodford


// matrix.cpp : main project file.


#include “stdafx.h”

#include <iostream>

#include <cmath>

#include <string>

using namespace std;


class mat

{

public:

double mata[20][10];

int colls;

int rows;

void dimmat()

{

cout << “enter collums of matrix” << endl;

cin >> colls;

cout << “enter rows of matrix” << endl;

cin >> rows;

//    cout << “” << endl;


for(int n=0;n<rows;n++)

{

cout << “enter values for row” << n << ” , each followed by ‘enter’:” << endl;

for(int m=0;m<colls;m++)

{

cin >> mata[n][m];

}

}

}


void display()

{

int rcount = 0;

int ccount = 0;


while(rcount < rows)

{

while(ccount < colls)

{

//cout << “matrix:”<<endl;

cout << mata[rcount][ccount] << ” , “;


ccount++;

}

cout << ‘\n’;

ccount=0;

rcount++;

}

}


/*void rotate()

{

mat mat2;

mat2.dimmat();

mat mat3;

mat3 = mult(this, mat2);

}*/

};


mat mult(mat A, mat B)

{

cout << “multiply started” << endl;


//char pause;


mat ans;

ans.colls=B.colls;

ans.rows=A.rows;


int rcount = 0;

int ccount = 0;

int c2 = 0;


while(rcount < 3)

{

//cout << “row: ” << rcount << ” started” << endl;

while(ccount < A.colls)

{

//cout << “collum: ” << ccount << “started” << endl;


ans.mata[rcount][ccount] = 0;

while(c2 < A.rows)

{

ans.mata[rcount][ccount] = ans.mata[rcount][ccount] + (A.mata[rcount][c2] * B.mata[c2][ccount]);

c2++;

}

//cout << “value is: ” << ans.mata[rcount][ccount] << endl;

//cin >> pause;

c2=0;

ccount++;

}

ccount=0;

rcount++;

}


if(A.colls != B.rows)

{

cout <<”matrices are wrong sizes to be multiplied” << endl;

return A;

}

else

{


ans.display();

return ans;

}

}


mat add(mat A, mat B)

{

mat ans;

if(A.colls == B.colls && A.rows == B.rows)

{

ans.colls = A.colls;

ans.rows=A.rows;

int i = 0;

int j = 0;

while(i < ans.colls)

{

j=0;

while(j<ans.rows)

{

ans.mata[i][j] = A.mata[i][j] + B.mata[i][j];

j++;

}

i++;

}

return ans;

}

else

{

cout << “matricies cannot be added : diffrent lengths” << endl;

return A;

}

}


mat minus(mat A, mat B)

{

int i =0;

int j =0;

while(i<B.colls)

{

while(j<B.rows)

{

B.mata[i][j] = 0 - B.mata[i][j];

j++;

}

j=0;

i++;

}

return add(A,B);

}

mat rotate(mat A, int angle)

{

mat T;

T.colls = 3;


mat matans;


//creat transformation matrix

double pi = 3.14159265;

double theta = (angle*pi)/180;

T.mata[0][0] = cos(theta);

T.mata[0][1] = 0 - sin(theta);

T.mata[0][2] = 0;


T.mata[1][0] = sin(theta);

T.mata[1][1] = cos(theta);

T.mata[1][2] = 0;


T.mata[2][0] = 0;

T.mata[2][1] = 0;

T.mata[2][2] = 1;


matans = mult(T, A);

return matans;

}


mat reflect(mat A, int angle)

{

mat matans;

mat T;

T.colls = 3;

//creat transformation matrix

double pi = 3.14159265;

double theta = (angle*pi)/180;

T.mata[0][0] = cos(2 * theta);

T.mata[0][1] = sin(2 * theta);

T.mata[0][2] = 0;


T.mata[1][0] = sin(2*theta);

T.mata[1][1] = 0 - cos(2*theta);

T.mata[1][2] = 0;


T.mata[2][0] = 0;

T.mata[2][1] = 0;

T.mata[2][2] = 1;


matans = mult(T, A);

return matans;

}


void input()

{

string dim = “dim”;


string com;

int end = 0;


mat matans;

int matcount = 0;

mat mats[11];

while(end == 0)

{

cout << “enter command>”;

getline(cin, com);


if(dim == com)

{

cout << “matrix” << matcount <<endl;

mats[matcount].dimmat();

matcount++;

}

if(com == “rot”)

{

cout << “which matirx?” <<endl;

int matnum;

cin >> matnum;

cout << “what angle (degrees)” << endl;

int rotang;

cin >> rotang;

matans = rotate(mats[matnum], rotang);

mats[10] = matans;

}

if(com == “rlt”)

{

cout << “which matirx?” <<endl;

int matnum;

cin >> matnum;

cout << “what angle (degrees)” << endl;

int rotang;

cin >> rotang;

matans = reflect(mats[matnum], rotang);

mats[10] = matans;

}

if(com == “ans”)

{

matans.display();

}

if(com == “mlt”)

{

cout << “first matrix” << endl;

int mat1;

cin >> mat1;

cout << “second matirx” << endl;

int mat2;

cin >> mat2;


matans = mult(mats[mat1], mats[mat2]);

mats[10] = matans;

}

if(com == “add”)

{

cout << “enter first matrix” << endl;

int A;

int B;

cin >> A;

cout << “enter second matrix” << endl;

cin >> B;


matans = add(mats[A],mats[B]);

mats[10] = matans;

matans.display();


}

if(com == “min”)

{

cout << “enter first matrix” << endl;

int mata, matb;

cin >> mata;

cout << “enter second matrix” << endl;

cin >> matb;


matans = minus(mats[mata], mats[matb]);

mats[10] = matans;

matans.display();

}

if(com == “dsp”)

{

cout << “which matirx?” << endl;

int matdsp;

cin >> matdsp;

mats[matdsp].display();

}

if(com == “let”)

{

cout << “which matirx?” << endl;

int mat1;

cin >> mat1;

int mat2;

cout <<”eaqual to (10 is answer matrix)” << endl;

cin >> mat2;

mats[mat1] = mats[mat2];


}

if(com == “help”)

{

cout <<”Davids Woodfords matrix calculator” << endl;

cout << “takes the following commands” << endl;

cout <<” ‘dim’    ::  allows you to dfine a matrix”<< endl;

cout <<” ‘rot’    :: roates a matrix through an agnle” << endl;

cout <<” ‘rlt’    :: reflects a matrix through the line y=tan(a) where a is given” << endl;

cout <<” ‘ans’    :: displays the answer to the last calculation” << endl;

cout <<” ‘mlt’    :: lets u multiply 2 matricies together” << endl;

cout <<” ‘dsp’    :: displays a matrix specified”<<endl;

cout <<” ‘let’    :: allows u to assign one matrix the value of another, eg answer”<<endl;

cout <<” ‘add’    :: lets u add 2 matricies together” << endl;

cout <<” ‘min’    :: lets u minus 2 matricies together” << endl;

cout<<”===================================================================”<<endl;

cout <<”matricies are sotred in an array of 10, with numerical values starting at 0″<<endl;

cout<<”matrix 10 is the answer matrix”<<endl;

cout<<”any parameters will be asked for wen needed”<<endl;


}

}


}


int main()

{

cout << “Welcome to David Woodfords Matrix calculator” << endl << endl;

cout<<”type ‘help’ for a list of commands” <<endl;

//    mat mata;

//    mata.dimmat();


/*    mat matb;

matb.dimmat();


mat matans;

matans = mult(mata, matb);

//    mata.display();

*/

//rotate(mata, 30);

input();

return 0;


}

Tan=Sin/Cos

this site is now at www.breakingwave.co.nr


This is often useful when solving trig equations so i thought i’d include it


basically:


sin = opp/hyp

and

cos=adj/hyp


so


sin/cos = (opp/hyp)/(adj/hyp)


so if we cancel the hyp’s we get


sin/cos = opp/adj


and since tan = opp/adj


tan = sin/cos

Sine and Cosine Rules

This is the basics of the sine cos and tan graphs and how sine and cos relate to give you tan. It also shows how to differentiate sin and cos.


The output or range of both sine and cos is from -1 to 1 when given any angle. They can be shown on a graph where y = sin(x) and y = cos(x). In these graphs all the angles go along the x axis and you can see a wave type shape is formed


Sine Graph

graph of y=sin(x)


Cosine Graph

cosine graph


As you can see both the sin and cos graphs move periodically between -1 and 1 as the angles change, this pattern continues indefinitely because once you pass 360 degrees or 2 pi radians you will return back to the beginning. If you try to perform sin-1 of a value out side the range -1 to 1 you will get an error.


Differentiate Sin and Cos

also notice that the gradient of the sin graph is the value of the cos graph for the same angle and that the gradient of the cos graph is the -value of the sin graph for that angle. This means that we can differentiate the sin and cos graphs:

if f(x) = sin(x) then f ‘ (x)=cos(x)

and

if f(x) = cos(x) then f ‘ (x) = -sin(x)


however if we use ax instead of x we must differentiate it by bringing the a out, when its just x this doesn’t matter as the differential of x is 1.

ie)

let y = sin(f(x))

now let u = f(x)

du/dx = f ‘ (x)

also

y=sin(u) as u = f(x)

dy/du = cos(u)


from the chain rule


dy/dx = du/dx * dy/du

therefore

if y = sin(f(x))

dy/dx = f ‘ (x)cos(f(x))


and similarly for cos

if y = cos(f(x))

dy/dx = -f ‘ (x)sin(f(x))

Area and Circumference of a Circle: pi

This is a basic guide to using pi to find the area and circumference of a circle using pi. And also explores why pi makes our formulea work.


Circle radius and circumference


area =πr2


circumference = 2πr or πd


where r = radius and d=diameter


Area


First lets look at the area of a circle, given by area =πr2. This is simple enough to use, we multiply the radius by itself and then by pi.

Does this make sense?

Well r squared is at least going to be an area but it might be a bit small so we multipy by pi. However this doesnt explain much untill we consider what pi is, the easiest way i find to do this is as follows




If we imagine a square that the circle fits inside perfectly(so it touches all four sides like the one above) r squared would give us one quadrant, so the area of that square is 4 x r2 . Of course the circle’s area is a bit smaller so we need to find the ratio between the areas of the square and circle. If we then times this value by four we have a magic constant to multiply r squared by to find the area of a circle (we times by four because we need the area of 4 quadrants and r squared gives us one).

Now this magic constant is pi (which makes sense being just over 3, meaning the area of the circle is just over 3/4 of the area of the square).

Circumference

The circumference of a circle is given by 2πr or πd. This seems simple, we just multiply the diameter (2r) by our magic constant pi.


Does this also make sense?

seeing as we only have one r this time so only one length it seems we are just finding a factor to increase the length by to make a different length(the circumference) which makes sense.

Again lets consider the square into which our circle fits perfectly, the perimeter of this square would be 4 time the length of one of the sides.

Now the length of the sides = the diameter so the perimeter is 4d.

Notice again that the value we are trying to find for the square is multiplied by 4, but for a circle were gonna need a ratio thats a bit smaller.

So we need to replace the 4, for a square, with another, smaller, number — it seems pi will do the job.

Conclusion

To me when i consider pi i don’t look at it as a magical fundamental constant, but more a magical fundamental constant multiplied by four, because when I consider how these formula work using pi this is how they seem to work.

So this new constant is really the ratio of

area of square to area of circle

perimeter of square to circumference of circle.

and it = pi/4 = 0.785398….

so if you have a value for a square and you want a similar value for the circle you just need to multiply it by this number and you’ll have your answer :)



I welcome comments, improvements or errors in this post. Please leave your comments below or email me at woodford_4@hotmail.co.uk

thanks