IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> задачи на численное решение нелинейных уравнений, подскажите с курсовой
mafia1232
сообщение 29.05.2005 10:21
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Мужской

Репутация: -  0  +


для уравнения 15*x^4-4*x^3-6*x^2-4*x-1=0
написать решение методом касательных и хорд с точность 10^-5
производная первого порядка 60*x^3-12*x^2-12*x-4=0

Сообщение отредактировано: mafia1232 - 29.05.2005 11:29
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 29.05.2005 10:27
Сообщение #2


Гость






Что, очень трудно посмотреть FAQ ПРЕЖДЕ чем задать вопрос? Обязательно плодить одни и те же темы еще и еще раз? angry.gif
FAQ: Численное решение и визуализация
 К началу страницы 
+ Ответить 
mafia1232
сообщение 29.05.2005 10:50
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Мужской

Репутация: -  0  +


эту тему в FAQ я видел, но я не понимаю куда вставить свое уравнение. а если взять решение из Faq то прога выдает ощибку 8087 в
Код
Begin
    F := Sqr(Arg) - 2
  End;


извините, но в паскале не разбираюсь sad.gif

Сообщение отредактировано: mafia1232 - 29.05.2005 10:52
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 29.05.2005 10:52
Сообщение #4


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


напиши первой строчкой в программе
{$n+}


подключение математического сопроцессора для работы с вещественными числами.

Сообщение отредактировано: klem4 - 29.05.2005 10:53


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mafia1232
сообщение 29.05.2005 11:26
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Мужской

Репутация: -  0  +


исправте если неправильно пожайлуста. метод хорд для уравнения выше.
Исходный код
program xord;
uses Crt;
const
eps = 0.00001;
var
lB, rB, x, C, C2 : real;
function Fun(x : real) : real;
begin
Fun := (15*x*x*x*x) - (4*x*x*x)-(6*x*x)-(4*x) - 1;
end;
function GetC(a,b : real) : real;
begin
GetC := (Fun(B)*a - Fun(a)*B) / (Fun(B) - Fun(a));
end;
begin
lB := -1;
rB := 0;
ClrScr;
repeat
C := GetC(lB,rB);
if (Fun(lB)*Fun© > 0)
then lB := C
else rB := C;
WriteLn('X = ',C:10:10);
C2 := GetC(lB,rB);
until (abs(C2 - C) < eps);
ReadLn;
end.


Сообщение отредактировано: volvo - 29.05.2005 12:08
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 29.05.2005 11:29
Сообщение #6


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Что может быть не правильно ? Все что тебе надо было сделть, это вставить свое уравнение и граници поиска. huh.gif

Если ты не изменял ничего кроме этого, то все правильно.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mafia1232
сообщение 29.05.2005 11:34
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Мужской

Репутация: -  0  +


" x " получается очень много, уравнение надо простое брать или производную от уравнения?. и еще вопрос :"что такое приближение в методе Ньютона"

Сообщение отредактировано: mafia1232 - 29.05.2005 11:37
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 29.05.2005 11:36
Сообщение #8


Гость






Цитата(mafia1232 @ 29.05.05 11:34)
" x " получается очень много, уравнение надо простое боать или производную от уравнения?

Если бы исходный текст не был изменен, таких вопросов не было бы... А в измененном тексте разбирайтесь самостоятельно... Сумели изменить - ...
 К началу страницы 
+ Ответить 
mafia1232
сообщение 29.05.2005 11:52
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Мужской

Репутация: -  0  +


справился с хордми по вашему примеру, но так и не понял что такое начальное приближение для метода касательных и как его вычислить. Начальное приближение случайно не начальная точка отсчета до корня или начало отрезка в который входит корень?

Сообщение отредактировано: mafia1232 - 29.05.2005 11:52
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 29.05.2005 11:56
Сообщение #10


Гость






Цитата(mafia1232 @ 29.05.05 11:52)
начало отрезка в который входит корень?
:yes:
 К началу страницы 
+ Ответить 
klem4
сообщение 29.05.2005 11:57
Сообщение #11


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Слушай, ну что с тобой ? там же дальше черным по белому написано
Метод Ньютона(касательных)

прошу прощения, не допонял, ты не не нашел, а не понял в чем там соль да ? ;)

Сообщение отредактировано: klem4 - 29.05.2005 11:59


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mafia1232
сообщение 29.05.2005 12:04
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Мужской

Репутация: -  0  +


тогда последний вопрос: что дописать к методу Ньютона (основа из вашего макета) что бы он показывал корень, а не переходил к окну программы команда
Код
readln;
не помогает.
а вот сама прога
Исходный код
{$n+}
Program metodnewton;

Function newton(start, Eps: Extended): Extended;
Var
X, prev: Extended;

{ function }
Function F(Arg: Extended): Extended;
Begin
F :=(15*x*x*x*x)-(4*x*x*x)-(6*x*x)-(4*x)-1
End;

{ proizvodnaya }
Function Deriv(Arg: Extended): Extended;
Begin
Deriv := (60*x*x*x)-(12*x*x)-(12*x)-4
End;

Begin
X := start;
Repeat
prev := X;
X := prev - F(prev) / Deriv(prev);
Until Abs(X - prev) <= Eps;
newton := X
End;

Var a, Eps: Extended;

begin
WriteLn('vvedite priblegenie a');
Read(a);
WriteLn('vvedite to4nost Eps');
Read(Eps);
WriteLn('koren raven x= ', newton(a, Eps)10.gif7);
readln;
end.


Сообщение отредактировано: volvo - 29.05.2005 12:07
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 29.05.2005 12:08
Сообщение #13


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Все работает, скорее всего ты вводишь "плохие данные", и где-нибудь получается делиние на 0 или корень из отрицательного ...

а по поводу привильно ли счетает, это опять же, смотря что ты исправлял.

Сообщение отредактировано: klem4 - 29.05.2005 12:14


Эскизы прикрепленных изображений
Прикрепленное изображение

--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mafia1232
сообщение 29.05.2005 12:15
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Мужской

Репутация: -  0  +


ты не понял он выходит не посредством ошибки, а просто корень не показывает, а показывает только если ты прогу второй раз запускаешь. А считает она правильно.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 29.05.2005 12:16
Сообщение #15


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Щас в Борланде запущу.

поставь
uses crt;
второй строчкой

хмм странно, не получислось, тогда
uses crt;
в начале, а вместо
readln;
-
repeat until keypressed;


Сообщение отредактировано: klem4 - 29.05.2005 12:20


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mafia1232
сообщение 29.05.2005 12:18
Сообщение #16


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Мужской

Репутация: -  0  +


вот прога pascal


Прикрепленные файлы
Прикрепленный файл  _____________.PAS ( 704 байт ) Кол-во скачиваний: 222
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mafia1232
сообщение 29.05.2005 12:35
Сообщение #17


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Мужской

Репутация: -  0  +


Спасибо klem4 ! наконец работает как должна. а куда вставить clrscr?

Сообщение отредактировано: mafia1232 - 29.05.2005 12:36
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 29.05.2005 12:35
Сообщение #18


Гость






Или поменяй Read на ReadLn... Это тоже решит проблему...
 К началу страницы 
+ Ответить 
klem4
сообщение 29.05.2005 12:38
Сообщение #19


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Цитата(mafia1232 @ 29.05.05 12:35)
Спасибо klem4 ! наконец работает как должна. а куда вставить clrscr?


После основного
Begin


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mafia1232
сообщение 29.05.2005 12:38
Сообщение #20


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Мужской

Репутация: -  0  +


Цитата
Или поменяй Read на ReadLn... Это тоже решит проблему
там как раз и был readln
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 30.07.2025 4:59
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"