Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
mixank222
1 / 1 / 1
Регистрация: 18.09.2015
Сообщений: 14
#1

Реализация метода Ньютона - Pascal ABC

18.09.2015, 20:58. Просмотров 944. Ответов 3
Метки нет (Все метки)

Добрый вечер друзья. Пролистал кучу топиков на форуме и примеров программ связанных с реализацией метода ньютона. Переделал одну из программ под свою задачку.
Условие задачки: (x-3)*cosx=1 , -2pi<=x<=2pi .
Проблема в том, что она выдает непонятное значение, а мои знания математике не велики, подскажите в чем моя ошибка, заранее спасибо .
Код программы:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
uses crt;
function f1(x:real):real; {Основная функция}
begin
f1:=((x-3)*cos(x))-1;
end;
function f2(x:real):real; {Производная от основной функции}
begin
f2:=cos(x)-((x-3)*(sin(x)));
end;
var x,a,b,e:real;
begin
clrscr;
 
a:=-6.28318530718;     {интервал }
b:=6.28318530718;
e:=0.001;
if f1(a)*f2(a)>0 then x:=a
else x:=b;
while abs(f1(x))>e do
x:=x-f1(x)/f2(x);
write('В интервале от ',a:0:5,' до ',b:0:5,' с погрешностью e=0.01 x=',x:0:6);
readln
end.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2015, 20:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Реализация метода Ньютона (Pascal ABC):

Написать алгоритм по блок схеме (Алгоритм метода Ньютона)
Прошу помогите, очень срочно! Сижу на экзамене!

Произвести интерполяцию для вольт-амперной характеристики транзистора методом Ньютона(полином Ньютона)
Напряжение на стоке, В|0|10|20|30|40|50 Ток стока,...

Метод Ньютона
Помогите пожалуйста написать программу на уравнение 0.25^x3+x-1.2502=0 ...

Метод Ньютона-Рафсона
Написать программу для решения системы нелинейных алгебраических уравнений...

видоизмененный метод ньютона
напишите мне программу (или помогите мне ее решить) для вычисления видоизменеым...

Метод Ньютона - Котеса
Скопировала из реферата. Как изменить чтобы работала программа? program...

3
Puporev
Модератор
54148 / 41781 / 28887
Регистрация: 18.05.2008
Сообщений: 98,330
18.09.2015, 21:17 #2
Цитата Сообщение от mixank222 Посмотреть сообщение
-2pi<=x<=2pi .
На этом интервале минимум 3 корня, нужно все найти или какой-то 1? Написали бы точное задание полностью.
1
mixank222
1 / 1 / 1
Регистрация: 18.09.2015
Сообщений: 14
18.09.2015, 21:31  [ТС] #3
На этом интервале минимум 3 корня, нужно все найти или какой-то 1? Написали бы точное задание полностью.
Я так понял, что все корни.
Нашел вашу програмку в одной из тем,
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
44
45
46
uses crt;
function f1(x: real): real;
begin
f1:=(((x-3)*cos(x))-1);
end;
function f2(x:real): real;
begin
f2:=cos(x)-(x-3)*sin(x);
end;
function Newton(a,b,e:real):real;
var x:real;
begin
if f1(a)*f2(a)>0 then x:=a
else x:=b;
while abs(f1(x))>e do
   begin
     x:=x-f1(x)/f2(x);
   end;
Newton:=x;
end;
 
var x,x1,x2,dx,x11,x12,eps:real;
    i:integer;
begin
clrscr;
x1:=-6.28318530718;     {интервал }
x2:=6.28318530718;
{интервал для поиска корней}
 
dx:=0.1;
eps:=0.001;
x:=x1;
i:=0;
while x<=x2 do
 begin
  x11:=x;
  x12:=x+dx;
  if F1(x11)*F1(x12)<0 then
   begin
    i:=i+1;
    writeln('X',i,'=',Newton(x11,x12,eps):8:5);
   end;
  x:=x+dx;
 end;
readln
end.
Считает отлично, но не совсем понимаю принцип работы. Возможно ли пользоваться ей для решения других функций этим же методом при изменении функции , производной и интервала ?
0
Puporev
Модератор
54148 / 41781 / 28887
Регистрация: 18.05.2008
Сообщений: 98,330
19.09.2015, 07:42 #4
Лучший ответ Сообщение было отмечено mixank222 как решение

Решение

Цитата Сообщение от mixank222 Посмотреть сообщение
Возможно ли пользоваться ей для решения других функций этим же методом при изменении функции , производной и интервала ?
Да, конечно можно, но для функций, непрерывных на выбранном интервале.
Например для Вашего случая.
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
44
uses crt;
function f1(x: real): real;
begin
f1:=(((x-3)*cos(x))-1);
end;
function f2(x:real): real;
begin
f2:=cos(x)-(x-3)*sin(x);
end;
function Newton(a,b,e:real):real;
var x:real;
begin
if f1(a)*f2(a)>0 then x:=a
else x:=b;
while abs(f1(x))>e do
   begin
     x:=x-f1(x)/f2(x);
   end;
Newton:=x;
end;
 
var x,x1,x2,dx,x11,x12,eps:real;
    i:integer;
begin
clrscr;
x1:=-2*pi; {весь интервал для поиска корней}
x2:=2*pi;
dx:=0.1;{шаг движения по интервалу}
eps:=0.001; {точность вычислкения корня}
x:=x1;
i:=0;
while x<=x2 do {движемся слева направо}
 begin
  x11:=x;
  x12:=x+dx;
  if F1(x11)*F1(x12)<0 then{если знаки функции на концах малого интервала разные}
   begin
    i:=i+1; {есть корень}
    writeln('X',i,'=',Newton(x11,x12,eps):8:5);{уточняем его}
   end;
  x:=x+dx;{к новому интервалу размером 0.1}
 end;
readln
end.
Добавлено через 15 минут
По этому же принципу можно уточнять корни и другим методом, например бисекции.
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
uses crt;
function f(x: real): real; //производную не нужно
begin
f:=(((x-3)*cos(x))-1);
end;
function Bisec(a,b,e:real):real;
var x,c:real;
begin
repeat
c:=(a+b)/2;
if F(a)*F(c)<0 then b:=c
else a:=c;
until b-a<e;
Bisec:=(a+b)/2;
end;
var x,x1,x2,dx,x11,x12,eps:real;
    i:integer;
begin
clrscr;
x1:=-2*pi; {весь интервал для поиска корней}
x2:=2*pi;
dx:=0.1;{шаг движения по интервалу}
eps:=0.001; {точность вычисления корня}
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,'=',Bisec(x11,x12,eps):8:5);{уточняем его}
   end;
  x:=x+dx;{к новому интервалу размером 0.1}
 end;
readln
end.
Получатся примерно те же корни
НьютонБисекция
-4.58008-4.58045
-1.78149-1.78123
5.187365.18752
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2015, 07:42
Привет! Вот еще темы с решениями:

Вычисления методом Ньютона
Ребят, прохожу Делфи и матан в МАИ. Мне дали задание написать программу для...

Решение по методу Ньютона
i=au+bu^2+cu^3+du^4+eu^5 значения i , a, в , с , d, e известны

Метод Ньютона (касательных)
Помогите пожалуйста написать программу на паскале... нужно решить уравнение:...

Рекурсии. Метод Ньютона
Здравствуйте! Помогите пожалуйста решить следующую задачку. Необходимо...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru