![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 07.12.2011
Сообщений: 13
|
![]()
Ребят делаю программу решения уравнений методом Ньютона. Нужно по вводу данных и выбору 1 из 4 уравнений вывести ответ. 3 из 4 уравнений либо вобще не работают либо работают коряво, кто может помочь исправить?
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,math; type TForm1 = class(TForm) lbl1: TLabel; edit1: TEdit; edit2: TEdit; lbl2: TLabel; edit3: TEdit; cbb1: TComboBox; lbl3: TLabel; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses Unit2; {$R *.dfm} function F(x:real):real; begin F:=Power(x,2)-sin(x); end; function F1(x:real):real; begin F1:=2*x-cos(x); end; function F3(x:real):real; begin F3:=power(x,4)+power(x,2)+x+1; end; function F4(x:real):real; begin F4:=4*power(x,3)+x*2+1; end; function F5(x:real):real; begin F5:=power((x-4),2)+ln(x); end; function F6(x:real):real; begin F6:=2*(x-4)+1/x; end; function F7(x:real):real; begin F7:=Power(2.71828183,x)+1/x; end; function F8(x:real):real; begin F8:=x*power(2.71828183,x-1)-(1/power(x,2)); end; procedure TForm1.Button1Click(Sender: TObject); var i,j:integer;xk,xk1,a,b,e,y:Extended ; begin a:=StrTofloat(edit1.text); b:=StrToFloat(edit2.text); e:=StrToFloat(edit3.text); xk:=a; if cbb1.text='f(x)=x^2-sin(x)' then begin y:=F(xk); while abs(y)>e do begin xk1:=xk-F(xk)/F1(xk); xk:=xk1; y:=F(xk1); end; end; if cbb1.text='f(x)=x^4+x^2+x+1' then begin y:=F3(xk); while abs(y)>e do begin xk1:=xk-F3(xk)/F4(xk); xk:=xk1; y:=F3(xk1); end; end; if cbb1.text='f(x)=(x-4)^2+ln(x)' then begin y:=F5(xk); while abs(y)>e do begin xk1:=xk-F5(xk)/F6(xk); xk:=xk1; y:=F5(xk1); end; end; if cbb1.text='f(x)=e^x+1/x' then begin y:=F7(xk); while abs(y)>e do begin xk1:=xk-F7(xk)/F8(xk); xk:=xk1; y:=F7(xk1); end; end; showmessage('x*= '+floatToStr(xk1)); ShowMessage('При производной от (xn): '+FloatToStr(y)); end; end. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 07.12.2011
Сообщений: 13
|
![]()
Очень нужна помощь ребят
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Методы оптимизации: метод Ньютона и метод наискорейшего спуска | ruslanGacurap | Помощь студентам | 0 | 30.01.2012 13:54 |
Метод Ньютона | lordsyrius | Помощь студентам | 5 | 23.11.2009 23:52 |
Метод Ньютона | NoHeart | Паскаль, Turbo Pascal, PascalABC.NET | 20 | 04.06.2009 16:29 |
Метод Ньютона | Cubar | Помощь студентам | 12 | 09.02.2008 21:28 |