Методом половинного деления
e = 1e-04; %Устанавливаем допустимую погрешность dx = 0.1; %шаг х при поиске интервала, содержащего корень a = 0.1; b = a; while fun(a)*fun(b) > 0 %Определяем интервал, на котором b = b + dx; % функция F(x) меняет знак end; a = b - dx; x = (a+b)/2; % Первое приближение корня - % середина найденного интервала I = 1; % Счетчик итераций устанавливаем в "1" X=[x]; % Формирование массивов для графиков Y=[fun(x)]; while abs(fun(x)) > e if fun(x) * fun(a) < 0 %Если функция имеет разные знаки %на концах отрезка, b = x; %сдвигаем правую границу else a = x; % иначе сдвигаем левую границу end; x = (a+b)/2; %и вычисляем следующее приближение I = I + 1; %увеличиваем количество итераций на 1 X = [X x]; Y = [Y fun(x)]; end; Str = ['Значение корня: ' num2str(x) '; Количество итераций: ' num2str(I)]; disp(Str) figure %Построение двух графиков в одном графическом окне subplot(2, 1, 1); plot(X, '-r'), grid on subplot(2, 1, 2); plot(Y, '-b'), grid on График последовательного приближения и график приближения корня Значение корня: 0.35885; Точность: 2.89711e-011 Количество итераций: 13 Вывод: Решили трансцендентные уравнения в системе Matlab, Matlab не требует слишком объемного кода для не совсем простой задачи.
|