Другие языки программирования и технологии

Решение нелинейного уравнения 3^2+2x-3=0

Дано уравнение f(x)=0. Найти с точностью E= 0,0001 корни этого урав-

нения (в случае нескольких корней - уточнить значение одного из них). Для

уточнения корней использовать методы: половинного деления (дихотомии),

хорд и касательных (комбинированный), простой итерации.
Пока что это уравнение не только линейное, а еще и решаемое устно :)
2x=-6
P.S. С поправкой в комментарии

function f(x:real):real; begin f:=power(3,x)+2*x-3 end;
var a,b,c,e:real;
begin
a:=-10; b:=10; c:=0; e:=1e-6;
while(b-a>2*e)do begin c:=(a+b)/2; if(f(c)=0) then break; if f(a)*f(c)<0 then b:=c else a:=c; end;
writeln(c:0:6);
end.
АН
Алексей Николаевич
70 122
Лучший ответ
Откуда в данном случае взяться нескольким корням, если в уравнении 3^х=3-2х слева стоит функция всюду возрастающая, а в правой -всюду убывающая? Здесь, конечно же, только один вещественный корень. И вообще, тут метод касательных Ньютона, да ещё, пожалуй, (с большой натяжкой) интервальный метод имеют хоть какое-то практическое значение, а все остальные перечисленные методы давно уже пора сдать в утиль:

uses crt;
const shag = 1e-4;
dvashaga = 2e-4; ln3 = ln(3);
var i: integer; x, xnew: real;

function f(x: real): real;
begin
f := exp(ln3 * x) + 2 * x - 3
end;

begin
textbackground(white);
clrscr();
textcolor(green);
write('x: ');
textcolor(brown);
readln(x);
for i := 1 to 30000 do
begin
xnew := x - f(x) * dvashaga /
(f(x + shag) - f(x - shag));
textcolor(red);
write(i: 5);
textcolor(blue);
writeln(xnew: 22: 16);
if (abs(xnew - x) < shag) then break
else x := xnew
end
end.

И ещё точность слабая. Бери любое число из диапазона, например, [-300; 300] в роли начального приближения и быстро получишь искомый корень с машинной точностью, а не с такой примитивной как ε=1e-4. Складывается такое впечатление, что то ли большинство методических материалов морально устарело, то ли многие преподаватели до сих пор живут в отдалённых от нас эпохах прошлого. Но это так -обшие рассуждения.