Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2013, 21:18   #1
Baik1985
 
Регистрация: 14.06.2013
Сообщений: 3
По умолчанию Метод касательных

Алгоритм решения:

1. Определить три функции пользователя:
Для функции;
Для первой производной;
Для второй производной.

2. Вывести исходные данные:
Количество корней;
Точность.

3. Открыть цикл по количеству корней:
Обнулить счётчик итераций
Ввести интервал [a,b]
Ввести Х ε [a,b]

4. Определить знак выражения и выбрать формулу:
f(b)*f"(x)>0, тогда пункт 5, если нет пункт7

5. Xk =a - (f(a)/f’(a))

6. |Xk-a|<=ε, тогда пункт 10, если нет, то k:=k+1 a:=x*k

7. Xk=b-(f(b)/f’(b))

8. |Xk-b|<=ε, тогда пункт 10, если нет, то пункт 9

9. k:=k+1 b:=x*k и переход к пункту 7

10. Печать результатов:
Корень уравнения
Значение функции в точке
Количество итераций

11. Цикл
Код:
unit Unit5;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm5 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form5: TForm5;
 
implementation
 
{$R *.dfm}
 
procedure TForm5.Button1Click(Sender: TObject);
 Var a,b:real;
     x,Fx,Fx1,ka:real;
 Const e=0.001;
begin
 a:=StrToFloat(Edit1.Text);
 b:=StrToFloat(Edit2.Text);
 x:=a;
 Repeat
 Fx:=sqr(x)*x-0.2*sqr(x)+0.3*x+1.2;
 Fx1:=3*sqr(x)-0.4*x+0.3;
 ka:=Fx/Fx1;
 x:=x-ka;
 Label3.Caption:='x='+FloatToStr(x);
 Label4.Caption:='Fx='+FloatToStr(Fx);
 Label5.Caption:='Fx1='+FloatToStr(Fx1);
 Label6.Caption:='ka='+FloatToStr(ka);
 Until abs(ka)<e;
 
end;
 
end.
Baik1985 вне форума Ответить с цитированием
Старый 14.06.2013, 21:20   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

И как? Работает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.06.2013, 21:22   #3
Baik1985
 
Регистрация: 14.06.2013
Сообщений: 3
По умолчанию

во всяком случае сегодня на практике работало!)
Baik1985 вне форума Ответить с цитированием
Старый 14.06.2013, 21:44   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну это хорошо )
Кому нить обязательно пригодится. Прога короткая - разобраться не сложно будет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод касательных(Метод Ньютона) Fat_Tony Помощь студентам 0 22.01.2013 22:30
метод касательных gest Паскаль, Turbo Pascal, PascalABC.NET 3 16.04.2011 10:03
метод касательных Meri1992 Паскаль, Turbo Pascal, PascalABC.NET 0 11.12.2010 09:56
метод касательных pinya86 Microsoft Office Excel 2 13.06.2009 16:04
Метод касательных werser Помощь студентам 1 24.05.2009 14:25