mirror of
https://github.com/Sosokker/Calculator-for-Matrix-and-Algebra.git
synced 2025-12-19 21:24:05 +01:00
readme markdown added
This commit is contained in:
parent
9dd0dec3f9
commit
05f34c7a0b
98
README.md
Normal file
98
README.md
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
# Calculator for Matrix and Algebra
|
||||||
|
|
||||||
|
This is Text-based user interface program that use to solve matrix and algebra problems.
|
||||||
|
|
||||||
|
## Table of Content
|
||||||
|
- [Calculator for Matrix and Algebra](#calculator-for-matrix-and-algebra)
|
||||||
|
- [Table of Content](#table-of-content)
|
||||||
|
- [Overview](#overview)
|
||||||
|
- [Features](#features)
|
||||||
|
- [Requirement](#requirement)
|
||||||
|
- [Program design](#program-design)
|
||||||
|
- [Code structure](#code-structure)
|
||||||
|
- [Install and Usage](#install-and-usage)
|
||||||
|
- [Guide/Documentation](#guidedocumentation)
|
||||||
|
- [Polynomial](#polynomial)
|
||||||
|
- [Contributing](#contributing)
|
||||||
|
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
**Calculator for Matrix and Algebra** provide the following function.
|
||||||
|
|
||||||
|
- Ability to solve for basic quadratic, cubic and quartic function.
|
||||||
|
- Calculate operations of Polynomial function e.g. +/-/*/÷/^.
|
||||||
|
- Calculate operations of Matrix e.g. Inverse/Tranpose/Basic Operation/Determinant.
|
||||||
|
- Evaluate the expression(No Variable) that has complex parentheses.
|
||||||
|
- Some basic algebra operation. e.g. Find reduce form of Fraction etc.
|
||||||
|
|
||||||
|
## Requirement
|
||||||
|
This program has been created in **Python 3.10.5** and has the following built-in module.
|
||||||
|
- [ast](https://docs.python.org/3/library/ast.html) : Abstract Syntax Trees
|
||||||
|
- [math](https://docs.python.org/3/library/math.html)
|
||||||
|
|
||||||
|
## Program design
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
## Code structure
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
## Install and Usage
|
||||||
|
|
||||||
|
Clone this repository and run the **main.py**
|
||||||
|
|
||||||
|
````
|
||||||
|
$ git clone https://github.com/Sosokker/Algebraic-Solving-Tool
|
||||||
|
````
|
||||||
|
|
||||||
|
## Guide/Documentation
|
||||||
|
|
||||||
|
After the running of the **main.py**. You can type the command and input into the terminal that look like this.
|
||||||
|
````
|
||||||
|
[1] <- This is line-count.
|
||||||
|
````
|
||||||
|
There are two types of command, input style.\
|
||||||
|
*No need expression command* and *Need expression command.*
|
||||||
|
|
||||||
|
> ***Command***
|
||||||
|
***or***
|
||||||
|
***Command[expression]***
|
||||||
|
|
||||||
|
Whitespace and Case are not matter. Command is same as command.
|
||||||
|
|
||||||
|
For example.
|
||||||
|
````py
|
||||||
|
[1] history
|
||||||
|
# RESULT OF THE INPUT COMMAND
|
||||||
|
[2] det[[1,2],[3,4]]
|
||||||
|
# RESULT OF THE INPUT COMMAND
|
||||||
|
````
|
||||||
|
Every command you put in and result of it will be save in **history.json** file.
|
||||||
|
|
||||||
|
### Polynomial
|
||||||
|
Polynomial in this class is store in form of array. This are the following command.
|
||||||
|
- <span style="color:yellow">Polynomial[<span style="color:lightblue">expression</span>]</span>
|
||||||
|
-> expression str or list
|
||||||
|
|
||||||
|
- This Command use to print all property of the polynomial that user input.
|
||||||
|
|
||||||
|
````
|
||||||
|
[1] polynomial[x^2+2x+1]
|
||||||
|
|
||||||
|
````
|
||||||
|
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
Pull requests are always welcome and that would be a honor. This first Python project I've dones. I practice using OOP and using github in this work so many parts of code look a bit messy. 🙈
|
||||||
|
|
||||||
|
Thank you so much.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ class Matrix:
|
|||||||
self.array[row_index][column_index] -= other.array[row_index][column_index]
|
self.array[row_index][column_index] -= other.array[row_index][column_index]
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def __mul__(self, other):
|
def __mul__(self, other: "int | float"):
|
||||||
"""
|
"""
|
||||||
Multiply matrix up and those matrix need same dimesional.
|
Multiply matrix up and those matrix need same dimesional.
|
||||||
>>> m1 = Matrix([[1, 2], [3, 4]])
|
>>> m1 = Matrix([[1, 2], [3, 4]])
|
||||||
@ -141,8 +141,30 @@ class Matrix:
|
|||||||
return new_matrix
|
return new_matrix
|
||||||
|
|
||||||
def inverse(self):
|
def inverse(self):
|
||||||
|
"""
|
||||||
|
Find Inverse Matrix.
|
||||||
|
>>> m1 = Matrix([[4, 3],[3, 2]])
|
||||||
|
>>> m1.inverse().array
|
||||||
|
[[-2.0, 3.0], [3.0, -4.0]]
|
||||||
|
>>> m1 = Matrix([[3, 0, 2],[2, 0, -2],[0, 1, 1]])
|
||||||
|
>>> m1.inverse().array
|
||||||
|
[[0.2, 0.2, 0.0],[-0.2, 0.3, 1.0],[0.2, -0.3, 0.0]]
|
||||||
|
"""
|
||||||
det = self.determinant()
|
det = self.determinant()
|
||||||
pass
|
if det==0:
|
||||||
|
raise ValueError(f"Can't Find Inverse of this Matrix")
|
||||||
|
|
||||||
|
if len(self.array) == 2 and len(self.array[0]) == 2:
|
||||||
|
return Matrix([[self.array[1][1], -self.array[0][1]], [-self.array[1][0], self.array[0][0]]]) * (1/det)
|
||||||
|
|
||||||
|
temp = self.copy_matrix()
|
||||||
|
for row in range(self.row):
|
||||||
|
for col in range(self.column):
|
||||||
|
minor = lambda i, j : [row[:j] + row[j+1:] for row in (temp.array[:i]+temp.array[i+1:])]
|
||||||
|
minor_det = Matrix(minor(col, row)).determinant()
|
||||||
|
temp.array[row][col] = minor_det * (-1)**(row+col+2)
|
||||||
|
temp = temp.tranpose()
|
||||||
|
return temp * (1/det)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f'Matrix({self.array})'
|
return f'Matrix({self.array})'
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user