Пожалуйста, помогите мне, любая помощь будет оценена по достоинству. Я написал код в C для решения уравнений, но я не знаю, почему некоторые уравнения, которые я вводил в этот калькулятор, дают мне неправильные значения, алгоритм правильный, потому что я выполняю его на C и даю правильные ответы, но когда Я использую его на ардуине, иногда он не дает мне правильный ответ, ну вот полный кодЛинейный решатель уравнения Arduino, неправильный ответ печати
и любая помощь будет оценена.
.
.
.
.
.
.
.
long jordan(){/*this do the gauss elimination for solve the equation*/
long FilaMax=0,k=0;
long double maxEl=0,tmp=0,fracc=0;
lcd.clear();
for (colum=0; colum<cant-1; colum++) {
/* search the maximun colum*/
maxEl = abs(a[colum][colum]);
FilaMax = colum;
for (k=colum+1; k<cant; k++) {
if (abs(a[k][colum]) > maxEl) {
maxEl = abs(a[k][colum]);
FilaMax = k;
}
}
/* change the maximunby the actual row*/
for (k=colum; k<cant+1;k++) {
tmp = a[FilaMax][k];
a[FilaMax][k] = a[colum][k];
a[colum][k] = tmp;
}
/*lower cero's triangular matrix it's done here*/
for (k=colum+1;k<cant; k++) {
fracc = -a[k][colum]/a[colum][colum];
for (fila=colum; fila<cant+1; fila++) {
if (colum==fila) {
a[k][fila] = 0;
}else{
a[k][fila] += fracc * a[colum][fila];
}
}
}
}
char sr=' ';
lcd.setCursor(0,0);
if(a[cant-1][cant-1]==0){
lcd.print("No solucion"); /* if there is no solution print this*/
do{
sr=keypad.waitForKey();
}while(sr!='\n');
}else{ /*is there values to print*/
for (colum=cant-1; colum>=0; colum--) {
res[colum] = a[colum][cant]/a[colum][colum];
for (k=colum-1;k>=0;k--) {
a[k][cant] -= a[k][colum]*res[colum];
}
}
colum=0;
do{
lcd.setCursor(0,0);
lcd.print("R");
lcd.setCursor(1,0);
lcd.print(colum+1);
lcd.setCursor(0,1);
lcd.print(res[colum],DEC);
sr=keypad.waitForKey();
if(sr=='#') colum++;
if (colum==cant) colum=0;
if(sr=='\n') break;
}while(1);
}
colum=0;
fila=0;
cant=0;
sr=' ';
return 0;
}
Попробуйте код с этим:
input:
# size
4
elements:
1 -2 1 1 2
3 0 2 -2 -8
0 4 -1 -1 1
5 0 3 -1 -3
output:
some numbers
it should print without solution.
Я первый запуск кода в C на компьютере, и работа алгоритма совершенным, но когда я копирую на Arduino он не работает, как ожидалось большую часть времени дают правильный ответ линейной системе, но иногда не удается
любая помощь будет оценена.
Можете ли вы дать нам пример некорректного выхода, наряду с тем, что правильный вывод должен быть? – baum
вход: # размер: 4, элементы: {1 -2 1 1 2}, {3 0 2 -2 -8}, {0 4 -1 -1 1}, { 5 0 3 -1 -3} вывод: R1 -3.333, R2 3.2, R3 6.33, R4 5.33, но это неправильный ответ, потому что эта система не имеет решения – user2461687
Пожалуйста, можете ли вы помочь Я застрял с этим кодом 2 дня: c – user2461687