Помощь - Поиск - Пользователи - Календарь
Полная версия: Метод Итерраций
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
geforse
Мне нужно решить уравнение методом Итерраций
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
Цитата(geforse @ 10.10.2009 11:09) *
Ссылка не работает.
Еще, пожалуйста:
1. делай нормальный линк (в форме ввода есть кнопка, либо просто подставь протокол)
2. пиши же наконец слово "итерация", как положено - с одним "р"..
andriano
1. Что такое ln(1)? Не проще сразу написать "0", а заодно убрать вычисления остальных сомножителей, которые впоследствии предполагается умножать на 0?
2. X1 может быть равно 1 (по условию), следовательно, подкоренное выражение, а вместе с нрм и знаменатель может быть равен 0.
geforse
Исправил)

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

картинка
А, это все та самая формула.. smile.gif
Ну-ну.. ))
Хорошо, если считать, что она верна, то все же лучше записать ее так:

|x| - arcsin(x) = 0

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

1 - 1/Sqrt(1-x2)

Отсюда и пляши..
geforse
Цитата(Lapp @ 10.10.2009 11:56) *

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


да она))

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

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

Ты лучше бы узнал, как правильно записывается уравнение. В том виде, в котором ты его дал, решение х=0.
Перестань морочить голову себе и людям, подойди к препу и спроси точный вид уравнения.
Lapp
Цитата(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
Цитата
узнал вот ещё что, приближённое значение корня (что в ответе должно получиться) 0.7672
Это для функции: sqrt(1 - 0.4*x2) - arcsin(x) = 0 такое значение получается. То есть, (-0.4) - не показатель степени.

P.S.
Андрей, опередил smile.gif
Lapp
Цитата(volvo @ 14.10.2009 17:36) *
Андрей, опередил smile.gif
smile.gif
geforse
Андрей, большое тебе спасибо ... просто не человеческое спасибо )))

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

(+ Lapp-у добавлен от имени geforse)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.