|
13 / 13 / 1
Регистрация: 06.06.2011
Сообщений: 157
|
|||||||||||||||||
Функции09.12.2013, 20:59. Показов 2652. Ответов 10
Метки нет (Все метки)
Добрый день!
Выполняю очередную лабу Кодю недавно. не могу сообразить, как реализовать функцию описанную ниже: Кликните здесь для просмотра всего текста
вся лаборатория Кликните здесь для просмотра всего текста
Мои попытки сделать что-то: Кликните здесь для просмотра всего текста
Еще не могу понять почему не считается функция если я делаю так: Кликните здесь для просмотра всего текста
Огромное спасибо тем, кто не оставляет без внимания этот пост. Стараемся как можем.
0
|
|||||||||||||||||
| 09.12.2013, 20:59 | |
|
Ответы с готовыми решениями:
10
А почему ошибка, что функции print и read не определены в функции main()?
|
|
13 / 13 / 1
Регистрация: 06.06.2011
Сообщений: 157
|
||||||||||||||||
| 10.12.2013, 12:28 [ТС] | ||||||||||||||||
|
Лабораторная работа:
Кликните здесь для просмотра всего текста
Краткие теоретические сведения. Не все уравнения могут быть решены аналитически (то есть путём тождественных преобразований). В таких случаях используют численные методы, которые позволяют представляют собой алгоритм, позволяющий найти приближённое значение корня с некоторой наперёд заданной точностью. Рассмотрим несколько методов для нахождения корня функции f(x) = 0. Метод половинного деления (или, что то же самое, метод дихотомии) рассмотрен в Лекции_2. Метод хорд работает аналогично методу дихотомии, но отрезок [a, b] делится точкой с не пополам. Проведём хорду АВ, где А(а, f(a)), B(b, f(b)), а точка С(с, 0) получается при пересечении этой хорды с осью абсцисс. Формулу для с вывести нетрудно, используя уравнение прямой АВ и подставив в него у =0. c=a-f(a)*b-a/f(b)-f(a) И метод хорд, и метод половинного деления применимы при условии, что функция f(x) непрерывна на некотором отрезке[a, b] и принимает на границах значения разных знаков. В противном случае метод применять нельзя – может возникнуть либо зацикливание, либо получен неверный ответ. Алгоритм уточнения значения локализованного корня функции f(x) на отрезке[a, b] с точностью 0<ε<1 (считаем, что функция отвечает поставленным выше условиям): 1. Задать a, b и точность ε. 2. Вычислить значение с (точка разбиения отрезка) в с соответствии требуемым методом. 3. Пока расстояние между точками a и b превышает заданную точность и f(c)≠0 • Выяснить, на каком из отрезков [a, с] или [с, b] находится корень (признаком наличия корня на отрезке [a, с] служит условие f(a)f(c)<0 , тогда границу b необходимо перенести в точку с, в противном случае корень находится на отрезке [с, b] и надо переносить точку a). • Вычислить значение с для нового отрезка. 4. По окончании цикла сообщить значение с Метод простых итераций состоит в том, что функция f(x) преобразуется к виду f(x) = g(x) – x , а уравнение f(x) = 0 заменяется эквивалентным уравнением x = g(x) . Взяв в качестве начального приближения некоторое , вычисляется , затем , и так далее до тех пор, пока . Для сходимости метода требуется, чтобы на отрезке [a, b], но, в случае сходимости метода решение получается за небольшое количество итераций, будем считать, что, если решение не получено за некоторое количество итераций (например, 20), то данный метод неприменим. Алгоритм поиска корня функции f(x) с точностью 0<ε<1 (считаем, что функция отвечает поставленным выше условиям): 1. Задать начальное приближение x0 и точность ε. 2. Вычислить значение x = g(x0). 3. Пока расстояние между точками x и x0 превышает заданную точность • Заменить старое значение x0 на только что вычисленное значение x. • Вычислить значение x = g(x0). 4. По окончании цикла сообщить значение x Также с использованием численных методов можно вычислять определённые интегралы . Рассмотрим метод прямоугольников и метод трапеций. Метод прямоугольников основан на замене криволинейной фигуры ступенчатой. График к задаче и формула интеграла: Для достаточно малого шага разбиения разницы между результатом вычисления по формулам нет, поскольку определённым интегралом называется предел интегральных сумм (частным случаем которых являются вышеприведённые формулы), не зависящий ни от способа разбиения интервала [a; b] на отрезки, не превышающие длины h, ни от выбора точки, в которой вычисляется значение функции f. Поэтому для того, чтобы вычислить интеграл с определённой степенью точности, необходимо уменьшать шаг разбиения (или, что то же самое, увеличивать количество точек разбиения). При этом для функции f, интегрируемой на отрезке [a; b], разность между очередной интегральной суммой S и предыдущим приближением S0 стремится к нулю. Таким образом, если , можно считать, что нужная точность вычислений достигнута. При вычислении очередной интегральной суммы не следует выносить общий множитель h за скобки. Дело в том, при достаточно большом количестве точек разбиения n сумма может оказаться слишком велика и произойдёт вещественное переполнение. В остальном принцип вычисления определённого интеграла с заданной точностью остаётся тем же самым. Алгоритм вычисления площади криволинейной фигуры с заданной точностью: 1. Задать точность ε, пределы интегрирования a, b и первоначальное количество точек разбиения n. 2. Вычислить шаг разбиения . 3. Вычислить первоначальное приближение в соответствии с формулой (прямоугольников или трапеций) для заданного h (или для заданного n – особой разницы нет). 4. Следующее приближение S рассчитать по аналогичной формуле, увеличив количество точек разбиения n в 2 раза и вычислив новый шаг разбиения. 5. Пока делать • Присвоить • Рассчитать следующее приближение S, увеличив количество точек разбиения n в 2 раза и вычислив новый шаг. 6. По окончании цикла сообщить S Задание на лабораторную работу В таблице приведены выражения для f(x) в предположении, что решается уравнение f(x) = 0. Все уравнения предположительно имеют корни на отрезке [0, 2]: Кликните здесь для просмотра всего текста
В программе следует: 1. Объявить и определить функции в соответствии с номером варианта и смыслом решаемой задачи • f(x) или g(x) • dihot(a, b, eps) функция для нахождения корня методом дихотомии • hord(a, b, eps) функция для нахождения корня методом хорд • iter(x, eps) функция для нахождения корня методом итераций • rectangle(a, b, eps) функция для нахождения или rectangle(a, b, n) интегральная сумма для n слагаемых или rectangle(a, b, h) интегральная сумма для разбиения с шагом h • trapeze(a, b, eps) функция для нахождения площади фигуры методом трапеций с заданной точностью или trapeze(a, b, n) сумма для n трапеций или trapeze(a, b, h) сумма для трапеций с высотой h Функция f(x) (или g(x)) в случае необходимости вызывается из функций dihot( ), hord( ), iter( ), rectangle( ), trapeze( ). 2. Найти такой отрезок [a, b] , на котором функция f(x) принимает значения разных знаков (см. Лекцию_2, при этом поиск начала и конца отрезка оформить также в виде функций); в крайнем случае, убедиться, что на заданном с клавиатуры отрезке [a, b] функция принимает значения разных знаков; 3. Вычислить R – корень уравнения с заданной точностью (значение точности eps>0 снять с клавиатуры) в соответствии с номером варианта. 4. Выбрать из отрезков [a, R] и [R, b] тот, на котором функция f(x)>0 и найти площадь фигуры, ограниченной графиком функции f(x), осью абсцисс и прямой x = a (или x = b). Метод вычисления площади указан в номере варианта. При этом допустимо либо написать функцию, вычисляющую площадь фигуры с заданной точностью автоматически, либо написать соответствующую функцию для вычисления суммы. В моем случаи: 1) Метод решения уравнения: дихотомии (или половинного деления) 2)Метод вычисления площади: прямоугольников Объявить: • f(x) или g(x) • dihot(a, b, eps) функция для нахождения корня методом дихотомии и получается • rectangle(a, b, eps) функция для нахождения площади фигуры методом прямоугольников с заданной точностью Критерии оценивания работы В таблице приведены критерии, по которым студент может оценить свою работу. Наличие логических ошибок, например: при подстановке значения корня, полученного в результате работы программы, в уравнение, получается значение, отличающееся от нуля на величину, превышающую вычисленный корень не принадлежит интервалу [0, 2] отрицательное или слишком большое значение при вычислении интеграла зацикливание программы или возникновение ошибки времени выполнения Объявлены и определены функции f(x) или g(x) dihot(a, b, eps) hord(a, b, eps) или iter(x, eps) (в зависимости от варианта) rectangle( ) или trapeze( ) (в зависимости от варианта ) функция поиска интервала, на котором содержится корень (не обязательно! Но желательно) Я попробовал сделать, но что-то не получается. Запутался. Вообще не знаю правильно ли я сделал.
0
|
||||||||||||||||
|
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
|
|||
| 10.12.2013, 21:12 | |||
|
1
|
|||
|
13 / 13 / 1
Регистрация: 06.06.2011
Сообщений: 157
|
|||||||
| 11.12.2013, 13:08 [ТС] | |||||||
|
Если я правильно понимаю, то должно быть так:
0
|
|||||||
|
13 / 13 / 1
Регистрация: 06.06.2011
Сообщений: 157
|
||||||||||||
| 11.12.2013, 14:06 [ТС] | ||||||||||||
|
Должно быть по другому. если опираться на это: Кликните здесь для просмотра всего текста
1.3. Метод половинного деления Метод половинного деления применяется для уточнения корня на выделенном участке , где этот корень является единст- венным . Это один из простых методов нахождения корней не- линейных уравнений . Метод заключается в следующем . Отрезок [ a, b ], на котором существует точка пересечения графика функции f (x) с осью Ох , делят пополам ( рис 1.5.). Полученное значение х1= ( a + b)/2 Рис . 1.5. Геометрическая иллюстрация метода половинного деления принимают в качестве начального приближения , и вычисляют значение функции f (x1), при этом , если f(x 1) ≠ 0, то выбирают тот из подынтервалов [ a, x1 ] или [ x1, b], на концах которого функ- ция f (x) имеет противоположные знаки . На рис . 1.5. этим отрез- ком будет [ a,x 1]. Полученный отрезок переименовывают в [ a, b] и снова делят пополам , затем проводят тот же анализ , что и при первоначаль- ном делении . Деления сужающего отрезка , проверку и выбор повторяют до тех пор , пока длина отрезка , на концах которого функция имеет противоположные знаки , не станет меньше за- данной точности вычислений ε . Проверку условия противопо- ложности знаков функций выполняют посредством неравенства f (a) ⋅ f (x) ≤ 0, а условия остановки вычислений – путем провер- ки неравенства b – а≤ ε . Рис .1.6. Блок -схема алгоритма метода половинного деления Можно также проводить оценку значений функции f (x) после каждой i -й итерации , пока одно из них по модулю не станет меньше заданного числа ε , т.е. f (xi) < ε . Блок -схема алгоритма метода половинного деления изобра- жена на рис . 1.6. Здесь сужение отрезка проводится путем за- мены границы a или b на текущее приближенное значение кор- ня х. Метод половинного деления прост и очень надежен . Он схо- дится для любых непрерывных функций . Недостатком метода половинного деления является медлен- ная сходимость вычислительного процесса . Следовательно , метод половинного деления целесообразно применять , когда требуется высокая надежность счета , а ско- рость сходимости несущественна . Но если я делаю как по теории, то программа "стоит":
0
|
||||||||||||
|
13 / 13 / 1
Регистрация: 06.06.2011
Сообщений: 157
|
||||||||||||||||
| 11.12.2013, 16:48 [ТС] | ||||||||||||||||
|
Мой итог:
функция для нахождения корня методом дихотомии. Правда все еще не уверен верно ли. Кликните здесь для просмотра всего текста
И функция для нахождения площади фигуры методом прямоугольников с заданной точностью. С ней немного не уверен, хотелось бы услышать советов. или подправили если не так. Кликните здесь для просмотра всего текста
Первая попытка сделать, кажется совсем не в том направлении пошел.
Спасибо всем, кто не оставляет без внимания пост.
0
|
||||||||||||||||
|
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
|
|
| 11.12.2013, 16:52 | |
|
В Вашей блок-схеме цикл выполняется пока условие ложно, в Си - всегда пока условие истинно.
1
|
|
|
13 / 13 / 1
Регистрация: 06.06.2011
Сообщений: 157
|
|
| 11.12.2013, 16:56 [ТС] | |
|
0
|
|
|
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
|
|||
| 11.12.2013, 20:45 | |||
|
В блок-схеме же условиеам для продолжения цикла может быть как истинность какого-либо выражения, так и его ложность. В Вашем варианте условие для продолжения цикла должно быть ложным, поэтому простое копирование "теории" не дало нужный результат.
1
|
|||
|
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
|
|||||||||
| 11.12.2013, 20:58 | |||||||||
1
|
|||||||||
|
13 / 13 / 1
Регистрация: 06.06.2011
Сообщений: 157
|
|
| 13.12.2013, 17:45 [ТС] | |
|
0
|
|
| 13.12.2013, 17:45 | |
|
Помогаю со студенческими работами здесь
11
Найти среднее арифметическое значений функции f(x) в точках а, b, (a+b)/2, используя обращение к функции Найти сумму значений функции, используя функции с переменным числом параметров Вычислить функции с использованием их разложения в степенной ряд. Функции и Перегрузка функций Различные функции, для которых можно создать массив указателей на функции Вызов функции внутри другой функции с передачей локальной переменной по ссылке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|