18 / 18 / 13
Регистрация: 10.11.2010
Сообщений: 143
|
|
1 | |
Решение уравнения методом Ньютона10.11.2010, 21:12. Показов 4181. Ответов 9
Метки нет (Все метки)
пишу программу,решающую уравнение методом ньютона. уравнение вида 3ln^2(x)+ 6ln(x) - 5=0. начальное приближение нашел вручную.равно 2. написал код
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; i,n,t,result,result1:real; implementation function f(i:real):real; begin result:=3*sqr(ln(i))+6*ln(i)-5; end; function d(i:real):real; begin result1:=(6*ln(i)+6)/i; end; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var eps:real; begin eps:=0.0001; i:=strtofloat(edit1.text); n:=0; repeat i:=i-(f(i)/d(i)); memo1.lines.add('x'+floattostr(n)+'='+floattostr(i)); n:=n+1; until abs(f(i))<eps; end; end. компилируется.но возвращает ошибку деления на ноль.помогите.
0
|
10.11.2010, 21:12 | |
Ответы с готовыми решениями:
9
Решение нелинейного уравнения методом Ньютона Решение нелинейного уравнения. Метод Ньютона Найти корни уравнения методом Ньютона Решение слау методом Ньютона |
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
|
|||||||||||
11.11.2010, 08:11 | 2 | ||||||||||
Ошибка возникает на этой строке
Можно сделать так:
0
|
18 / 18 / 13
Регистрация: 10.11.2010
Сообщений: 143
|
|
11.11.2010, 08:31 [ТС] | 3 |
попробовал.смысла-то нет.она как не работала,так и не работает.только сообщает об оштбке теперь =) это не выход
0
|
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
|
|
11.11.2010, 08:36 | 4 |
Я тут полазил по просторам нета . Синтаксис функции LN таков что Ln(0) - такое неззяя.А у тебя такое получается - в строке которую я показал.Она делает все действия до нуля и прекрасно заполняет memo.
0
|
18 / 18 / 13
Регистрация: 10.11.2010
Сообщений: 143
|
|
11.11.2010, 10:06 [ТС] | 5 |
я знаю что нельзя.так как исправить
0
|
geJI<|>eP
188 / 187 / 19
Регистрация: 22.07.2010
Сообщений: 735
|
||||||
11.11.2010, 10:45 | 6 | |||||
просто когда будет 0 то пропусти операцию и продолжай дальше делай через if
0
|
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
|
||||||
11.11.2010, 11:21 | 7 | |||||
ну или убери
0
|
geJI<|>eP
188 / 187 / 19
Регистрация: 22.07.2010
Сообщений: 735
|
|
11.11.2010, 11:27 | 8 |
0
|
18 / 18 / 13
Регистрация: 10.11.2010
Сообщений: 143
|
|
11.11.2010, 20:49 [ТС] | 9 |
справился =)))) спасибо всем за помощь,правда ни один совет не работает. =D вот рабочий код
unit Unit1; interface uses Windows, Math, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Label1: TLabel; Button1: TButton; Label2: TLabel; Edit2: TEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; t,i:real; implementation {$R *.dfm} function f(i:real):real; begin result:=3*sqr(ln(i))+6*ln(i)-5; end; function d(i:real):real; begin result:=(6*ln(i)+6)/i; end; procedure TForm1.Button1Click(Sender: TObject); var eps:real; begin eps:=0.0001; i:=strtofloat(edit1.text); repeat t:=f(i)/d(i); i:=i-t; until abs(f(i))<eps; edit2.Text:=floattostr(i); end; end. может кому-то пригодится =)
1
|
2 / 2 / 1
Регистрация: 06.04.2010
Сообщений: 52
|
|
20.05.2012, 14:01 | 10 |
Поясните, пожалуйста, про переменную t. Я так и не увидел где задается её значение и какую роль она играет.
0
|
20.05.2012, 14:01 | |
20.05.2012, 14:01 | |
Помогаю со студенческими работами здесь
10
Решение СНАУ методом Ньютона Решение систем нелинейных уравнений методом Ньютона Решение нелинейных уравнений методом Ньютона и секущей Решение уравнения методом Биссекции Решение уравнения методом итерации Решение нелинейного уравнения методом хорд Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |