пятница, 8 февраля 2013 г.

задачи для решения методом половинного деления

В теле функции main() объявляются вещественные переменные a, b, e, х.Далее используется оператор цикла while, в котором применяются условные операторы:if (выражение) оператор 1; else оператор 2; которые позволяют проверить разные ли знаки у концов отрезка. Использование вышеуказанной библиотечной функции printf() дает возможность вывести на стандартное устройство вывода (монитор) сообщение об отсутствии корней или сообщение с значением корня, значением функции в этой точке и модуль разности концов отрезка.Тело функции main() зак\рывается фигурной скобкой. На этом программа заканчивается.

Программа состоит из двух функций: пользовательской функции f(x) и обязательной функции main(). Функция main() не возвращает никаких значений и поэтому она объявляется с ключевым словом void. В отличие от функции main(), функция f(x) возвращает вещественное значение и объявляется с ключевым словом float. Тела функций являются блоками и поэтому ограничены фигурными скобками.

Программа начинается с директив препроцессора, начинающихся с символа #, которые дают указание препроцессору подключить к программе заголовочные файлы с описанием тех или иных библиотечных функций. В данном случае подключается заголовочный файл stdio.h с описанием функций ввода-вывода, заголовочный файл math.h с описанием математических функций и заголовочный файл conio.h с описанием функции ожидания нажатия клавиши getch().

Нажимаем клавиши CTRL+F9 для компиляции и запуска на выполнение программы. Получаем  корень уравнения x 0,834 :

x=(a+b)/2;// вычисление х после завершения циклаprintf("x=%f F(x)=%f |a-b|=%f",x,f(x),fabs(a-b)); // вывод результатовgetch();}

// главная функцияvoid main(){float a=-3.0, b=2.0, e=0.001, x;// объявление переменныхwhile (fabs(a-b)>=e) // цикл {// проверка на разные знаки по концам отрезка if((f(a)>0&&f((a+b)/2)<0)||(f(a)<0&&f((a+b)/2)>0)) b=(a+b)/2; else if ((f((a+b)/2)>0&&f(b)<0)||(f((a+b)/2)<0&&f(b)>0)) a=(a+b)/2; else { printf("! Net kornej !"); return; getch(); } }

#include <conio.h>#include <math.h>// функция для вычисления f(х)float f(float z){ return pow(z,3)+6*pow(z,2)+6*z-7;//возвращаемое значение}

В среде программирования Borland C++ 7.0 вводим текст программы на Си ++:

Текст программы решения задачи на С++

Разработаем алгоритм программы поика решения уравнения на заданном отрезке в виде блок-схемы:

Блок-схема алгоритма поиска корня уравнения методом половинного деления (дихотомии)

Отрезок, на котором осуществляется поиск корня: [0; 1]

Уравнение имеет вид: x3 - 9x2  + 20x 11=0              

Составить программу на языке программирования С++ и блок-схему для решения следующей задачи: уточнить приближенное значение корня нелинейного уравнения f(x) = 0 на заданном отрезке [a,b]  методом половинного деления (дихотомии) с точностью e = 0.001.

Программа на С++ поиск корня нелинейного уравнения методом половинного деления (дихотомии)

Программа на С++ поиск корня нелинейного уравнения методом половинного деления (дихотомии)

Комментариев нет:

Отправить комментарий