——Numerical Algebra Course Project
Collaborated with Yuxiang Tong and received guidance from Professor Shengxin Zhu, along with discussions with classmates from the entire Numerical Algebra course
About the process
This project encapsulates my personal reflections on a course that significantly enhanced my understanding of numerical algorithms, particularly in the context of Singular Value Decomposition (SVD) using MATLAB. In this course, we extensively used English-language textbooks, which inspired me to summarize my insights in Chinese. This approach not only aided my comprehension but also aims to assist future juniors in navigating the course material more effectively.
Throughout the course, we delved into the intricacies of MATLAB’s fundamental matrix operations, applying the algorithms we learned to develop custom SVD code. This endeavor marked my first foray into translating complex mathematical algorithms into code. The journey was challenging yet immensely rewarding, offering a multitude of learning opportunities and guidance that catalyzed a significant leap in my personal development.
This summary not only serves as a record of my journey through the course but also as a bridge for future students to connect with these concepts in a more approachable manner, marrying the rigor of English-language materials with the accessibility of a Chinese summary.
Click or drag to the floating window to download
README
Introduction
This toolkit, developed by Jiasheng Xu and Yuxiang Tong under the guidance of Professor Zhu Shengxin and with inputs from classmates in the numerical algebra course, optimizes and expedites the process of Singular Value Decomposition (SVD) for matrices. It introduces innovative algorithms and matrix transformations to enhance the efficiency of SVD operations.
Features
n_svd
:- An efficient Singular Value Decomposition function for matrix decomposition, showcasing our ability to apply complex numerical algorithms in coding.
new_TSB
andqr_givens
:- Developed in collaboration with Yuxiang Tong. These functions optimize the matrix for SVD, focusing on bidiagonalization and tridiagonalization (
new_TSB
), and matrix transformation via Givens rotations (qr_givens
).
- Developed in collaboration with Yuxiang Tong. These functions optimize the matrix for SVD, focusing on bidiagonalization and tridiagonalization (
mytest
:- A function to evaluate the performance of our SVD algorithm, providing insights into time efficiency and accuracy.
- Custom Matrix Input:
- Flexibility for users to implement SVD on their own matrices by replacing the
test.mat
file.
- Flexibility for users to implement SVD on their own matrices by replacing the
ouyang_SVD
:- A collaborative effort with classmates, further expanding the toolkit’s capabilities in matrix decomposition.
house2
:- A foundational function by Professor Zhu, crucial for the SVD process.
Getting Started
Prerequisites
- MATLAB installed on your system.
Running the Toolkit
- Performance Testing:
- Run the
mytest
function to measure the performance of the SVD process. It times the computation and calculates the reconstruction error.
- Run the
- Performing SVD:
- Use the
n_svd
function to perform singular value decomposition on your matrix. This function returns matrices U, Σ, and V.
- Use the
- Custom Matrix Input:
- Replace the
test.mat
file with your own matrix file in MATLAB’s.mat
format, containing matrices as per the existing code’s requirements.
- Replace the
Example
% Load your custom matrix
load('your_matrix_file.mat'); % Replace 'your_matrix_file.mat' with your file name% Perform SVD
[U, S, V] = n_svd(your_matrix);
% Measure performance
[time, error] = mytest();