Move things dependent on matrix out of line

main
Micke Nordin 2 years ago
parent 93caf54646
commit 4309ed1e11
Signed by: micke
GPG Key ID: 014B273D614BE877

@ -1,23 +0,0 @@
#include <iostream>
#include "cnumber.hpp"
int main() {
cnumber a(3,2);
cnumber b(4,-3);
cout << "a = " << a << endl;
cout << "a* = " << a.conjugate() << endl;
cout << "a*a* = " << a * a.conjugate() << endl;
cout << "b = " << b << endl;
cout << "b* = " << b.conjugate() << endl;
cout << "b*b* = " << b * b.conjugate() << endl;
cout << "a + b = " << a + b << endl;
cout << "(a + b)* = " << (a + b).conjugate() << endl;
cout << "a - b = " << a - b << endl;
cout << "(a - b)* = " << (a - b).conjugate() << endl;
cout << "a * b = " << a * b << endl;
cout << "(a * b)* = " << (a * b).conjugate() << endl;
cout << "a / b = " << a / b << endl;
cout << "(a / b)* = " << (a / b).conjugate() << endl;
}

@ -1,29 +0,0 @@
#include <iostream>
#include "fractions.hpp"
int main() {
int a = 7;
int b = 3;
int c = 1;
int d = 11;
double e = 0.75;
fraction q(a,b);
fraction q2(c,d);
fraction q3(e);
cout.precision(10);
cout << a << "/" << b << '=' << q << endl;
cout << a << "/" << b << '=' << q.to_double() << endl;
cout << c << "/" << d << '=' << q2 << endl;
cout << c << "/" << d << '=' << q2.to_double() << endl;
cout << q << "+" << q2 << '=' << q + q2 << endl;
cout << q << "+" << q2 << '=' << (q + q2).to_double() << endl;
cout << q << "-" << q2 << '=' << q - q2 << endl;
cout << q << "-" << q2 << '=' << (q - q2).to_double() << endl;
cout << q << "*" << q2 << '=' << q * q2 << endl;
cout << q << "*" << q2 << '=' << (q * q2).to_double() << endl;
cout << q << "/" << q2 << '=' << q / q2 << endl;
cout << q << "/" << q2 << '=' << (q / q2).to_double() << endl;
cout << e << '=' << q3 << endl;
return 0;
}

@ -1,60 +0,0 @@
#include "matrix.hpp"
int main() {
vector a = vector(2);
a[0] = 1;
a[1] = 1;
vector b = vector(2);
b[0] = 1;
b[1] = cnumber(1, 0);
vector c = vector(2);
c[0] = 2;
c[1] = cnumber(1, 1);
vector d = vector(2);
d[0] = cnumber(1, -1);
d[1] = 5;
matrix m = matrix(2, 2);
m[0] = a;
m[1] = b;
matrix n = matrix(2, 2);
n[0] = c;
n[1] = d;
cout << "The matrix m" << endl;
cout << m << endl;
cout << "The determinant of matrix m:" << endl;
cout << m.determinant() << endl;
cout << "The matrix n:" << endl;
cout << n << endl;
cout << "The matrix n roted by one pi radian:" << endl;
cout << n.rotate_by_one_pi() << endl;
cout << "The determinant of matrix n:" << endl;
cout << n.determinant() << endl;
cout << "The matrix n's transpose:" << endl;
cout << n.transpose() << endl;
cout << "The matrix n's diagonal:" << endl;
cout << n.get_diagonal() << endl;
cout << "The matrix n's off diagonal:" << endl;
cout << n.get_off_diagonal() << endl;
cout << "The matrix m * n" << endl;
cout << m * n << endl;
cout << "The matrix m + n" << endl;
cout << m + n << endl;
cout << "Is 2 an eigenvalue of m?" << endl;
if (m.is_eigenvalue(2)) {
cout << "Yes!" << endl;
} else {
cout << "No!" << endl;
}
if (n.is_hermitian()) {
cout << "The matrix n is hermitian, here is the hermitian conjugate:"
<< endl;
cout << n.hermitian_conjugate() << endl;
}
return 0;
}

@ -37,6 +37,8 @@ public:
this->entries = NULL; this->entries = NULL;
this->err = true; this->err = true;
} }
const long long get_num_entries() const { return this->num_entries; }
const long long get_entry_dimension() const { return this->entry_dimension; }
const cnumber determinant() const { const cnumber determinant() const {
cnumber dsum(1, 0); cnumber dsum(1, 0);
cnumber osum(1, 0); cnumber osum(1, 0);

@ -1,45 +1,14 @@
#include "vector.hpp" #include "vector.hpp"
#include <iostream> #include "matrix.hpp"
using namespace std; const vector vector::operator*(const matrix &m) const {
int main() { vector res(m.get_num_entries());
vector v = vector(3); for (long long i = 0; i < this->get_dimention(); i++) {
cnumber one(1, 0); cnumber sum = 0;
cnumber two(2, 0); for (long long j = 0; j < this->get_dimention(); j++) {
cnumber three(3, 0); sum = sum + (m.get_entry(j)[i] * this->entries[j]);
cnumber four(4, 0); }
cnumber five(5, 0); res[i] = sum;
cnumber i(0, 1);
v[0] = one;
v[1] = two;
v[2] = i;
vector w = vector(3);
w[0] = three;
w[1] = four;
w[2] = five;
cout << "v:" << endl;
cout << v << endl;
cout << "w:" << endl;
cout << w << endl;
cout << "v + w:" << endl;
cout << v + w << endl;
cout << "v - w:" << endl;
cout << v - w << endl;
cout << "v * w:" << endl;
cout << v * w << endl;
cout << "w * i:" << endl;
cout << w * i << endl;
for (long long j = 0; j < v.get_dimention(); j++) {
cout << "Element " << j << " of v:" << endl;
cout << v[j] << endl;
} }
cout << "A temp vector of dimension 3" << endl << vector(3) << endl ;
vector k = vector(3); return res;
k = w;
cout << "Assignment of w to k" << endl << k << endl ;
cout << "Manually set elements of k to elements of v" << endl;
for (long long j = 0; j < v.get_dimention(); j++)
k[j] = v[j];
cout << k << endl;
return 0;
} }

@ -2,6 +2,7 @@
#include "cnumber.hpp" #include "cnumber.hpp"
#include <iostream> #include <iostream>
using namespace std; using namespace std;
class matrix;
class vector { class vector {
private: private:
long long dimention = 0; long long dimention = 0;
@ -36,7 +37,7 @@ public:
this->err = true; this->err = true;
} }
long long get_dimention() const { return this->dimention; } long long get_dimention() const { return this->dimention; }
cnumber *get_entries() const { return this->entries; } const cnumber *get_entries() const { return this->entries; }
cnumber get_entry(const long long index) const { cnumber get_entry(const long long index) const {
if (index < this->get_dimention()) { if (index < this->get_dimention()) {
return this->entries[index]; return this->entries[index];
@ -95,6 +96,7 @@ public:
} }
return sum; return sum;
} }
const vector operator*(const matrix &m) const;
const vector operator*(const cnumber scalar) const { const vector operator*(const cnumber scalar) const {
vector product = vector(this->get_dimention()); vector product = vector(this->get_dimention());
for (long long i = 0; i < this->get_dimention(); i++) { for (long long i = 0; i < this->get_dimention(); i++) {

Loading…
Cancel
Save