Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2012, 15:48   #1
student_kgtu
 
Регистрация: 25.10.2012
Сообщений: 3
Сообщение задача по С #(метод деления пополоам)

задача по с# .
дано нелинейное уравнение вида ax-cosx=0. нужно описать метод вычисляющий решение этого уравнения методом деления пополам.
помогите пожалуйста.

Последний раз редактировалось student_kgtu; 25.10.2012 в 16:00.
student_kgtu вне форума Ответить с цитированием
Старый 25.10.2012, 15:58   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Метод деления пополам банален. Пусть у нас есть функция f, типа Func<double, double>. Пусть также у нас есть две точки a, b такие, что f(a) и f(b) имеют разные знаки. Не ограничивая общности, f(a) положительно, f(b) отрицательно.
Тогда возьмём с=(a+b)/2. Либо мы угадали и f(c)=0 (ура!), либо f(c) имеет какой-то знак. Опять же, без ограничений предположим, что f(c) отрицательно. Тогда те же рассуждения можно применить к f и паре чисел a,c. Чтобы не продолжать до бесконечности, можно договориться, что, если |a-b| меньше некоторого порога lim, в качестве корня сойдёт любое из них.

Прототип функции при этом имеет вид
Код:
double FindRootByDivision(Func<double, double> f, double a, double b, double lim)
Abstraction вне форума Ответить с цитированием
Старый 25.10.2012, 16:30   #3
student_kgtu
 
Регистрация: 25.10.2012
Сообщений: 3
По умолчанию

спасибо, с самим методом вроде разобрался ..а как его применить на этом уравнение не очень понятно.
student_kgtu вне форума Ответить с цитированием
Старый 25.10.2012, 16:35   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Сообщение от student_kgtu Посмотреть сообщение
спасибо, с самим методом вроде разобрался ..а как его применить на этом уравнение не очень понятно.
То есть? f=ax-cos(x). f(2/a)>0, f(-2/a)<0. Точность, положим, 0.0001.
Код:
double solution = FindRootByDivision(x => (a*x-Math.Cos(x)), 2/a, -2/a, 0.0001);
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача на структуру(struct)/задача на работу с файлом SevenArth Помощь студентам 0 26.04.2012 19:06
Задача о станках Задача Джонсона Aiga Помощь студентам 4 05.02.2012 21:48
Задача на оптимальный расчет маршрута (задача в презентации) в табличном процессоре Excel Toofed Помощь студентам 0 30.11.2011 01:12
Задача минимизации дисбаланса на линии сборки (задача минимакса) LenZab Microsoft Office Excel 13 13.03.2011 22:51