Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Метод Итерраций

Автор: geforse 10.10.2009 14:09

Мне нужно решить уравнение методом Итерраций
http://s42.radikal.ru/i098/0910/b5/0ea8b8a0c902.gif
(на отрезке [0-1])


program iterr;
uses crt;
var
x1,x2,e:real;
i:byte;
begin
textbackground(black);
repeat
clrscr;
textbackground(red);
window(5,5,40,15);
textcolor(white);
clrscr;
writeln('Enter [0-1]');
readln(x1)
until(x1>0)and(x1<=1);
i:=0;
e:=0.0001;
x2:=sqrt(exp(ln(1)*(-0.4)*sqr(X1)))-arctan(X1/sqrt(1-X1*X1));
while abs(x2-x1)>e do
begin
x1:=x2;

{ВОТ ТУТ ОШИБКА} x2:=sqrt(exp(ln(1)*(-0.4)*sqr(X1)))-arctan(X1/sqrt(1-X1*X1));

end;
textbackground(white);
window(40,20,70,30);
textcolor(red);
clrscr;
writeln('pechat x2=',x2:3:3);
writeln('Iterasii i=',i);
readln;
end.


Выдаёт ошибку Error 207: Invalid floating point opration

Помогите разобраться...

Автор: Lapp 10.10.2009 14:43

Цитата(geforse @ 10.10.2009 11:09) *
http://pic.ipicture.ru/uploads/091010/lPs465121U8246
Ссылка не работает.
Еще, пожалуйста:
1. делай нормальный линк (в форме ввода есть кнопка, либо просто подставь протокол)
2. пиши же наконец слово "итерация", как положено - с одним "р"..

Автор: andriano 10.10.2009 14:44

1. Что такое ln(1)? Не проще сразу написать "0", а заодно убрать вычисления остальных сомножителей, которые впоследствии предполагается умножать на 0?
2. X1 может быть равно 1 (по условию), следовательно, подкоренное выражение, а вместе с нрм и знаменатель может быть равен 0.

Автор: geforse 10.10.2009 14:46

Исправил)

http://s42.radikal.ru/i098/0910/b5/0ea8b8a0c902.gif

Автор: Lapp 10.10.2009 14:56

Цитата(geforse @ 10.10.2009 11:46) *
Исправил)

http://s42.radikal.ru/i098/0910/b5/0ea8b8a0c902.gif
А, это все та самая формула.. smile.gif
Ну-ну.. ))
Хорошо, если считать, что она верна, то все же лучше записать ее так:

|x| - arcsin(x) = 0

И тут видно, что у нее излом в х=0. Если решать при х>0, то производная левой части есть:

1 - 1/Sqrt(1-x2)

Отсюда и пляши..

Автор: geforse 10.10.2009 15:10

Цитата(Lapp @ 10.10.2009 11:56) *

А, это все та самая формула.. smile.gif


да она))

Lapp, спасибо, попробую smile.gif

Автор: geforse 13.10.2009 22:14

Помогите с этой прогой...уже нежелю сижу, всё никак ... кучу вариантов перепробовал sad.gif

узнал вот ещё что, приближённое значение корня (что в ответе должно получиться) 0.7672

Автор: -Lapp- 14.10.2009 20:24

Цитата(geforse @ 13.10.2009 18:14) *
Помогите с этой прогой...уже нежелю сижу, всё никак ... кучу вариантов перепробовал sad.gif
узнал вот ещё что, приближённое значение корня (что в ответе должно получиться) 0.7672

Ты лучше бы узнал, как правильно записывается уравнение. В том виде, в котором ты его дал, решение х=0.
Перестань морочить голову себе и людям, подойди к препу и спроси точный вид уравнения.

Автор: Lapp 14.10.2009 20:35

Цитата(geforse @ 13.10.2009 19:14) *
значение корня (что в ответе должно получиться) 0.7672
Ладно, я сегодня добрый..
Забирай свое решение, и лучше больше не приходи, если не можешь правильно написать условие.
const
Eps=0.0001;
var
k: integer;
a,b,x,y,y1: double;

function f(x: double): double;
begin
f:=Sqrt(1-0.4*x*x)-arctan(x/Sqrt(1-x*x))
end;

function f1(x: double): double;
begin
f1:=0.5/Sqrt(1-0.4*x*x)*(-0.8*x)-1/Sqrt(1-x*x)
end;

begin
a:=0;
b:=1;
x:=(a+b)/2;
y:=f(x);
while abs(y)>Eps do begin
y:=f(x);
x:=x-y/f1(x);
k:=k+1
end;
writeln('root is: x=',x:5:8,' iterarions: ',k);
readln
end.


Твое уравнение вот:

Sqrt(1-0.4*x2) - arcsin(x) = 0


Автор: volvo 14.10.2009 20:36

Цитата
узнал вот ещё что, приближённое значение корня (что в ответе должно получиться) 0.7672
Это для функции: sqrt(1 - 0.4*x2) - arcsin(x) = 0 такое значение получается. То есть, (-0.4) - не показатель степени.

P.S.
Андрей, опередил smile.gif

Автор: Lapp 14.10.2009 20:39

Цитата(volvo @ 14.10.2009 17:36) *
Андрей, опередил smile.gif
smile.gif

Автор: geforse 14.10.2009 21:37

Андрей, большое тебе спасибо ... просто не человеческое спасибо )))

з.ы. не пойму как репутацию прибавлять ?)

Автор: volvo 14.10.2009 22:24

Цитата
не пойму как репутацию прибавлять ?)
Это тебе пока недоступно: http://forum.pascal.net.ru/index.php?s=&showtopic=15774&view=findpost&p=92421

(+ Lapp-у добавлен от имени geforse)