![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
romaric |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 1 Пол: Мужской Реальное имя: romaric Репутация: ![]() ![]() ![]() |
Есть программа отделяющая корни уравнений:
uses crt;
var
a,b,x1,x2,y1,y2,h,w,y,e:real;
n,k:integer;
function f(x:real):real;
begin
f:=Sqr(x)-(0.1*exp(x))-5;
end;
begin
a:=-3;
b:=7;
h:=0.5;
clrscr;
k:=0; x1:=a; x2:=x1+h; y1:=f(x1); y2:=f(x2);
while x2<b do
begin y2:=f(x2);
if y1*y2<0 then
begin inc (k);
writeln(k,'-й корень[',x1:4:1,';',x2:4:1,']')
end;
x1:=x2; x2:=x1+h; y1:=y2;
end;
repeat until keypressed
end.
Есть еще кусок кода, уточняющий корни: repeat
writeLn('Введите точность в пределах от 0 до 1 eps=');
readln(eps);
until (eps >0) and (eps <1);
clrscr;
{n := 0;}
repeat
c:=(f(b)*a-f(a)*b)/(f(b)-f(a));
if f(a)*f(c) > 0 then a := c
else b := c;
{Inc(n)}
until abs((f(b)*a-f(a)*b)/(f(b)-f(a))-c)<eps;
x := c;
writeLn('Корень уравнения x=', x:10:7);
write('Для выхода нажмите Enter');
{writeLn('Количество итераций = ',n);}
Никак не могу слепить их воедино, чтобы программа сначала отделяла корни, а потом их уточняла. По одиночке они работают, когда соединяю их прога зависает, видимо получается бесконечный цикл. |
![]() ![]() |
![]() |
Текстовая версия | 28.07.2025 18:12 |