Находим корень уравнения f(x)=0 на отрезке. Алгоритм дают в условии — твоя задача переписать его в программу.
f(x) непрерывна на [a,b] и f(a)·f(b) < 0 (на концах разные знаки → внутри есть корень).
c = (a+b)/2.f(c)=0 — корень найден. Иначе: если f(a)·f(c) > 0 → a = c; иначе b = c.|b−a| < ε). Ответ ≈ (a+b)/2.#include <iostream> #include <math.h> using namespace std; double a, b, c; int i, n; double f(double x){ return pow(x,4)+2*x*pow(x,2)-x-1; } int main(){ a=0; b=1; n=16; for(i=1;i<=n;i++){ c=(b+a)/2; if(f(c)==0) break; else if(f(c)*f(a)>0) a=c; else b=c; } cout << c; // ответ ≈ 0.8668 return 0; }
На экзамене меняешь только: тело f(), значения a, b, n и что выводишь.
• Метод хорд — соединяешь концы отрезка хордой, корень хорды → новая граница.
• Метод Ньютона (касательных) — итерация x = x − f(x)/f′(x) (нужна производная). 2020: вписать for(i=1;i<=n;i++) x = x - f(x)/f1(x);
• Метод прямоугольников — для интеграла: S = Σ h·f(xᵢ), где h=(b−a)/n.