Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.70/37: Рейтинг темы: голосов - 37, средняя оценка - 4.70
Masham
0 / 0 / 0
Регистрация: 25.04.2012
Сообщений: 15
1

Решение нелинейного уравнения. Метод Ньютона

09.07.2012, 00:05. Просмотров 6756. Ответов 9
Метки нет (Все метки)

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

Delphi
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
rm=array [1..5000] of real;
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
  function f(x:single):single;
 begin
   f:=Sin(x)+x-1;
 end;
 function f1(x:single):single;
 begin
   f1:=cos(x)+1;
 end;
 function f2(x:single):single;
 begin
   f2:=-sin(x);
 end;
 var  Xn, Dx,x,c,a,b,e:real;
     I,N:integer;
       mx:rm;
procedure TForm1.Button1Click(Sender: TObject);
begin
 a:=strtofloat(Edit1.text);
 b:=strtofloat(Edit2.text);
 e:=strtofloat(Edit3.text);
 N:=StrToInt(Edit6.Text);
 Dx:=StrToFloat(Edit5.Text);
 xn:=a;
     //Г§Г*ïîëГ*ГҐГ*ГЁГї Г¬Г*Г±Г±ГЁГўГ* Г*ðãóìåГ*òîâ
  for I:=1 to N do
  begin
    Mx[I]:=x;
    x:=x+Dx;
  end;
 
  // ïîèñê êîðГ*Гї
 
   while abc(mx[i+1]-mx[i])>e do
    begin
      x[i+1]=x[i]-((f(x[i])/(f1(x[i]))
     end;
    end;
 
end.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2012, 00:05
Ответы с готовыми решениями:

Решение нелинейного уравнения методом Ньютона
Программа для решения нелинейного уравнения методом ньютона a*x+1 gx=b искал...

Найти корень нелинейного уравнения F(x)=0 методом касательных (метод Ньютона). Крайние значения предела ([a,b]) содержащий корень и погрешность (\epsi
Найти корень нелинейного уравнения F(x)=0 методом касательных (метод Ньютона)....

Решение нелинейного уравнения методом хорд
Помогите написать программу для решения нелинейного уравнения...

Решение нелинейного уравнения методом простых итерации
Ребята, помогите решить лабораторную, пожалуйста. В программировании я полный...

Метод хорд для решения нелинейного уравнения
Проблема вылазит при нажатии на кнопку вычислить в строке, где опичывается...

9
cargerdree
10 / 10 / 1
Регистрация: 20.04.2012
Сообщений: 268
09.07.2012, 01:18 2
Masham, а чему у тебя x равно? он у тебя объявлен но не задан
0
Masham
0 / 0 / 0
Регистрация: 25.04.2012
Сообщений: 15
09.07.2012, 01:48  [ТС] 3
начальный равен левой границе, потом я массив заполняю с помощью шага, это неверно?
0
cargerdree
10 / 10 / 1
Регистрация: 20.04.2012
Сообщений: 268
09.07.2012, 01:56 4
Цитата Сообщение от Masham Посмотреть сообщение
Delphi
1
2
3
4
5
for I:=1 to N do 
begin 
Mx[I]:=x; 
x:=x+Dx; 
end;
вот тут ты вводишь переменную х типа интежер, но ты её нигде не объявляешь, в этом ошибка, при начале работы программы х присвоится вроде бы максимальное значение, так что ты должен выше перед for либо обнулить х либо (х:=0; ) либо присвоить ему какое-то определенное значение.
0
Masham
0 / 0 / 0
Регистрация: 25.04.2012
Сообщений: 15
09.07.2012, 02:06  [ТС] 5
cargerdree, спасибо большое, это я исправила, но он выдает ошибку на 40 строчке - "invalid typecast". Как этого можно избежать, не подскажите?
0
cargerdree
10 / 10 / 1
Регистрация: 20.04.2012
Сообщений: 268
09.07.2012, 02:12 6
Masham,ошибка синтаксиса, модуль пишется как abs a не abc

в 42 строчке, кода что ты скинула, там перед равно двоеточие поставь
0
Masham
0 / 0 / 0
Регистрация: 25.04.2012
Сообщений: 15
09.07.2012, 02:26  [ТС] 7
спасибо, то решило проблему, вот программа после исправления ошибок
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 x:=a;
  for I:=1 to N do
  begin
    Mx[I]:=x;
    x:=x+Dx;
  end;
 
  // ïîèñê êîðГ*Гї
 
   while abs((mx[i+1])-(mx[i]))>e do
    begin
      mx[i+1]:=mx[i]-((f(mx[i]))/(f1(mx[i])))
     end;
      edit4.Text:=FloatToStr(mx[i+1]);
не подскажите, пожалуйста, почему программа выдает,что корень равен нулю
0
Одиночка
3933 / 1858 / 337
Регистрация: 16.03.2012
Сообщений: 3,869
09.07.2012, 06:18 8
Потому что решение нелинейного уравнения Методом Ньютона делается вот так:
Delphi
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
var
  Form1: TForm1;
 
 
implementation
 
{$R *.dfm}
 
//Функция...
function f(x:single):single;
begin
  Result:=Sin(x)+x-1;
end;
 
//Производная...
function df(x:single):single;
begin
  Result:=cos(x)+1;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  x0, xn, a, e : real;
begin
  a:=strtofloat(edit1.Text);
  e:=strtofloat(edit3.Text);
 
  x0:=a;
  xn:=x0-(f(x0)/df(x0));
  // поиск корня
 
  while abs(x0-xn)>e do
  begin
    x0:=xn;
    xn:=x0-(f(x0)/df(x0));
  end;
  edit4.Text:=FloatToStr(xn);
end;
 
end.
1
Одиночка
3933 / 1858 / 337
Регистрация: 16.03.2012
Сообщений: 3,869
09.07.2012, 06:30 9
Лучший ответ Сообщение было отмечено как решение

Решение

Решил добавить скрин, а то один корень при любых значениях параметров - подозрительно:
3
Миниатюры
Решение нелинейного уравнения. Метод Ньютона  
Masham
0 / 0 / 0
Регистрация: 25.04.2012
Сообщений: 15
09.07.2012, 11:29  [ТС] 10
Вы меня очень выручили, спасибо)
0
09.07.2012, 11:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2012, 11:29

Решение уравнения методом Ньютона
пишу программу,решающую уравнение методом ньютона. уравнение вида 3ln^2(x)+...

Разностное решение уравнения теплопроводности.Явный метод
Здравствуйте. Помогите пожалуйста. Нужно немного доделать и ,если не сложно,...

Как вычислить корни нелинейного уравнения
С использованием функций Xd и Xh составить программу нахождения всех корней...


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

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

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