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

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

Вернуться   Форум программистов > Delphi программирование > Lazarus, Free Pascal, CodeTyphon
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2014, 19:41   #1
Loonas
Новичок
Джуниор
 
Регистрация: 03.04.2014
Сообщений: 1
Вопрос решить нелинейное уравнение методом секущих (хорд). Нелинейные уравнения (Lazarus)

Приветствую.
Имеется задание : решить нелинейное уравнение методом секущих (хорд).
Самое уравнение :


Вот текст программы, который получился у меня:
Код:
Procedure TForm1.Button1Click(Sender: TObject);
var
x0,x1,e,r,y,d:real;
function
fn(x:real):real;
begin
fn:=x+Power(x,1/2)+Power(x,1/3)-2.5;
end;
begin
x0:=StrToFloat(Edit1.Text);
x1:=StrToFloat(Edit2.Text);
e:=StrToFloat(Edit3.Text);
r:=x1-x0;
d:=y;
Repeat
y:=fn(x1);
r:=y*r/(d-y);
d:=y;
x1:=x1+r;
until abs(r)<e;
Edit4.Text:=FloatToStr(x1);
end;
Программа работает и без проблем выдает приблизительно такое решение : 0,737619

По условию задания так же нужно выполнить проверку. Вводя то же самое уравнение в калькуляторе - http://math.semestr.ru/optim/newton.php, получается ответ "В данном интервале [0,4; 1] нет корней, либо x=0. Попробуйте изменить интервал разбиения n."

И вот теперь я в сомнениях по поводу того, где же кроется ошибка или мое недопонимание : в неправильно составленном коде, в каких-то неведомых мне особенностях калькулятора или в чем-то еще?
У меня была идея проверить решение в MatLabe, но в нем я ни разу в жизни не работала и так и не смогла понять как же это осуществить.

Очень рассчитываю на какой-нибудь совет или подсказку
Loonas вне форума Ответить с цитированием
Старый 24.04.2014, 21:35   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Решение в "ВольфрамАльфа". Ответ выдает как и у Вас. Я Вольфраму больше доверяю.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 24.04.2014, 21:45   #3
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Правильное решение. Вот, в Excel в сравнении с соседними по последнему знаку:
0.737618 -0.00000248
0.737619 -0.00000049
0.737620 0.00000150
При 0.737619 - наименьшая ошибка.

И функция на интервале [0.4;1]- без приколов, монотонная.

Последний раз редактировалось type_Oleg; 24.04.2014 в 21:48.
type_Oleg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу решения уравнения методом дихотомии, комбинированным методом секущих хорд, методом простых итераций (на C++) Bloody_Mary Помощь студентам 0 14.05.2014 21:05
Решить нелинейное уравнение методом Ньютона (Паскаль) dmitrylezzz Помощь студентам 0 05.02.2014 21:07
Не могу разобраться в коде. Решить нелинейное уравнение методом половинного деления. Леонардо Помощь студентам 0 20.04.2012 12:39
Нелинейное уравнение методом хорд (подсказать) Swex Помощь студентам 4 25.03.2012 20:24
как решить нелинейное уравнение методом простых итераций??? Bonifaciy Помощь студентам 3 13.11.2008 17:30