Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 20

Нахождение корня методом хорд. Программа не компилируется.

09.04.2014, 12:38. Показов 3036. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Плиз Кто нибуть , почти решил программу и встрял чего то , кто может помочь доделать задание ? очень прошу
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Program metod xord
var p:array[1..3] of real;
a,b,c,e,el:real;
n,i:integer;
function f(x:real):real;
var r,q,y:real;
k,nl:integer;
begin
y:=x; nl:=0;
if x<11.0 then begin nl:=round(10.0-x);
f:=4x^2+12x/x+4/x^2=47
{writeln('q=',f:6:3,' x=' ,x:6:3);}
for k:=0 to nl=1 do q:=q-1,0/(x+k);
end;
function sgn(x:real);integer;
begin sgn:=0
if x<0.0 then sgn:=-1
if x>0.0 then sgn:=1;end;
procedure chord(var a,b,x,e,el:real);
var s:integer;f1,f2,r,x1:real;
begin
x1:a;f1:=f(a);f:=sgn(f1);f2:=f=f(b);x:=b;
writeln('a=',a:2.5:-5.5,'f(a)=',f1:2.5:-5.5,'b=',b=2.5:-5.5,'f(b)=',f2:2.5:-5.5);
while abs(x-x1)>e do begin
x1:=x;x:=a-(b-a)/(f2-f1)*f1:r:=f(x)
writeln('x=',x:1,3;f(x=;r:6:3);
while abs(x-x1)>e do begin
x1:=x:=;x:=a-(b-a)/(f2-f1)*f1;r:=f(x)
writeln('x=',x:1,3;f(x=;r:6:3);
if abs(r)<e1 then exit;
if sgn (r)=s then begin a:=x;f1:=r end;
else begin b:=x; f2:=r:end
end
end;
begin repeat
write(a,b,e,el,?);readln(a,b,e,el);
write('skolko parametrov?'); readln(n);
for i:=1 to n do begin
write('p(',i,'),?');readl(p[i]);
writeln('p(',i,')=',p[i]:1:3);end;
chord(a,b,x,e,el);writeln('rezultat x=',x:10;3);
until false
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.04.2014, 12:38
Ответы с готовыми решениями:

Нахождение корня уравнения методом хорд
y=x^2-4

Нахождение корня методом хорд
Что мешает ему найти корень уравнения? Собственно сабж на скрине. Вторая производная (f2(x)), равно как и первая, определены страницей...

Нахождение корня методом хорд
Помогите дописать программу, Билдер в 5-ой строке выдаёт синтаксическую ошибку: #include&lt;iostream.h&gt; #include&lt;conio.h&gt; ...

24
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
09.04.2014, 18:31
Студворк — интернет-сервис помощи студентам
А у меня нет...
Миниатюры
Нахождение корня методом хорд. Программа не компилируется.  
0
Модератор
10479 / 5772 / 3413
Регистрация: 17.08.2012
Сообщений: 17,539
09.04.2014, 18:47
Puporev, Ваша программа успешно находит корни уравнения, если в интервале нет экстремумов функции.
Попробуйте с помощью неё найти корень уравнения x = -0.18826 в интервале -2..-0.1.

Функция f(x) = 4 * x * x + 12 * x + 12 / x + 4 / x / x - 47 равна нулю при x, равном -5.31174, -0.18826, 0.5, 2, имеет два минимума при x, равном -1 и 1, и разрыв второго рода при x=0.

Код, который получился у меня:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
var a, b, c, e: real; {нижний и верхний интервалы, точность}
    q: string; {для отвера на выход из программы}
 
function f(x:real):real; {функция}
begin
  f := 4 * x * x + 12 * x + 12 / x + 4 / x / x - 47 {сюда можно вставить свою}
end;
 
begin
  repeat
    repeat
      write('a = '); readln(a);
      write('b = '); readln(b);
      if (a >= b)
        then writeln('Error: invalid range')
        else if (f(a) * f(b) > 0) then writeln('Error: no square or > 1 square in range');
    until (a < b) and (f(a) * f(b) <= 0);
    repeat
      write('e = '); readln(e);
      if e <= 0 then writeln('Error: invalid precision')
    until e > 0;
    c := a;
    while abs(f(c)) > e do
      begin
        c := b - f(b) * (a - b) / (f(a) - f(b));
        if ((f(a) < 0) and (f(c) < 0)) or ((f(a) > 0) and (f(c) > 0))
          then a := c
          else b := c
      end;
    writeln('Square: x = ', c, ', f(x) = ', f(c));
  write('Exit? '); readln(q)
  until q = 'y'
end.
Если интервал не содержит точку разрыва - всё считает. Однако, лучше, если в интервал не будет входить промежуток -0.01..0.01, на этом участке проихводная функции слишком велика, получается большое количество итераций.
0
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 20
09.04.2014, 18:49  [ТС]
Извените за пояснечество оч надо было сПАСИБО ОГОМЕННОЕ
0
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
09.04.2014, 19:02
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
в интервале -2..-0.1.
Но в задании написано
x0=1 и Хк=3
0
Модератор
10479 / 5772 / 3413
Регистрация: 17.08.2012
Сообщений: 17,539
09.04.2014, 20:15
Puporev, да и ладно. Просто метод хорд не очень хорошо работает, если в интервале есть экстремумы. Всё время норовит либо корень за пределами интервала искать, либо в качестве корня выдаёт границу интервала... Да и пусть с ним.

Qloe, ох, нет... Выложил тестовый вариант... Там условие не то... Так верно:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
var a, b, c, e: real; {нижний и верхний интервалы, точность}
    q: string; {для отвера на выход из программы}
 
function f(x:real):real; {функция}
begin
  f := 4 * x * x + 12 * x + 12 / x + 4 / x / x - 47 {сюда можно вставить свою}
end;
 
begin
  repeat
    repeat
      write('a = '); readln(a);
      write('b = '); readln(b);
      if (a >= b)
        then writeln('Error: invalid range')
        else if (f(a) * f(b) > 0) then writeln('Error: no root or > 1 roots in range');
    until (a < b) and (f(a) * f(b) <= 0);
    repeat
      write('e = '); readln(e);
      if e <= 0 then writeln('Error: invalid precision')
    until e > 0;
    c := (b + a) / 2;
    repeat
      if ((f(a) < 0) and (f(c) < 0)) or ((f(a) > 0) and (f(c) > 0))
        then a := c
        else b := c;
      c := b - f(b) * (a - b) / (f(a) - f(b))
    until (abs(c - a) < e) or (abs(b - c) < e);
    writeln('Root: x = ', c);
  write('Exit? '); readln(q)
  until q = 'y'
end.
Puporev, более-менее стабильный код получился у меня... Не шалит...

Добавлено через 9 минут
Нет... плохо работает... Не точно.

Добавлено через 36 минут
Вот, скрестил с методом половинного деления... Стало точно.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
var a, b, c, e: real; {нижний и верхний интервалы, точность}
    q: string; {для отвера на выход из программы}
 
function f(x:real):real; {функция}
begin
  f := 4 * x * x + 12 * x + 12 / x + 4 / x / x - 47 {сюда можно вставить свою}
end;
 
begin
  repeat
    repeat
      write('a = '); readln(a);
      write('b = '); readln(b);
      if (a >= b)
        then writeln('Error: invalid range')
        else if (f(a) * f(b) > 0) then writeln('Error: no root or > 1 roots in range');
    until (a < b) and (f(a) * f(b) <= 0);
    repeat
      write('e = '); readln(e);
      if e <= 0 then writeln('Error: invalid precision')
    until e > 0;
    while abs(b - a) > e do
      begin
      c := b - f(b) * (a - b) / (f(a) - f(b));
      if ((f(a) < 0) and (f(c) < 0)) or ((f(a) > 0) and (f(c) > 0))
        then a := c
        else b := c;
      if c - a < e then b := (b + c) / 2;
      if b - c < e then a := (a + c) / 2
    end;
    writeln('Root: x = ', c:0:6, ',  f(x) = ', f(c):0:18);
  write('Exit? '); readln(q)
  until q = 'y'
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.04.2014, 20:15

Как реализовать нахождение корня уравнения методом секущей и методом хорд
никак не могу понять эти методы

Нахождение корня уравнения методом хорд
Описать функционал (horda f a b eps), который методом хорд находит корень Xk,уравнения F(x)=0 на отрезке осуществования корня с точностью...

Программа не компилируется (нахождение корней уравнения методом Ньютона)
Пожалуйста помогите найти ошибки в коде. Буду признательна!) #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;stdlib.h&gt; ...

Поиск корня уравнения методом половинного деления и методом хорд
Нужно найти корень уравнения ctg(1,05x)-x^2=0 в отрезке . что-то не получается седлать это методом хорд. Поможите ? Вот,что я написал ...

Нахождение корня уравнения методами итераций, хорд и Ньютона
1. Найти хотя бы один корень заданного уравнения с относительной точностью 0.1%. Реализовать на Pascal-метод простых итераций для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru