LINUX.ORG.RU

Контрольная, площадь определенного интеграла, erlang и самодеятельность

 


0

1

Добрый день! Есть код:

-module(integral).
-export([trapezium_method/4, simpson_method/4]).


trapezium_method(F, A, B, N) ->
    trapezium_method(F, A, abs(N - 1), (B - A) / N, (F(A) + F(B))/2 ).

trapezium_method(_, _, 0, H, Res) ->
    abs(H * Res);

trapezium_method(F, A, N, H, Res) ->
    trapezium_method(F, A, N-1, H, Res + F(A + N * H)).



simpson_method(F, A, B, N) ->
	simpson_method(F, A, abs(N-1), (B - A) / N, F(A) + F(B), 0, 0).

simpson_method(_, _, 0, H, Res, M0, M1) ->
	abs( (H/3) * abs(Res + 2*M0 + 4*M1) );

simpson_method(F, A, N, H, Res, M0, M1) ->
	case (N rem 2) of
		0 -> simpson_method(F, A, N-1, H, Res, M0 + F(A + N * H), M1);
		1 -> simpson_method(F, A, N-1, H, Res, M0, M1 + F(A + N * H))
	end.

Основное задание я выполнил (c#) и решил задачу решить, уже для себя, на изучаемом мною сейчас Erlang. То ли в ответах к заданиям ошибки, то ли я криворук, но половина ответов сходится, а половина нет. Могли бы вы глянуть на код и оценить на сколько он правильный, больше всего интересует метод Симпсона.



Последнее исправление: matroskin (всего исправлений: 4)

Попробуй ещё на Дельфи, может быть понравится.

Etch
()

То ли в ответах к заданиям ошибки, то ли я криворук

Основное задание я выполнил (c#)

Что-то тут не сходится.

anonymous
()

А что такое «площадь интеграла»??? Каким шрифтом то интеграл набран?

AIv ★★★★★
()
Ответ на: комментарий от anonymous

С# выбирал не я. С методичкой не поспоришь.
Задания К примеру вариант 26. У меня, в онлайн калькуляторе выходит 1,5. В задании - 0,93. Лыжи не едут..

matroskin
() автор топика
Ответ на: комментарий от matroskin

Та нет. Ответы полученные в C# сошлись же? Если нет, тогда какого хрена взялся за эрланг. Если сошлись, почему ответы там неправильные?

anonymous
()
Ответ на: комментарий от anonymous

Нигде не сошлись. Половина сошлась только. И в C# и в Erlang. Erlang взял просто в образовательных целях, вот нравится мне этот язык. Тут вопрос такой - я все рассчитал правильно и составители методички идиоты или я идиот криворукий, а составители молодцы и все значения верны.

matroskin
() автор топика

Эрланг я вообще не знаю, поэтому буду заниматься буквоедством и брызгать желчью.
Что это ещё за «площадь определенного интеграла»?
Может ты и длину круга можешь посчитать?
Слушай, а площадь натурального логарифма ты не можешь на брейнфаке посчитать?

Спасибо тебе! Поплевался, понегодовал, аж полегчало:)

Stahl ★★☆
()

То ли в ответах к заданиям ошибки, то ли я криворук, но половина ответов сходится, а половина нет.

ты криворук. Ответы проверяют.

больше всего интересует метод Симпсона.

даже смотреть не стану, что-бы не портить свою карму. И твоё настроение.

emulek
()

площадь интеграла

спс утащил к себе.

x4DA ★★★★★
()
Ответ на: комментарий от emulek

Давай 18 вариант. В ответе 0.93. По расчетам - 1.50849. Вот ссылка на расчет. Ткни мне - где я идиот и чего не могу сообразить. Я буду очень благодарен.

matroskin
() автор топика
Ответ на: комментарий от matroskin

Вроде нормально всё в коде. Даже оптимизировано хорошо.

Может с точностью какие-то проблемы в задачнике?

anonymous
()
Ответ на: комментарий от anonymous

Кстати, это скорее метод прямоугольников. Так как в методе трапеций берут точку по середине, а не с краю. Хотя различие номинальное, а не по сути.

anonymous
()

Последний case можно вынести в гвард:

simpson_method(F, A, N, H, Res, M0, M1) when N rem 2 == 0 -> ...
simpson_method(F, A, N, H, Res, M0, M1) when N rem 2 == 1 -> ...

loz ★★★★★
()
Ответ на: комментарий от matroskin

Ну так и всё. Походу дела, есть опечатки/косяки в методичке. Вполне бывает. Так что проверил, что должно быть и сравнил со своим ответом. Ну и естественно, точность зависит от числа точек. Не получилось точно, увеличь число шагов. А в отчёте укажи все пункты, где были неточности в ответах.

AlexVR ★★★★★
()
Ответ на: комментарий от matroskin

Давай 18 вариант. В ответе 0.93. По расчетам - 1.50849. Вот ссылка на расчет. Ткни мне - где я идиот и чего не могу сообразить. Я буду очень благодарен.

яхз. Вот прямоугольниками

double f(double x)
{
·   return x * sqrt(2-x);
}

int main()
{
·   double x_begin = 0.0;
·   double x_end = 2.0;
·   int n = 10000;
·   double dx = (x_end - x_begin) / n;
·   double x;
·   double s = 0.0;
·   for(
·   ·   ·   x = x_begin;
·   ·   ·   (x_begin < x_end) ? (x < x_end) : (x > x_end);
·   ·   ·   x += dx)
·   {
·   ·   s += f(x) * dx;
·   }
·   printf("x_begin = %f, x_end = %f, n = %d, s(x) = %f\n",
·   ·   ·   x_begin,
·   ·   ·   x_end,
·   ·   ·   n,
·   ·   ·   s);
·   return 0;
}

у меня тоже получилось x_begin = 0.000000, x_end = 2.000000, n = 10000, s(x) = 1.508493

единственная ошибка у тебя, ты пределы перепутал. От нижнего до верхнего. Но это только на знак влияет.

emulek
()
Ответ на: комментарий от aedeph_

Этот интеграл элементарно берётся руками.

Кеп очевидность. А как ты предполагаешь будут сверять численные вычисления с реальным ответом? Они учатся, а не используют.

AlexVR ★★★★★
()
Ответ на: комментарий от matroskin

Лор такой лор. Ни один не удосужился проверить и каждый цепляется к неправильной терминологии.

Вы преподу тоже так скажете? Препод такой такой препод, даже не удосужился посмотреть, сразу прицепился к неправильной терминологии - ну назвал я экспоненту логарифмом а электрон протоном...

«Площадь определенного интеграла» звучит даже более зажигательно...

По сабжу - хотите что бы кто то что то посмотрел, нормально поставьте задачу (какой именно интеграл берется, на какой сетке и пр.).

AIv ★★★★★
()
Ответ на: комментарий от AlexVR

ТС очевидно не сверяет, иначе бы треда не появилось.

aedeph_ ★★
()
Ответ на: комментарий от AIv

Прошу прощения за незнание. Как правильно назвать этот расчет? Я студент заочник, последний раз занимался интегралами очень давно. Ну и годный учебник по численным методам.

matroskin
() автор топика
Ответ на: комментарий от matroskin

Из того, что я бегло видел в этом треде (по ссылкам не ходил), так и назвать: «расчет определенного интеграла»

Нужно указывать подинтегральную ф-ю и в каких пределах интегрируем. И если интеграл берется руками - взять его руками и сравнить с численным результатом.

AIv ★★★★★
()

метод Симпсона.

Метод Мардж лучше и проще

d_Artagnan ★★
()

Дорогой юный друг, а приезжай-ка ко мне в офис. Мне как раз нужен умница со знанием высшей математики. Офис наш переехал с самого недавнего времени и теперь находится на Лубянской площади, прямо около Детского мира. Бизнес центр «Лопух». Заходишь, обязательно предъяви паспорт охраннику. Поднимись на пятый этаж, а девочкам не ресепшене скажи, что ты ко мне на семенар. Не забудь только пиво и Библию. И тогда я тебе расскажу про Божественный язык программирования Эрланг, введу в курс дела легковесных процессов, поведую о пресвятой базе данных mnesia, расскажу, как правельно писать http-сервера на основе mochiweb (и cowboy) и как принято парсить XML (хочешь XMERL'ом, а хочешь регулярочкой и благословением Христовым), научу по-православному использовать стандартные OTP'шные поведения, ибо во взрослой жизни могут пригодиться. Но только измальства если крещён в Православие. Если не крещён, то обучение на семенаре будет стоить 1000 у.е. за один урок. Вот как-то так. С превеликим уважением к каждой Вашей хромосоме.

Etch
()
Ответ на: комментарий от punya

Дико извеняюсь, если что-то вдруг не так. Хотел как лучше, а Вас обидил. Но всё же не обижайтесь на старого больного маразматика, будьте выше этого, преследуйте цель участия во Всенощном бдении, дабы спасти душу грешную, выведя её из Преисподни, адских сатанинских врат. Да, поможет Вам Бог наш русский и православный Иисус Христос, имя его. Аминь.

Etch
()
Ответ на: комментарий от punya

Вы смеётесь в ответ, дорогой мой друг, но абсолютно зря. Ибо расскажу я Вам вот почему. Ведь, так оно получилось, юный мой друг, что душа наша, хотите ли Вы этого или нет, вечна по определению. Бренное тело смертно, а душа вечна. И чтобы не попасть в адский катёл с чертями, Вам следует прямо сейчас начать вести более праведный образ жизни, начать причащаться, бросить пить, курить, глотать наркотики, писать на Common List. Начинайте с Библии, как втянетесь, попробуйте написать программу на Дельфи. Язык самый лучший между прочим, красивый и перспективный. К тому же ещё и кросплатформенный, ибо я компилю под Виндоус (у меня Семёрочка с митинского радиорынка на дискетах), затем на флешке переношу под Линух Убунту и делаю мультибинарник с использованием вайна. Очень хорошо получается, на самом деле. Все кастомеры очень давольны. У наших мирян как линух, так и виндоус, а у некоторых ВИПов и макинтоши. Так что не раздумывая заводите завтра будильник на 7:40, пейте кофеёк и бегите срочно в книжный. Приобщяйтесь к программированию на Дельфи и Ваша душа будет спасена. Обещаю Вам на 100%. Спасибо, что дочитали.

Etch
()
Ответ на: комментарий от Etch

Вся студия замерла в ожидании номера телефона вашего диллера...

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.