Приветствуем читателей нашего сайта! Сегодня мы с вами решим задачи for25-30.
For25-30
For25. Дано вещественное число X (|X| < 1) и целое число N (> 0). Найти значение выражения
X − X2/2 + X3/3 − … + (−1)N−1·XN/N.
Полученное число является приближенным значением функции ln в точке 1 + X.
program for25; var i, N: integer; Sum, a, x: real; begin write('Введите N: '); readln(N); write('Введите x: '); readln(x); a := x; //первое слагаемое Sum := x; //начальная сумма for i := 2 to N do begin a := -a * x; // возводим слагаемое в следующую степеь и меняем знак на противоположный Sum := Sum + a / i // находим сумму end; writeln; writeln('Значение суммы: ', Sum:0:3) end.
For26. Дано вещественное число X (|X| < 1) и целое число N (> 0). Найти значение выражения
X − X3/3 + X5/5 − … + (−1)N·X2·N+1/(2·N+1).
Полученное число является приближенным значением функции arctg в точке X.
program for26; var i, N: integer; Sum, a, x, y: real; begin write('Введите N: '); readln(N); write('Введите x: '); readln(x); y := Sqr(x); // запоминаем х в квадрате a := x; // начальное слагаемое Sum := x; // начальная сумма for i := 2 to N do begin a := -a * y; // возводим слагаемое в послеследующую степень и меняем знак на противоположный Sum := Sum + a / (2 * i + 1) // находим сумму end; writeln; writeln('Значение суммы: ', Sum:0:3); end.
For27. Дано вещественное число X (|X| < 1) и целое число N (> 0). Найти значение выражения
X + 1·X3/(2·3) + 1·3·X5/(2·4·5) + … +
+ 1·3·…·(2·N−1)·X2·N+1/(2·4·…·(2·N)·(2·N+1)).
Полученное число является приближенным значением функции arcsin в точке X.
Для того чтобы решить эту задачу, нам нужно всего лишь внимательно посмотреть на формулу в условии задачи. Просто занесем значения 2 * i — 1, 2 * N, 2 * N + 1 в переменные. И не забывайте накапливать их результат!
program for27; var x, Sum, a, b, c, y: real; N, i: integer; begin write('Введите N: '); readln(N); write('Введите x: '); readln(x); Sum := x; a := x; //в этой переменной будет изменяться х b := 1; //часть выражения, которая стоит перед х(умножение) c := 1; //часть выражения, которая стоит после х(деление) y := Sqr(x); //запоминаем х в квадрате for i := 1 to N do begin b := b * (2 * i - 1); c := c * (2 * i); a := a * y; Sum := Sum + b * a / (c * (2 * i + 1)); end; writeln('Значение суммы: ', Sum:0:3); end.
For28. Дано вещественное число X (|X| < 1) и целое число N (> 0). Найти значение выражения
1 + X/2 − 1·X2/(2·4) + 1·3·X3/(2·4·6) − … +
+ (−1)N−1·1·3·…·(2·N−3)·XN/(2·4·…·(2·N)).
Полученное число является приближенным значением функции (1+X)1/2.
Данная задача очень похожа на предыдущую.
program for28; var x, Sum, a, b, c, y: real; N, i: integer; begin write('Введите N: '); readln(N); write('Введите x: '); readln(x); Sum := 1; a := 1; //в этой перемнной будет изменяться х b := 1; //часть выражения, которая стоит перед х(умножение) c := 1; //часть выражения, которая стоит после х(деление) for i := 1 to N do begin b := b * (2 * i - 3); c := c * (2 * i); a := -a * x; // возводим слагаемое в следующую степень и меняем знак на противоположный Sum := Sum + b * a / c; end; writeln('Значение суммы: ', Sum:0:3); end.
For29. Дано целое число N (> 1) и две вещественные точки на числовой оси: A, B (A < B). Отрезок [A, B] разбит на N равных отрезков. Вывести H — длину каждого отрезка, а также набор точек
A, A + H, A + 2·H, A + 3·H, …, B,
образующий разбиение отрезка [A, B].
program for29; var i, N: integer; A, B, H, C: real; begin write('A = '); readln(A); write('B = '); readln(B); write('N = '); readln(N); H := (B - A) / N; writeln('Длина отрезков: ', H:0:2); writeln('Набор точек при делении:'); writeln; { Вычисляем набор точек: } for i := 0 to N do begin C := A + i * H; //вычисляем i-ую точку writeln('A + ', i, ' * H = ', C:0:2) end; end.
For30. Дано целое число N (> 1) и две вещественные точки на числовой оси: A, B (A < B). Отрезок [A, B] разбит на N равных отрезков. Вывести H — длину каждого отрезка, а также значения функции F(X) = 1 − sin(X) в точках, разбивающих отрезок [A, B]:
F(A), F(A + H), F(A + 2·H), …, F(B).
program for30; var i, N: integer; A, B, H, C: real; begin write('A = '); readln(A); write('B = '); readln(B); write('N = '); readln(N); H := (B - A) / N; writeln('Длина отрезков: ', H:0:2); writeln('Набор точек при делении:'); writeln; { Вычисляем набор точек: } for i := 0 to N do begin C := A + i * H; //вычисляем i-ую точку writeln('A + ', i, ' * H = ', C:0:2); writeln('F(', C,') = ', 1 - Sin(C):0:3) end end.
На сегодня всё! Если у вас возникли какие-либо вопросы, не стесняйтесь, задавайте их в комментариях. Я постараюсь ответить на все!
можно вопрос по For25? я ввожу число N=3; X=0.5 и у меня выводит 0.39 а у вас 0.412 что у меня не так в коде??
program abc;
var x:real;
i,n,a:integer;
BEGIN
read(x,n);
a:=-1;
for i:=2 to n do
begin
x:=x-power(a,i)*(power(x,i)/i);
end;
write(x:0:3);
END.