Стоит ли давать ученикам не совсем обычные методы?
|
|
Александр_Игрицкий | Дата: Воскресенье, 01.01.2012, 12:22 | Сообщение # 16 |
Сообщений: |
11095 |
Награды: |
129 |
Статус: |
Offline |
|
pavel7! Приношу Вам публично свои извинения за нелояльность в ушедшем году! С наступившим 2012 Новым и високосным Годом! Не держите зла! Предлагаю продолжить отношения в спокойном тоне и рабочем режиме. Если предложение принимается, дайте знать. Ничего личного. Ничего абсолютно! Привычка к строгости и ясности изложения.
01.01.2012
|
|
|
| |
|
alsergast | Дата: Воскресенье, 01.01.2012, 12:48 | Сообщение # 17 |
alsergast
Ранг: Профессор (?)
Группа: Пользователи
|
Сообщений: |
4335 |
Награды: |
58 |
Статус: |
Offline |
|
Традиционный подход в большинстве случаев даёт понять, так скажем, структуру материала, принципы и т.д, а также связывает его с последующими темами, т.ч. от него не убежать. Если же существует способ реально сделать что-то проще или быстрее, обязательно нужно знакомить и с ним (хотя бы для разнообразия). Но только после "официальной версии".
01.01.2012
|
|
|
| |
|
Александр_Игрицкий | Дата: Воскресенье, 01.01.2012, 15:00 | Сообщение # 18 |
Сообщений: |
11095 |
Награды: |
129 |
Статус: |
Offline |
|
Quote (alsergast) Но только после "официальной версии". Об этом, собственно, и речь!
01.01.2012
|
|
|
| |
|
pavel7 | Дата: Воскресенье, 01.01.2012, 20:46 | Сообщение # 19 |
pavel7
Ранг: Школьник (?)
Группа: Пользователи
|
Сообщений: |
72 |
Награды: |
1 |
Статус: |
Offline |
|
Может быть, кто-нибудь знает, кто автор метода дихотомии?
Например, когда я учился в институте, то ни в одном учебнике я не смог найти, что автор метода "наименьших квадратов" - французский математик Лежандр... Удивительно! Так ведь можно и имя Пифагора забыть!
01.01.2012
|
|
|
| |
|
YuiSe | Дата: Понедельник, 02.01.2012, 01:29 | Сообщение # 20 |
YuiSe
Ранг: Школьник (?)
Группа: Пользователи
|
Сообщений: |
80 |
Награды: |
2 |
Статус: |
Offline |
|
Quote (pavel7) repeat
x:=(t[-1]+t[1])/2; t[ sign( f(x)*t[1] ) ]:=x;
until (t[1]-t[-1]<dx)OR(t[0]>t[-1]); Quote (pavel7) ... sign( f(x)*t[1] )... Что нам дает результат произведения аргумента на значение функции?
pavel7, вы все время говорите про высшую математику, про книжки. Посмотрите пожалуйста структуру типа real и как его приходиться обрабатывать процессору. А потом постарайтесь больше его нигде не использовать и никому про него не рассказывать, потому что более точный тип double обрабатывается в разы быстрее, если у вас конечно не компьютер младше 486dx.
И я таки понимаю, что формулировку решаемой задачи мы от вас так и не узнаем.
02.01.2012
|
|
|
| |
|
pavel7 | Дата: Понедельник, 02.01.2012, 01:46 | Сообщение # 21 |
pavel7
Ранг: Школьник (?)
Группа: Пользователи
|
Сообщений: |
72 |
Награды: |
1 |
Статус: |
Offline |
|
а я тут никакой задачи и не ставил просто хотел поговорить – потому что теперь я считаю, что в процессе обучения надо применять самые простые алгоритмы, плюс очень хорошо и доходчиво их объяснять
А если хотите задачу – я подготовлю интересную!
02.01.2012
|
|
|
| |
|
Александр_Игрицкий | Дата: Понедельник, 02.01.2012, 22:13 | Сообщение # 22 |
Сообщений: |
11095 |
Награды: |
129 |
Статус: |
Offline |
|
Quote (pavel7) просто хотел поговорить – потому что теперь я считаю, что в процессе обучения надо применять самые простые алгоритмы, плюс очень хорошо и доходчиво их объяснять pavel7, я не хочу быть неделикатным: На лавочке бабы обычно говорят о чем угодно, мужики - о бабах. Это если ОЧЕНЬ ПРИМИТИВНО. Вы о чем говорите, уважаемый pavel7? Quote (pavel7) а я тут никакой задачи и не ставил Простите меня, но нельзя просто так болтать на этом сайте НИ О ЧЕМ? Ерунда какая-то получается? Предмет-то обсуждения ДОЛЖЕН ЖЕ БЫТЬ? КАКОЙ????? Quote (pavel7) А если хотите задачу – я подготовлю интересную! God bless You!!!
02.01.2012
Сообщение отредактировал Александр_Игрицкий - Вторник, 03.01.2012, 11:56
|
|
|
| |
|
alex_edu | Дата: Вторник, 03.01.2012, 16:49 | Сообщение # 23 |
alex_edu
Ранг: Магистр (?)
Группа: Пользователи
|
Сообщений: |
607 |
Награды: |
7 |
Статус: |
Offline |
|
мое небольшое имхо: Code function sign(x:real):integer; begin if x>0 then sign:=1; if x=0 then sign:=0; if x<0 then sign:=-1; end; 1. Практически любой тип с плавающей точкой довольно "опасный" тип. Вы проверяете на равенство 0. Однако у вас может при совершенно понятных (с точки зрения человека) значениях и операциях появиться злосчастная единичка в последнем разряде 2. В данной ф-ции вы всегда проверяете все три условия. Понятно, что в данной конкретной задачке скорость выполнения не существенна. Но, имхо, более правильный подход ни каких лишних проверок: if ... else .... if ... else ... В конце концов - просто выйти из функции во время.
А главное. Умение придумать нестандартное решение это наверное хорошо для тренировки ума, но на мой взгляд удобоперевариваемость кода (даже учебного) полагаю очень важный фактор. В ваш код мне пришлось вдумываться, я даже засомневался, что помню что такое "метод половинного деления". И вот код который я нагуглил по первой же ссылке показался мне более понятным и прозрачным -вообще ни чего в нем объяснять не надо: Code program mdp; function f(x: real): real; begin f:=exp(x*ln(5))-6*x-3; end; var a, b, e, c, x: real; begin a:=1; b:=2; write ('e='); read(e); c:=(a+b)/2; while abs(b-a)>e do begin if f(a)*f(c)<0 then b:=c else a:=c; c:=(a+b)/2; end; x:=(a+b)/2; writeln ('x=',x:3:3,' f(x)=',f(x):4:4); end.
03.01.2012
|
|
|
| |
|
Александр_Игрицкий | Дата: Вторник, 03.01.2012, 17:47 | Сообщение # 24 |
Сообщений: |
11095 |
Награды: |
129 |
Статус: |
Offline |
|
alex_edu, спасибо! Я не стал вмешиваться, так как ранее был причислен некоторыми к "недоброжелателям и злопыхателям", но был абсолютно уверен, что нормальная и объективная реакция форумчан появится. Ч.т.д. Еще раз спасибо.
03.01.2012
|
|
|
| |
|
ArthurL | Дата: Среда, 04.01.2012, 21:17 | Сообщение # 25 |
ArthurL
Ранг: Первоклашка (?)
Группа: Пользователи
|
Сообщений: |
27 |
Награды: |
3 |
Статус: |
Offline |
|
Есть две программы. Одну предложил pavel7, другую, традиционную отгуглил alex_edu, сравним их в смысле показывать студентам или нет. Оговорюсь сразу, что вариант alex_edu, в комментариях не нуждается. 1. Сравнение скоростей работы. Можете проверить, что на точности 0.001 (18 итераций у обоих вариантов), что на точности 0.0000001 (25 итераций у обоих вариантов), разницы в быстродействии нет. 2.Оценка понимания. Программы pavel7, естественно. Я молчу, что за строчку t[-1]:=1; t[1]:=11; t[0]:=t[-1]-9; могут и по ушам. Почему она не выглядит вот так: t[-1]:=1; t[0]:=-8; t[1]:=11; - загадка. Текст программы - лучший комментарий. Почему массив инициализируется не по порядку и не константами? Нехорошо. Ладно. Примем dx за 0.00001, и проведем небольшую трассировку. (21 итерация) Что бросается в глаза: t[0] не меняется (хотя это и так было понятно по коду), т.е. массив высосан из пальца; функция function sign(x:real):integer; ни разу не приняла значение ноль. условие t[0] > t[-1] не выполнилось ни разу.
2a. Ввиду того, что выбор значения для инициализации t[0] непонятен, попробуем поиграть с этим значением. Был использован диапазон от -10 000 до 10 000. Программа всегда выдает решения. Причем при t[0] от -10 000 до 1 верные (x=3.9999 f(x) = 0.0001), а от 2 до 10 000 неверные (x=6 y=20). Таким образом для t[0] подходит любое число равное или меньшее значения левой границы отрезка. Зачем мистифицировать студентов и читателей, и почему не написать t[0] = t[-1] - тайна автора. Кстати, за все прогоны от -10 00 до 10 000, с учетом итераций , доблестная функция function sign(x:real):integer; так ни разу и не приняла значение 0, что намекает. Как оценивать получение результатов для "неправильных" значений t[0] - только как очень, очень и очень плохие. Лучше бы программа зациклилась, стала бы делить на ноль, или хоть как-то сообщила про ошибку. Этого нет. Если выводить в качестве результата только значение x, ну вы поняли. Проблема в том, что при ошибки ввода пресловутого t[0], на интервале где есть корень, программа находит неверный корень. Вывод: показывать такую программу студентам категорически нельзя. Разве в курсе "Тестирование программного обеспечения", как пример некорректной реализации, но это далеко уходит за рамки форума.
04.01.2012
|
|
|
| |
|
Александр_Игрицкий | Дата: Среда, 04.01.2012, 21:48 | Сообщение # 26 |
Сообщений: |
11095 |
Награды: |
129 |
Статус: |
Offline |
|
ArthurL, Вы просто молодец! Пользуясь случаем, хочу еще раз обратить ВСЕХНОЕ (как мог бы сказать Корней Иванович Чуковский) внимание на Санкт-Питербург. Очень достойно! И еще! Призываю всех участников, представляющих любые материалы о любом творчестве на суд форума, сопровождать их вразумительной аннотацией. Это просто одно из правил хорошего тона: проявление действительного уважения к коллегам.
04.01.2012
|
|
|
| |
|
ArthurL | Дата: Среда, 04.01.2012, 22:23 | Сообщение # 27 |
ArthurL
Ранг: Первоклашка (?)
Группа: Пользователи
|
Сообщений: |
27 |
Награды: |
3 |
Статус: |
Offline |
|
Александр_Игрицкий, я могу ошибаться, но. Есть базовая задачка: поменять местами значения двух переменных. Классическое решение предполагает появление промежуточной. Продвинутые выпускники математических школ гордятся тем, что знают, как сделать это без промежуточной переменной. Поэтому мне кажется (я могу ошибаться), что Павел VII решил выбросить из классического трио a, b и c переменную c. Теперь вместо a - t[-1], вместо b - t[1]. И тут же ввел t[0]. видимо в качестве симметричного ответа. И плюс сильное переусложнение кода, затмевающего суть и с потенциальной дырой.
А если быть совсем честным, то я с Одессы. Но в Питере живу и работаю давно.
04.01.2012
|
|
|
| |
|
Александр_Игрицкий | Дата: Среда, 04.01.2012, 23:22 | Сообщение # 28 |
Сообщений: |
11095 |
Награды: |
129 |
Статус: |
Offline |
|
Шо? Ви хотите быть совсем честный? Обиделись на дюка Ришелье? Теперь стоите им около Ростральной колонны? Тогда, совсем честный, почему ви не сделали себе виход на дальше?
04.01.2012
|
|
|
| |
|
ArthurL | Дата: Среда, 04.01.2012, 23:34 | Сообщение # 29 |
ArthurL
Ранг: Первоклашка (?)
Группа: Пользователи
|
Сообщений: |
27 |
Награды: |
3 |
Статус: |
Offline |
|
Ни боже мой! (спешу, а то потрут же) Просто мне несколько неудобно слышать такие комплименты от Вас к Питеру, хотя я понаехавший ))
А черт его не знает..
04.01.2012
|
|
|
| |
|
Александр_Игрицкий | Дата: Четверг, 05.01.2012, 00:33 | Сообщение # 30 |
Сообщений: |
11095 |
Награды: |
129 |
Статус: |
Offline |
|
Шоб я так жил, как Вам неудобно!
05.01.2012
|
|
|
| |
|