![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
otherside |
![]()
Сообщение
#1
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 98 Регистрация: 29.2.2008 Город: красноярск Учебное заведение: КрижтИрГупс Вы: студент ![]() |
подскажите пожалуйста как сделать, нужно в паскале написать программу, которая бы высчитывала значения функций y=(1/2)*ln{(1+x)/(1-x)} и s=x+(x^3)/3+(x^5)/5+(x^7)/7 при x{0,2;0.8} с шагом dx=0,2. после всех вычислений программа должна сравнить значения у и s, так чтобы разница между ними не превышала 0,01, и если такое значение получилось, то программа должна вывести то значение х при котором погрешность равна 0,01. я так поняла что s это сумма {x^(2n-1)}/2n-1
|
![]() ![]() |
creer |
![]()
Сообщение
#2
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 121 Регистрация: 28.10.2007 Город: Екатеринбург Учебное заведение: УГТУ-УПИ Вы: студент ![]() |
Добавлю свои комментарии (IMG:style_emoticons/default/smile.gif)
Цитата Program laba4; Var x,y,n,s:real; Begin x:=0.2; While x<=0.8 do Begin y:=1/2*ln((1+x)/(1-x)); x:=x+0.2; //y и s будут считаться при разных x! Нужно либо перенести в начало, либо в конец цикла. Begin //Begin просто так? n:=1; s:=x+(exp(n*ln(x)))/n; //Сумма вычислится неверно, формула же другая? Правильно s:=(exp((2*n-1)*ln(x)))/(2*n-1). При n равном 1 как раз получится x, отдельно его писать не нужно. If abs(y-s)<=0.001 then //Если разница между первыми двумя (у меня только первым) членами меньше 0.001, тогда посчитать следующий член суммы? Можно написать while abs(y-s)>0.001 do, тогда можно вычислить при каком значении n погрешность становится меньше 0,001 begin n:=n+1; s:=s+(exp(n*ln(x)))/n; //Формула аналогично формулы выше s:=s+... . end; end; //End от ненужного Begin'а writeln('x=', x); end; end. Хотя судя по всему, нужно просто написать написать x:=0.2; while x<=0.8 do begin y:=(1/2)*ln((1+x)/(1-x)); s:=x+exp(3*ln(x))/3+exp(5*ln(x))/5+exp(7*ln(x))/7; if abs(y-s)<0.01 then writeln('При x=', x, ' погрешность менее 0.01'); x:=x+0.2; end; |
otherside |
![]()
Сообщение
#3
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 98 Регистрация: 29.2.2008 Город: красноярск Учебное заведение: КрижтИрГупс Вы: студент ![]() |
Добавлю свои комментарии (IMG:style_emoticons/default/smile.gif) Хотя судя по всему, нужно просто написать написать x:=0.2; while x<=0.8 do begin y:=(1/2)*ln((1+x)/(1-x)); s:=x+exp(3*ln(x))/3+exp(5*ln(x))/5+exp(7*ln(x))/7; if abs(y-s)<0.01 then writeln('При x=', x, ' погрешность менее 0.01'); x:=x+0.2; end; Program laba4; Var x,y,n,s:real; Begin x:=0.2; while x<=0.8 do begin y:=(1/2)*ln((1+x)/(1-x)); s:=x+exp(3*ln(x))/3+exp(5*ln(x))/5+exp(7*ln(x))/7; if abs(y-s)<0.01 then writeln('При x=', x, ' погрешность менее 0.01', 's=',s); x:=x+0.2; end; end. такая программа? только нам препод говорил, что в ответе должно получится больше чисел... |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 25.5.2025, 22:27 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru