У меня есть уравнение, которое проявляется так:Решая первое уравнение степени - оптимизации кода
где А и Х имеет два вектора чисел и N> 2 ввод пользователя (каждый раз разные), а G - числовая константа, а Y - переменная, которую я бы хотел найти. Выполнение некоторых вычислений, я бы сказал, что решение может быть обобщено следующим образом (это проверено):
Так вот мой вопрос. Код, который в настоящее время решает уравнение, использует метод деления пополам, то есть он оценивает значение Y, заменяя его итеративным образом его значение внутри формулы до тех пор, пока глобальное значение выражения не будет достаточно близко к 0 (не имеют доступа к коду , поэтому я не могу сказать дополнительную информацию о уровнях разрыва или его структуре, к сожалению).
Однако я думал о реализации кода, вычисляющего код, как показано в решении (вторая формула) выше. Это моя попытка:
num = 0
den = 0
For j = 1 To N
prods = 1
For k = 1 To N
If k <> j Then
prods = prods * X(k)
End If
Next k
num = num + prods
den = den + (prods/A(j))
Next j
Y = num/den
Я никогда не изучал любую компьютерную науку, так что я не в состоянии оценить себя качество этого метода w.r.t. классический делящий пополам. Не могли бы вы рассказать о том, как я должен понимать, какой из двух кодов работает лучше, и, если возможно, некоторые объяснения? Заранее спасибо.
Примечание: не может предоставить достаточную информацию для надлежащего анализа. Я не ожидаю подробного результата. Я просто хотел бы получить мнение некоторых экспертов «на первый взгляд», будучи я не один из вас :)
Есть ли какой-то причине вы не используя формулу «Y = sum_j (1/X (j))/sum_j (1/(A (j) * X (j)))? –
Деление на нижнюю сумму выполняется внутри самой суммы, поэтому я думаю, что разделение, которое вы говорите, не представляется возможным математически. Пример с N = 2: 'y = [x (1) + x (2)]/[[x (2)/A (1)] + [x (1)/A (2)]]'. –
У меня была неправильная формула в первом комментарии меньше минуты, но тот, который там теперь получается, делит числитель и знаменатель вашей правой стороны на 'product_j X (j)'. –