Помогите пожалуйста составить программу к этой задаче: Составить структурированную программу для нахождения корня уравнения: (корень(1-х))-cos(корень(1-х))=0 на отрезке [0;1) с абсолютной погрешностью Эпсила=10в -3 степени,методом Ньютона.В программе предусмотреть подсчёт и выдачу на печать колличество итераций,необходимых для вычисления значения с заданной точностью.(как я понял точность самому надо задать) Кто знает как решить помогите плииз...очень надо
Автор: Lapp 1.10.2009 13:23
Цитата(AssAssIN'KO @ 1.10.2009 9:56)
Кто знает как решить
Да все знают. Вот так: http://forum.pascal.net.ru/index.php?s=&showtopic=3789&view=findpost&p=17091
Автор: AssAssIN'KO 1.10.2009 21:29
я читал эту тему.....мне не понятно ,поэтому подожду может найдётся человек который мне поможет
Автор: Lapp 2.10.2009 3:07
Цитата(AssAssIN'KO @ 1.10.2009 18:29)
я читал эту тему.....мне не понятно ,поэтому подожду может найдётся человек который мне поможет
Тогда спрашивай более конкретно, что именно неясно. Прождать ты можешь до бесконечности..
Автор: AssAssIN'KO 5.10.2009 22:06
ну у меня получилось чтото вроде этого
program Nuton; uses crt; const Eps=0.0001; var a,b,c,z,f1,f2:real; begin clrscr; a:=0; b:=1; f1:=sqr(1-a)-cos(sqrt(1-a)); f2:=(-1)/(2*(sqrt(1-a)))+(1/(2*(sqrt(1-a))))*(sin(sqrt(1-a))); if f1*f2>0 then c:=a else c:=b; repeat z:=((sqrt(1-c))-(cos(sqrt(1-a)))/((-1)/(2*(sqrt(1-a))))+(1/(2*(sqrt(1-a))))*(sin(sqrt(1-a)))); c:=c-z; k:k+1; until abs f(z)<Eps; writeln c,k; readln end
Автор: Lapp 6.10.2009 7:33
Цитата(AssAssIN'KO @ 5.10.2009 19:06)
ну у меня получилось чтото вроде этого
Хотьбы довел до компилирующегося состояния.. Вот, лови, разбирайся..
const Eps=0.0001; var k: integer; a,b,x,y,y1: double;
function f(x: double): double; begin f:=Sqrt(1-x)-Cos(Sqrt(1-x)) end;
function f1(x: double): double; var s: double; begin s:=Sqrt(x); f1:=-0.5/s-0.5*Sin(s)/s 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.
Автор: Гость 6.10.2009 21:36
Цитата(Lapp @ 6.10.2009 3:33)
Хотьбы довел до компилирующегося состояния.. Вот, лови, разбирайся..
const Eps=0.0001; var k: integer; a,b,x,y,y1: double;
function f(x: double): double; begin f:=Sqrt(1-x)-Cos(Sqrt(1-x)) end;
function f1(x: double): double; var s: double; begin s:=Sqrt(x); f1:=-0.5/s-0.5*Sin(s)/s 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.
я попробовал сделать программу из этого,но почитав методички у меня получилось вот это..... Program N20; uses crt; var x,x1,e:real; i:byte; begin textbackground(black); repeat clrscr; textbackground(red); window(5,5,40,15); clrscr; textcolor(white); writeln('vvod x na promezutke [0;1)='); readln(x); until(x>=0)and(x<1); i:=0; e:=0.001; x1:=Sqrt(1-x)-Cos(Sqrt(1-x)); while abs(x1-x)>e do begin x:=x1; x1:=Sqrt(1-x)-Cos(Sqrt(1-x)); i:=i+1; end; textbackground(magenta); window(40,20,70,30); clrscr; textcolor(yellow); writeln('pechati x1=',x1:5:4); writeln('kolichestvo interachii=',i); readln; end. но он выдаёт 207 ошибку при вооде значений
Потому что производную надо правильно записывать. Чем тебе не понравились мои функции? Зачем все валить в одну кучу? Чтобы потом ошибки выискивать часами и сутками? Вы что ли функции не проходили?
Sqrt должен быть в знаменателе, а у тебя в числителе..
Автор: AssAssIN'KO 8.10.2009 20:43
Цитата(Lapp @ 7.10.2009 3:51)
Потому что производную надо правильно записывать. Чем тебе не понравились мои функции? Зачем все валить в одну кучу? Чтобы потом ошибки выискивать часами и сутками? Вы что ли функции не проходили?
Sqrt должен быть в знаменателе, а у тебя в числителе..
в том то и дело что не проходили,но я уже разобрался,сделал программу,всё работает,производную не совсем точно подсчитал,спасибо огромное тебе за помощь
Автор: Lapp 9.10.2009 3:38
Цитата(AssAssIN'KO @ 8.10.2009 17:43)
в том то и дело что не проходили,но я уже разобрался,сделал программу,всё работает,производную не совсем точно подсчитал,спасибо огромное тебе за помощь
Рад, что помогло. Даже если не проходили, я бы советовал разбивать большие формулы на части, используя дополнительные переменные, по крайней мере на этапе отладки. Свое время дороже, чем машинное.