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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2012, 23:27   #1
Федотов
 
Регистрация: 03.11.2012
Сообщений: 5
По умолчанию задача нахождения решения уравнения методом половинного деления (дихотомией) ( c# )

Код:
namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            double a = 0.4, b = 1;
            double  f , d;
            const double x = 0.8;
            double q;
            
            
            {
                f = 2 * x * Math.Sin(x) - Math.Cos(x);
                q = (a + b) / 2;
                d = 2 * x * Math.Sin(x) - Math.Cos(x);
               
                 if (f * d < 0) 
                b = q;
                if (f * d > 0) 
                a = q;
              
               
            }
            
            Console.WriteLine(" корень {0:f7}" , q);
            Console.ReadKey();
 
        }
    }
}
решенная задача ответ = 0.7
методом половинного деления должен получится ответ 0.6533

Условия задачи :
Цитата:
f(x) = 2xsinx - cosx ;
Интервал изоляции корня : (0.4 ; 1)
и надо решить методом половинного деления

Последний раз редактировалось Федотов; 23.11.2012 в 23:48.
Федотов вне форума Ответить с цитированием
Старый 23.11.2012, 23:42   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
должен получится ответ 0.6533
Откуда такие сведения?
Кстати, а разве тут реализован метод половинного деления?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.11.2012, 23:47   #3
Федотов
 
Регистрация: 03.11.2012
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Откуда такие сведения?
Кстати, а разве тут реализован метод половинного деления?
сведения с методички: дана функция, каким методом её решать, промежуток и ответ который должен получится.

а метод половинного деления таков х = a + b / 2; если f(a) * f(b) < 0, то b=x
иначе a = x. Вроде всё записал
Федотов вне форума Ответить с цитированием
Старый 23.11.2012, 23:56   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а метод половинного деления таков
А значит ты невнимательно читаешь.
http://ru.wikipedia.org/wiki/%D0%9C%...86%D0%B8%D0%B8
Не берусь за точность воспроизведения, но:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
//Метод бисекции или метод деления отрезка пополам

namespace ConsoleApplication1
{
    class Program
    {
        static double foo(double x)
        {
            return 2 * x * Math.Sin(x) - Math.Cos(x);
        }
        static void Main(string[] args)
        {
            double a = 0.4, b = 1, x = Math.Abs(b - a) / 2;
            const double eps = 0.001;
            for (; Math.Abs(b-a) > eps; ) {
                if (Math.Abs(foo(x)) > Math.Abs(foo(a))) a = x; else b = x;
                x = (a - b) / 2;
            }

            Console.WriteLine(" корень {0}={1}", x,foo(x));
            Console.ReadKey();
                
        }
    }
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.11.2012, 00:02   #5
Федотов
 
Регистрация: 03.11.2012
Сообщений: 5
По умолчанию

[QUOTE=Stilet;1137018]А значит ты невнимательно читаешь.
http://ru.wikipedia.org/wiki/%D0%9C%...86%D0%B8%D0%B8
Не берусь за точность воспроизведения, но:


нужно использовать дихотомии ( половинного деления) . А так спасибо большое

Последний раз редактировалось Федотов; 24.11.2012 в 00:07.
Федотов вне форума Ответить с цитированием
Старый 24.11.2012, 00:57   #6
Федотов
 
Регистрация: 03.11.2012
Сообщений: 5
По умолчанию

никто не может решить ?
Федотов вне форума Ответить с цитированием
Старый 25.11.2012, 02:53   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Федотов, а чем вариант выше не устроил?! Это и есть ваша "любимая" дихотомия.

А в вашем решении сделана следующие ошибки:
во-первых, нет цикла (метод предполагает последовательное приближение к решению путём изменения интервала.
во-вторых, Вы же сами пишете:
Цитата:
х = a + b / 2;
покажите, где эта строчка в вашем коде? И ещё раз повторю, это нужно выполнять В ЦИКЛЕ!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение уравнения методом половинного деления и постойка его графика EvilHero Общие вопросы Delphi 0 20.07.2012 17:00
F(x) методом половинного деления akum905 Microsoft Office Excel 11 11.11.2011 18:37
Нахождение корней уравнения методом половинного деления в ИСР Turbo Pascal 72nikola Фриланс 2 14.06.2011 16:06
Метод половинного деления. нахождения корня уравнения. miha815 Помощь студентам 4 23.11.2009 20:58
Численные методы. Решение нелинейного уравнения методом половинного деления. gree Помощь студентам 1 11.11.2009 18:36