Я пытаюсь написать код, чтобы найти A
в системе линейных уравнений Ax=B
, поэтому я использовал разложение LU. Теперь, когда у меня есть L и U правильно, я застрял в прямой подстановке, чтобы получить y в B = Ly.
Я написал некоторый код в MatLab, который отлично работает, но я не могу получить те же результаты, переписав код на C. Поэтому мне было интересно, может ли кто-нибудь знать, что я делаю неправильно, я не полностью привык к C.
Вот мой код в MatLab:
y(1,1) = B(1,1)/L(1,1);
for i= 2:n
sum=0;
sum2=0;
for k = 1: i-1
sum = sum + L(i,k)*y(k,1);
end
y(i,1)=(B(i,1)-sum)/L(i,i);
end
где L
— моя нижняя треугольная матрица, B
— вектор того же размера, а n
в данном случае — 2498.
Мой код C выглядит следующим образом:
float sum = 0;
y_prev[0]=B[0]/(float)Low[0][0];
for (int i = 1; i < CONST; i++)
{
for (int k = 0; k < i-1; k++)
{
sum = sum +Low[i][k]*y_prev[k];
}
y_prev[i]= (B[i]- sum)/(float)Low[i][i];
}
float(Low[0][0])
вы имели в виду(float)Low[0][0]
?(float)
здесь должно быть приведением типа, а не функцией. - person Weather Vane   schedule 25.09.2016