Другие языки программирования и технологии

Как работает эта программа ?

Прошу ответ с обьяснением основных механизмов .Я ничего не понимаю в программировании.
program q212583922;
const
N = 7;
C : array[1..N] of real = (0.00001, 0.00005, 0.001, 0.0002, 0.0005, 0.001, 0.005);
LambdaC : array[1..N] of real = (125.9, 125.28, 124.82, 124.17, 122.87, 121.4, 115.23);
var
i: integer;
LambdaInf, beta: real;
SumSqrtC, SumC, SumSqrtCL, SumL: real;
begin
SumSqrtC := 0; SumC := 0; SumSqrtCL := 0; SumL := 0;
for i := 1 to N do begin
SumSqrtC := SumSqrtC + sqrt(C[i]);
SumC := SumC + C[i];
SumSqrtCL := SumSqrtCL + sqrt(C[i]) * LambdaC[i];
SumL := SumL + LambdaC[i];
end;
LambdaInf := (SumSqrtC * SumSqrtCL - SumL * SumC) / (SumSqrtC * SumSqrtC - N * SumC);
beta := (N * SumSqrtCL - SumL * SumSqrtC) / (SumSqrtC * SumSqrtC - N * SumC) ;
writeln('Постоянная в: ', beta:0:10);
writeln('Предельная электропроводность для NaCL: ', LambdaInf:0:10);
end.
О, бой. Сначала ты попросил, чтобы за тебя написали программу, а теперь банально даже код читать не хочешь, что за тунеядство.

Здесь использован численный метод, который называется методом наименьших квадратов. По сути, нам дана линейная функция и ряд значений, а мы хотим подогнать эту линейную функцию так, чтобы она пролегала как можно ближе к заданным точкам. Как?
Сначала мы определяем функцию ошибки:
E = sum (f(x_i) - y_i)^2 = sum (LambdaInf - beta * sqrt(C_i) - LambdaC_i)^2

Так как нам нужна наименьшая возможная ошибка, то находим ее через частные производные неизвестных коэффициентов:

dE / d[LambdaInf] = 0 = 2 * sum (1 - 0 - 0)(LambdaInf - beta * sqrt(C_i) - LambdaC_i)
LambdaInf * N - beta * sum[sqrt(C_i)] = sum[LambdaC_i]

dE / d[beta] = 0 = 2 * sum (0 - sqrt(C_i) - 0)(LambdaInf - beta * sqrt(C_i) - LambdaC_i)
LambdaInf * sum[sqrt(C_i)] - beta sum[C_i] = sum[LambdaC_i * sqrt(C_i)]

Получается линейная система уравнений:
LambdaInf * N - beta * sum[sqrt(C_i)] = sum[LambdaC_i]
LambdaInf * sum[sqrt(C_i)] - beta * sum[C_i] = sum[LambdaC_i * sqrt(C_i)]

Решаем ее для LambdaInf и beta методом детерминанта:
D = sum[sqrt(C_i)] * sum[sqrt(C_i)] - N * sum[C_i]
LambdaInf = (sum[sqrt(C_i)] * sum[LambdaC_i * sqrt(C_i)] - sum[LambdaC_i] * sum[C_i]) / D
beta = (N * sum[LambdaC_i * sqrt(C_i)] - sum[LambdaC_i] * sum[sqrt(C_i)]) / D

Пишем программу на основе последних трех формул. Вот и весь "основной механизм".
А вообще учиться надо, а не х пинать, я тебе скажу.
Алексей Мамин
Алексей Мамин
11 157
Лучший ответ
Раздел const - объявление констант
Раздел var - объявление переменных
begin ...end. - тело программы
Никаких "механизмов" тут нет. Объявление констант и переменных, вычисления по заданным формулам и вывод результата.
АЮ
Андрей Юша
65 917
Игорь Торопов Спасибо за ответ. Но почему же константа именно 7? Мне не совсем ясно
Сначала просил решение, сделали все за тебя
Теперь просишь еще разжевать
Завтра что, приехать за тебя учителю сдать надо будет?)
Евгений Ковнир
Евгений Ковнир
76 709
Дмитрий Павлович Барсков И зарплату получать тоже за него мы должны?
Игорь Торопов А что тогда нужно делать на сайте придуманном специально для вопросов и ответов на них ?)