Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/20: Рейтинг темы: голосов - 20, средняя оценка - 4.95
18 / 18 / 13
Регистрация: 10.11.2010
Сообщений: 143
1

Решение уравнения методом Ньютона

10.11.2010, 21:12. Показов 4181. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
пишу программу,решающую уравнение методом ньютона. уравнение вида 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.11.2010, 21:12
Ответы с готовыми решениями:

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

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

Найти корни уравнения методом Ньютона
Ребята помогите построить программу которая будет считать корни ниже переведенного уравнения за...

Решение слау методом Ньютона
нужно решить систему из 3 уравнений по методу ньютона,метод дан в архиве,сделал всё как описано,но...

9
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
11.11.2010, 08:11 2
Ошибка возникает на этой строке
Delphi
1
result:=3*sqr(ln(i))+6*ln(i)-5;
Почему не знаю,вроде деления здесь нет.
Можно сделать так:
Delphi
1
2
3
4
5
6
7
8
9
function f(i:real):real;
begin
try
result:=3*sqr(ln(i))+6*ln(i)-5;
except
 ShowMessage('ошибка');
 Exit;
end;
end;
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
Цитата Сообщение от elluminate Посмотреть сообщение
я знаю что нельзя.так как исправить
просто когда будет 0 то пропусти операцию и продолжай дальше делай через if

Delphi
1
2
3
4
5
6
7
8
9
10
function f(i:real):real;
begin
if i<>0 then result:=3*sqr(ln(i))+6*ln(i)-5
else result:=-10000000//типа бесконечность
end;
function d(i:real):real;
begin
if i<>0 then result1:=(6*ln(i)+6)/i;//Вот тут есть деление на 0
else result1:=-10000000//типа бесконечность
end;
0
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
11.11.2010, 11:21 7
ну или убери
Delphi
1
 ShowMessage('ошибка');
и все тебе же отрицательные то же не покатят
0
geJI<|>eP
188 / 187 / 19
Регистрация: 22.07.2010
Сообщений: 735
11.11.2010, 11:27 8
Цитата Сообщение от igoriy Посмотреть сообщение
ну или убери
Delphi
1
 ShowMessage('ошибка');
и все тебе же отрицательные то же не покатят
Да точно завтыкал i>0 надо
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2012, 14:01
Помогаю со студенческими работами здесь

Решение СНАУ методом Ньютона
Здравствуйте уважаемые эксперты. Вообщем задание написано в теме. У меня сразу же возникли вопросы...

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

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

Решение уравнения методом Биссекции
Программа ищет корень уравнения на отрезке . Помогите найти ошибку почему то икс никак не может...

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

Решение нелинейного уравнения методом хорд
Помогите написать программу для решения нелинейного уравнения sqrt(x)-cos(0,387*x) по данной схеме.


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru