18.10.2013, 20:26 | #1 (permalink) |
Member
Регистрация: 18.10.2013
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Решение уравнений методом Ньютона
Вот кое что попробывал: |
18.10.2013, 20:26 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Форум наполнен схожими обсуждениями Система для решения уравнений методом хорд на C/C++ Решение системы уравнений в Экселе Методом Рунге-Кутта найти решение дифференциальных уравнений Решение кубического уравнения методом хорд, Python |
19.10.2013, 18:23 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
На всякий случай - проверьте условие задачи. Может быть, там не "-1", а "+1"? Тогда вещественный корень будет единственным. Кроме того, Вы АБСОЛЮТНО неправильно задаёте функции. Каждая (да-да, именно КАЖДАЯ) должна иметь структуру типа: Код:
Function FuFuFu(ppp:real):real; begin .... .... .... FuFuFu:=.... end; (Что-то похожее, т.е. перечень заголовков, используется при написании модулей, но и там в другом разделе функция задается в виде приведенной выше структуры. Ну или если функция F1 является внутренней по отношению к F, а функция F2 - внутренней по отношению к F1. Но в этом случае там должно быть три вложенных блока, а не один, и, кроме того, вызвать из основной программы F1 и F2 в таком случае невозможно). |
|
20.10.2013, 15:28 | #3 (permalink) | |
Member
Регистрация: 18.10.2013
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
|
|
20.10.2013, 18:48 | #5 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Не могу сказать, ибо хода не понимаю. Вы что, пытаетесь в одну программу оба метода засадить? Допустим. Но, во-первых, там F1 (первая производная) сосчитана неверно (откуда Вы взяли коэффициент 64? Должен быть 16), а во-вторых - ну на кой там вторая производная?
Цитата:
Но корень там вовсе не "где-то 0.14", а около -0.1. Между прочим, в случае одного вещественного корня кубическое уравнение решается точно методом Кардано, и это можно использовать для контроля правильности результата работы итерационных программ. Так вот, формула Кардано даёт х=-0.112085... Теперь решим задачу методом Ньютона: Код:
Const e=0.001; Var x0_old,x0_new,D:Real; Function F(z:real):real; begin F:=z*z*z*2-z*z*8+z*8+1; end; Function F1(z:real):real; begin F1:=z*z*6-z*16+8; end; Begin x0_old:=0; Repeat x0_new:=x0_old-F(x0_old)/F1(x0_old); D:=Abs(x0_old-x0_new); x0_old:=x0_new; Until D<e; Writeln('Result: x = ',x0_new:0:3); Readln End. |
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
21.10.2013, 15:34 | #6 (permalink) | |
Member
Регистрация: 18.10.2013
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
|
|
21.10.2013, 16:06 | #7 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ни в малейшей степени не сложно. Поясняю.
Это формат вывода вещественного числа. Если его не поставить, то выведется нечто безобразное в таком роде: -1.1208567754337654Е-001 Если поставить одно число, то оно будет означать полное количество выводимых знаков, включая запись порядка. Так, если напишем х:12, то получим -1.1208Е-001 Наличие двух чисел в формате означает, что мы выводим число в формате целая часть-точка-дробная часть, и при этом первое число означает ПОЛНОЕ количество знаков, а второе - число знаков дробной части. Так, если задать х:8:3, то будем иметь Код:
х= -0.112 |
21.10.2013, 21:03 | #8 (permalink) | |
Member
Регистрация: 18.10.2013
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
|
|
22.10.2013, 09:22 | #9 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|