Расчет в пакете MATLAB
Функция отделения и уточнения корней function RTS=dixotomia(pol,eps); % метод половинного деления для решения алгебраических уравнений % функция определяет интервалы изоляции действительных корней % формирует вектор действительных корней уравнения % левая граница интервала, содержащего все корни уравнения A0=-1-max(abs(pol))/(abs(pol(1))); disp(A0) % правая граница интервала, содержащего все корни уравнения A1=-A0; disp(A1) d=A0; d1=d; i=1; while d<=A1 % цикл отделения действительных корней (шаг 0.1) d=d+0.1; if polyval(pol,d)*polyval(pol,d1)<0 K(i)=d1;K(i+1)=d; i=i+2; end; d1=d; end; disp(K); % количество действительных корней nrts=i-1; i=1; j=1; while i<nrts % цикл уточнения действительных корней X=K(i); X1=K(i+1); x=X; x1=X1; % метод половинного деления while abs(polyval(pol,x)-polyval(pol,x1))>eps x1=X; x=(X+X1)/2; if polyval(pol,x)*polyval(pol,x1)>0 X=(X+X1)/2; else X1=(X+X1)/2; end; end; % вектор, содержащий действительные корни уравнения RTS(j)=x1; i=i+2; j=j+1; End RTS; End Результаты вычислений: >> dixotomia([1 3 -12],0.00001) – вызов функции; полином задается значениями коэффициентов -13 – левая граница интервала, содержащего корни уравнения 13 – правая граница интервала, содержащего корни уравнения -5.3000 -5.2000 2.2000 2.3000 – интервалы изоляции корней RTS = -5.2749 2.2749 – корни уравнения В арианты лабораторных работ
Лабораторная работа № 2 УТОЧНЕНИЕ ПРИБЛИЖЕННОГО КОРНЯ УРАВНЕНИЯ
|