1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
| Tribunal |
4.11.2007 11:02
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: 0 |
Здравствуйте.
Мне нужно написать программу , которая будет уравнивать химическую реакцию. Соответственно нужно прийти к СЛАУ, по которой и находить коэффициенты реакции. В этом и состоит сейчас моя проблема.Написанный мною код в C++Builder 6 выдаёт ошибку о типе integer. Вот собственно код.Надеюсь на какие-то идеи и вашу помощь. На форме Edit'ы для введения элементов веществ и их индексов с расчетом на 3 вещества в левой части и 4- в правой.А так же-StringGrid для выведения полученной матрицы.
Сообщение отредактировано: Tribunal - 4.11.2007 11:08 -------------------- irreparabilium felix olivio rerum
|
![]() ![]() |
| Tribunal |
18.11.2007 10:45
Сообщение
#2
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: 0 |
извините....пожалуйста! помогите сделать,чтобы этот код работал с моими матрицами...
у меня никак не получается=(( заранее спасибо! Код static const int maxsvditerations = 30; double extsign(double a, double b); double mymax(double a, double b); double pythag(double a, double b); void svdsolvefundamental([b]ap::real_2d_array a[/b], int m, int n, [b] ap::real_2d_array& solutions[/b], int& dimension) { int nm; int minmn; ////........ ap::real_1d_array rv1; ap::real_1d_array w; ap::real_2d_array v; bool flag; double epsilon; rv1.setbounds(1, n); w.setbounds(1, n); v.setbounds(1, n, 1, n); if( m<n ) { minmn = m; } else { minmn = n; } g = 0.0; vscale = 0.0; anorm = 0.0; for(i = 1; i <= n; i++) { l = i+1; rv1(i) = vscale*g; g = 0; s = 0; vscale = 0; if( i<=m ) { for(k = i; k <= m; k++) { vscale = vscale+fabs(a(k,i)); } /// ..... epsilon = epsilon*n*ap::machineepsilon; dimension = 0; for(i = 1; i <= n; i++) { if( fabs(w(i))<=epsilon ) { dimension = dimension+1; } } solutions.setbounds(1, n, 0, dimension); for(i = 1; i <= n; i++) { solutions(i,0) = 0; for(j = 1; j <= m; j++) { solutions(i,0) = solutions(i,0)+a(j,i)*a(j,n+1); } } k = 1; for(j = 1; j <= n; j++) { if( fabs(w(j))>epsilon ) { for(i = 1; i <= n; i++) { v(i,j) = v(i,j)/w(j); } } else { for(i = 1; i <= n; i++) { solutions(i,k) = v(i,j); } k = k+1; } } for(i = 1; i <= n; i++) { a(1,i) = 0; for(j = 1; j <= n; j++) { if( fabs(w(j))>epsilon ) { a(1,i) = a(1,i)+v(i,j)*solutions(j,0); } } } for(i = 1; i <= n; i++) { solutions(i,0) = a(1,i); } } вот файлы этого алгоритма
ap.rar ( 4.59 килобайт )
Кол-во скачиваний: 280
svdsolveunit.rar ( 3.48 килобайт )
Кол-во скачиваний: 291-------------------- irreparabilium felix olivio rerum
|
Tribunal Уравнивани реакции.проблема с чтением данных 4.11.2007 11:02
volvo Можно уточнить, где именно он выдает ошибку? Строк... 4.11.2007 11:18
Tribunal строку указать не могу.
ошибка выдаётся,когда я на... 4.11.2007 16:11
volvo Пример входных данных тогда уже тоже приведи... (л... 4.11.2007 17:53
Tribunal вот пример входных данных
при этом выдаёт ошибку... 5.11.2007 1:43
Tribunal а...и подскажите,пожалуйста..
мне нужно найти коэф... 5.11.2007 2:40
volvo Обрати внимание, что показывает CodeGuard:
То ес... 5.11.2007 13:59
Tribunal я сделала вот так(запоминание текущего размера мас... 5.11.2007 15:06
volvo Это должно было что-то изменить? Ты что, теперь ув... 5.11.2007 19:14
Tribunal в описании массивов делать цифры больше тоже не по... 6.11.2007 2:49
volvo У тебя немного неверна структура программы... Я не... 6.11.2007 12:48
Tribunal спасибо..
правда как-то странно всё это сейчас про... 7.11.2007 14:59
volvo а что за FindComponent в 10 строк? :blink:
Смотри,... 7.11.2007 16:40
Tribunal ааа ужас какой :lol:
классно!работает)) спас... 8.11.2007 2:18
volvo Я бы попробовал метод Холецкого: Решение систем (э... 8.11.2007 2:37
Tribunal вот переделала код(метод Холецкого) под свою задач... 12.11.2007 12:18
volvo Естественно... Ты хочешь int поделить на указатель... 12.11.2007 16:21
Tribunal хмм странно теперь ругается на деление на ноль
в э... 12.11.2007 16:37
volvo Это тебе кто сказал? Там БЫЛ не ноль, когда заполн... 12.11.2007 17:04
Tribunal эээ...и что делать? :unsure: 12.11.2007 17:43
volvo Скорее всего, твоя система имеет не единственное р... 12.11.2007 18:48
Tribunal а если система имеет решение, но при этом нужно вз... 13.11.2007 1:20
volvo По-моему, было бы проще добавить в код пару строк,... 18.11.2007 11:33
-Tribunal- вот например для уравнивания
KMnO_4+KNO_2+H_2SO_4-... 18.11.2007 13:23![]() ![]() |
|
Текстовая версия | 16.12.2025 6:47 |