Решение уравнения с вводом данных - PascalABC.NET
Формулировка задачи:
как нужно ее изменить что бы она была для разных уравнений. т.е
у меня три уравнения. нужно три программы.
1) х3 – 10х – 5 = 0;
2) х4 – 10х2 – 20 = 0;
3) х4 – 5х3 – 15х2 + 7 = 0;
вот для этих уравнений нужно. помогите пожалуйста
Решение задачи: «Решение уравнения с вводом данных»
textual
Листинг программы
uses crt;
const e=0.001;
type func=function(x:real):real;
function f1(x:real):real;//1 функция
begin
f1:=x*x*x-10*x-5;
end;
function pf1(x:real):real;//ее 1 производная
begin
pf1:=3*x*x-10;
end;
function f2(x:real):real;
begin
f2:=x*x*x*x-10*x*x-20;
end;
function pf2(x:real):real;
begin
pf2:=4*x*x*x-20*x;
end;
function f3(x:real):real;
begin
f3:=x*x*x*x-5*x*x*x-15*x*x+7;
end;
function pf3(x:real):real;
begin
pf3:=4*x*x*x-15*x*x-30*x;
end;
function newton(f,g:func;a,b:real):real; //функция уточнения корней
var x:real;
begin
if f(a)*g(a)>0 then x:=a
else x:=b;
while abs(f(x))>e do
begin
x:=x-f(x)/g(x);
end;
newton:=x;
end;
procedure korni(f,g:func;a,b:real);
var x,x1,x2,dx,x11,x12,eps:real;
i:integer;
begin
x1:=a;//интервал для поиска корней
x2:=b;
dx:=0.1;
x:=x1;
i:=0;
while x<=x2 do
begin
x11:=x;
x12:=x+dx;
if f(x11)*f(x12)<0 then
begin
i:=i+1;
writeln('X',i,'=',newton(f,g,x11,x12):8:5);
end;
x:=x+dx;
end;
end;
begin
korni(f1,pf1,6,9);
korni(f2,pf2,-2,2);
korni(f3,pf3,3,9);
end.
Объяснение кода листинга программы
- В функции
f1происходит вычисление значения функцииf1(x:real):real, которая представляет собой куб x, умноженный на -10x - 5. - В функции
pf1вычисляется производная функцииf1, которая равна 3x^3 - 10x. - В функции
f2происходит вычисление значения функцииf2(x:real):real, которая представляет собой куб x, умноженный на -10x - 20. - В функции
pf2вычисляется производная функцииf2, которая равна 4x^3 - 20x^2. - В функции
f3происходит вычисление значения функцииf3(x:real):real, которая представляет собой куб x, умноженный на -5x^2 - 15x + 7. - В функции
pf3вычисляется производная функцииf3, которая равна 4x^3 - 15x^2 - 30x. - В функции
newtonиспользуется метод Ньютона для уточнения корней функции. Он принимает функциюfи ее производнуюg, а также начальные приближенияaиbдля поиска корней. Он возвращает найденное значение корня. - В процедуре
korniпроисходит поиск корней функции с помощью метода Ньютона. Она принимает функциюfи ее производнуюg, а также начальные приближенияaиbдля поиска корней. Она выводит найденные корни. - В основной части программы вызывается функция
korniс соответствующими функциямиf1,f2иf3и начальными приближениями для поиска корней.