Я изучаю JavaScript, купил для этого книги. И вот дошел к разделу "Функции в качестве аргумента другой функции". Помимо небольшого параграфа с объяснениями, был вот такой листинг, который я не до конца понял. Я начал разбирать его буквально на листе бумаги, пытаясь понять как получается конечный результат. Но возникли вопросы, которые я попытался выразить в комментариях кода. Заранее спасибо за ответ.
// Мы задаём в качестве аргумента x значение z. => x == z
function diff(f, x, dx) {
return (f(x + dx) - f(x)) / dx; // x = z = 1, dx = 0,001 (аргумент функции). (1 + 0,001 - 1) / 0,001
// результат = 1
}
function G(x) { // результат = x в этой функции = 1
return x * x + x; // 1 * 1 + 1 = 2
}
function g(x) { // это не трогаем, это для сравнения
return 2 * x + 1;
}
document.write("<h4>Вычисление производной</h4>")
var z = 1;
document.write(g(z) + " vs " + diff(G, z, 0.001) + "<br>"); // по результату расчетов, g(x) = 3, G(x) = 2
// а результат в браузере такой: g(x) = 3 G(x) = 3.0009999999993653
// у меня претензии и не понимание в уравнении (f(x + dx) - f(x))/dx. Какое бы значение z не имела бы,
// результат этой функции будет всегда 1. Почему? x и -x из уравнения сократим, а 0,001/0,001 = 1
// но результат в браузере совсем иначий. Как так происходит? Где я ошибаюсь?
var z = 1;
console.log( g(z) + " vs " + diff(G, z, 0.001) );
function diff(f, x, dx) {
return (f(x + dx) - f(x)) / dx;
/* G(1 + 0.001)
↓
G( 1.001 ) → 1.001 * 1.001 + 1.001 == 2.003001
минус G( 1 ) → 1 * 1 + 1 == 2
На выходе должно быть (2.003001 - 2) / 0.001
На калькуляторе - одно, а в JS - будет другое.
Поэтому точные вычисления не делаются на JS
*/
}
console.log( (2.003001 - 2) / 0.001 );
function G(x) {
return x * x + x;
}
function g(x) {
return 2 * x + 1;
}
Можно найти много чего интересного по запросу 0.1 + 0.2 javascript ))
Но достаточно знать, что возможны незначительные косяки при вычислениях, если есть нецелые числа. И перед окончательным выводом результата, дополнительно округлять его для страховки. А c точным вычислениями - уже не к JS)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Видел такое решение в некоторых интернет-магазинах: для изображения добавляется контейнер, при вставке изображения в контейнер оно растягивается...
Есть такая библиотека OpenVINO от Intel, предназначена для работы с нейронными сетями