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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2008, 19:11   #1
Tomoyo
Пользователь
 
Регистрация: 04.11.2008
Сообщений: 32
По умолчанию Метод простых итераций в Delphi

Вот полное задание:написать программу, предназначенную для графической визуализации функции, соответствующей выданному варианту. По графику функции провести исследование: на выбранной области допустимых значений указать количество и определить интервалы локализации нулей функции, максимумов и минимумов. Заданным методом решения нелинейных алгебраических уравнений на выбранном интервале локализации уточнить нуль функции (используя исходную функцию) или экстремум (используя производную исходной функции). Вычисление значений и производных реализовать с использованием процедур или функций, определяемых пользователем. При построении графиков и вычислении значений и производных функций осуществлять проверку аргумента на принадлежность области допустимых значений.
Метод решения-метод простых итераций.
Функция: y=a0+a1*x+a2*x^2+a3*ln(a4*x)+a5*ln( a6*x^2)
Tomoyo вне форума Ответить с цитированием
Старый 25.11.2008, 15:56   #2
Tomoyo
Пользователь
 
Регистрация: 04.11.2008
Сообщений: 32
По умолчанию

Я не знаю, как написать решение уравнения методом простых итераций. Остальное несложно для меня, сама напишу.
Tomoyo вне форума Ответить с цитированием
Старый 25.11.2008, 16:32   #3
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Ищем корень уравнения: y(x)=0
Для этого функцию преобразуем к виду: x=F(x)
Далее уточняем корень методом простой итерации:
Код:
x:=...//начальное приближение корня
repeat
  x0:=x;
  x:=F(x0);
until abs(x0-x) <= epsilon;
_Dmitry вне форума Ответить с цитированием
Старый 25.11.2008, 16:35   #4
Tomoyo
Пользователь
 
Регистрация: 04.11.2008
Сообщений: 32
По умолчанию

а уравнение это к чему приравнивать?к х что ли?
Tomoyo вне форума Ответить с цитированием
Старый 25.11.2008, 16:43   #5
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Цитата:
Заданным методом решения нелинейных алгебраических уравнений на выбранном интервале локализации уточнить нуль функции
Функцию приравниваем к нулю: y(x)=0
Затем из этого уравнения выражаем X
Получаем уравнение X=F(x)
Функция F(x) и используется в методе простой итерации для уточнения корня.

---
Краткую теорию посмотрите здесь http://www.exponenta.ru/educat/syste...nonlinear2.asp

Последний раз редактировалось _Dmitry; 25.11.2008 в 16:49.
_Dmitry вне форума Ответить с цитированием
Старый 27.11.2008, 23:53   #6
Tomoyo
Пользователь
 
Регистрация: 04.11.2008
Сообщений: 32
По умолчанию

Высвечивает ошибку в самом уравнении. Может я вообще все неправильно сделала?((
unit Unit11;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm11 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form11: TForm11;

implementation

{$R *.dfm}

procedure TForm11.Button1Click(Sender: TObject);
Var a0,a1,a2,a3,a4,a5,a6,x0,x:real;
epsilon,y:integer;
begin
x0:=strtoint(edit1.Text);
epsilon:=strtoint(edit2.Text);
a0:=strtoint(edit3.Text);
a1:=strtoint(edit4.Text);
a2:=strtoint(edit5.Text);
a3:=strtoint(edit6.Text);
a4:=strtoint(edit7.Text);
a5:=strtoint(edit8.Text);
a6:=strtoint(edit10.Text);
y:=a0+a1*x+a2*x*x+a3*ln(a4*x)+a5*ln (a6*x*x);
y(x):=0;
repeat
x0:=x;
x*a1:=-a0-a2*x*x-a3*ln(a4*x)-a5*ln(a6*x*x);
until
abs(x0-x)<=epsilon;
end;



end.
Tomoyo вне форума Ответить с цитированием
Старый 28.11.2008, 20:15   #7
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  a0,a1,a2,a3,a4,a5,a6,x0,x,epsilon: real;
begin
  epsilon:=0.0001;
  a0:=-10;
  a1:=1;
  a2:=0.01;
  a3:=-0.5;
  a4:=1;
  a5:=-1;
  a6:=1;
  x:=10;
  repeat
    x0:=x;
    x:=-(a0+a2*x*x+a3*ln(a4*x)+a5*ln(a6*x*x))/a1;
  until abs(x0-x)<=epsilon;
  Label1.Caption:=FloatToStr(x);
end;
Но только имейте ввиду, алгоритм не будет работать при любых коэффициентах функции, т.к. у него есть определённая область сходимости: |F'(x)|<1.

Последний раз редактировалось _Dmitry; 28.11.2008 в 20:17.
_Dmitry вне форума Ответить с цитированием
Старый 28.11.2008, 21:23   #8
Tomoyo
Пользователь
 
Регистрация: 04.11.2008
Сообщений: 32
По умолчанию

Написал "Invalid floating point operation"
Tomoyo вне форума Ответить с цитированием
Старый 28.11.2008, 21:37   #9
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

1. Алгоритм не будет работать при любых коэффициентах функции, т.к. у него есть определённая область сходимости: |F'(x)|<1.
2. Если выходит сообщение "Invalid floating point operation", смотри пункт 1.
_Dmitry вне форума Ответить с цитированием
Старый 28.11.2008, 21:41   #10
Tomoyo
Пользователь
 
Регистрация: 04.11.2008
Сообщений: 32
По умолчанию

Так было выполнено это условие,я проверила. И с вашими числами оно выполняется, но эта надпись высвечивается.
Tomoyo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как решить нелинейное уравнение методом простых итераций??? Bonifaciy Помощь студентам 3 13.11.2008 17:30
текст программы для решения нелинейного уравнения методом простых итераций Dyst Помощь студентам 2 14.05.2008 22:00
Cимплекс метод на Delphi Diamand Помощь студентам 3 14.03.2008 14:51
Уравнение метода итераций SPQR Помощь студентам 2 12.11.2007 01:26