rust_linear_algebra/vector/
linear_combinaison.rs1use crate::vector::Vector;
2use std::ops::{Add, Mul};
3
4pub fn linear_combination<K>(u: &[Vector<K>], coefs: &[K]) -> Vector<K>
5where
6 K: Copy + Default + Add<Output = K> + Mul<Output = K>,
7{
8 if u.len() != coefs.len() {
9 panic!("Need the same size");
10 }
11
12 let mut result = Vector {
13 elements: vec![K::default(); u[0].elements.len()],
14 };
15
16 for (vector, &coef) in u.iter().zip(coefs) {
17 for (res_elem, &vec_elem) in result.iter_mut().zip(&vector.elements) {
18 *res_elem = *res_elem + vec_elem * coef;
19 }
20 }
21
22 result
23}