Yurka
Удален
|
Вот такая програмка: нужно описать рекурсивную функцию (f, a, b, eps), которая методом деления отрезка пополам находит с точностью eps корень уравнения f(x)=0 на [a, b]. Считать, что eps>0, a<b, f(b)<0 i f(x) - непрерывная.
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 3 июля 2005 18:32 | IP
|
|
vix
Удален
|
А какая функция то хоть? f(x)
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 4 июля 2005 17:21 | IP
|
|
sprite
Удален
|
#include <iostream.h> typedef float func_type; typedef float var_type; var_type root = 0; func_type f( var_type x) { x = ;//сюда вставляете вашу настоящую функцию return x; } var_type find_root( var_type a, var_type b, var_type e ); int main( void ) { var_type a = a0; // интервал var_type b = b0; var_type e = e0; //точность if ( f(a)*f(b) > 0 ) cout<<"Плохой интервал"; else { root = find_root( a, b, e ); cout<<"Root: "<<root; } return 0; } find_root( var_type a, var_type b, var_type e ) { var_type k = a; k = ( a + b ) / 2; if ( ( k - a ) < e ) //базис рекурсии { root = k; return; } if ( f(k)*f(a) > 0 ) //рекурсивный переход root( a, k, e ); else root( k, b, e); }
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 14 июля 2005 14:09 | IP
|
|
sprite
Удален
|
но это конечно же извращение я бы сделал итерационную функцию а не рекурсию
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 14 июля 2005 14:10 | IP
|
|
|