my_forward_sub <- function(L, b, ...) {
# for scalars not conformable
if(length(L) == 1 & length(b) != 1) {
return("Error: not conformable")
}
# for conformable scalars
if(length(L) == 1) {
return( b[1] / L)
}
# check conformability of matrices
if(ncol(L) != length(b)) {
return("Error: not conformable")
}
#check its a lower triangular matrix (NB will only consider lower and upper)
if( !is.lower.tri(L)) {
return("Error: L is not a lower triangular matrix")
} else {
x <- vector()
x[1] <- b[1]/L[1,1]
for(i in 2:nrow(L)){
b[i]=b[i]
for(j in dim(L)[1]: i-1 ){
b[i]=b[i]-L[i,j]*x[j]
}
x[i]=(b[i]-x[i+1]*x[i])/L[i,i]
}
return(x)
}
}
the function must accept a lower triangular matrix(of any size) 'L' and a solution vector 'b' as arguments and must return the solution vector x by using forward substitution. the code above is what I have managed to put together so far but it only gives the first solution and then 'NA' for the rest. please assist in what I need to change so that it gives the full answer.