Мне нужно решить уравнение методом Итерраций 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));
Ссылка не работает. Еще, пожалуйста: 1. делай нормальный линк (в форме ввода есть кнопка, либо просто подставь протокол) 2. пиши же наконец слово "итерация", как положено - с одним "р"..
Автор: andriano 10.10.2009 14:44
1. Что такое ln(1)? Не проще сразу написать "0", а заодно убрать вычисления остальных сомножителей, которые впоследствии предполагается умножать на 0? 2. X1 может быть равно 1 (по условию), следовательно, подкоренное выражение, а вместе с нрм и знаменатель может быть равен 0.
А, это все та самая формула.. Ну-ну.. )) Хорошо, если считать, что она верна, то все же лучше записать ее так:
|x| - arcsin(x) = 0
И тут видно, что у нее излом в х=0. Если решать при х>0, то производная левой части есть:
1 - 1/Sqrt(1-x2)
Отсюда и пляши..
Автор: geforse 10.10.2009 15:10
Цитата(Lapp @ 10.10.2009 11:56)
А, это все та самая формула..
да она))
Lapp, спасибо, попробую
Автор: geforse 13.10.2009 22:14
Помогите с этой прогой...уже нежелю сижу, всё никак ... кучу вариантов перепробовал
узнал вот ещё что, приближённое значение корня (что в ответе должно получиться) 0.7672
Автор: -Lapp- 14.10.2009 20:24
Цитата(geforse @ 13.10.2009 18:14)
Помогите с этой прогой...уже нежелю сижу, всё никак ... кучу вариантов перепробовал узнал вот ещё что, приближённое значение корня (что в ответе должно получиться) 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. Андрей, опередил
Автор: Lapp 14.10.2009 20:39
Цитата(volvo @ 14.10.2009 17:36)
Андрей, опередил
Автор: 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