Иллюстрированный самоучитель по Java


         

приведена программа, вычисляющая этот


Например, пусть задана какая-то функция f(x), имеющая на отрезке,[о;

Ь]

ровно один корень. В листинге 1. 5 приведена программа, вычисляющая этот корень приближенно методом деления пополам (бисекции, дихотомий).



Листинг 1.5.


Нахождение корня нелинейного уравнения методом бисекции

class Bisection{

static double f(double x){

return x*x*x — 3*x*x +3; // Или что-то другое 

}

public static void main(String!] args){

double a = 0.0, b = 1,5, с, y, eps = le-8; 

do{

с = 0.5 *(a + b); у = f(с);

if (Math.abs(y) < eps) break;

// Корень найден. Выходим из цикла

// Если на концах отрезка [а; с] 

// функция имеет разные знаки: 

if (f (а) * у < 0.0) b = с;

// Значит, корень здесь. Переносим точку b в точку с

//В противном случае: 

else а * с; 

// Переносим точку а в точку с

// Продолжаем, пока отрезок [а; Ь] не станет мал 

} while (Math, abs (b-a) >= eps); 

System.out.println("x = " +c+ ", f(" +c+ ") = " +y) ; 



}

Класс Bisection сложнее предыдущих примеров: в нем кроме метода main () есть еще метод вычисления функции f(x). Здесь метод f о очень прост: он вычисляет значение многочлена и возвращает его в качестве значения функции, причем все это выполняется одним оператором:

return выражение

В методе main о появился еще один новый оператор break, который просто прекращает выполнение цикла, если мы по счастливой случайности наткнулись на приближенное значение корня. Внимательный читатель заметил и появление модификатора static в объявлении метода f(). Он необходим потому, что метод f о вызывается из статического метода main о.

Третий оператор цикла — оператор for — выглядит так:

for (

списокВыр

; логНьр; слисокВыр2)

оператор

Перед выполнением цикла вычисляется список выражений

списокВыр1.

Это нуль или несколько выражений, перечисленных через запятую. Они вычисляются слева направо, и в следующем выражении уже можно использовать результат предыдущего выражения. Как правило, здесь задаются начальные значения переменным цикла.


Содержание  Назад  Вперед