Перевод из Паскаля на С++
Помогите пожалуйста с переводом на C++
Задача для понимания программы.
Для х изменяющегося от a до b с шагом (b-a)/k, где
(k=10), вычислить функцию f(x), используя ее разложение в
степенной ряд в двух случаях:
а) для заданного n;
б) для заданной точности ε (ε=0.0001).
Для сравнения найти точное значение функции.
Вариант задания указан на фото
| Функция | Диапазон изменения аргумента | n | Сумма |
Указания
1. Алгоритм решения задачи сводится к трем циклам, причем два из них вложены в третий. Внутренние циклы суммируют слагаемые при фиксированном параметре x, один (арифметический для заданного n), другой (итерационный для за-
данной точности ε. При организации этих циклов следует обратить внимание на правильный выбор формулы для вычисления элемента ряда an и правильное присвоение начальных значений переменным цикла. Внешний цикл организует изменение параметра х.
2. Результаты расчетов отпечатать с следующем виде:
Вычисление функции
X=...... SN=...... SE=..... Y=......
X=...... SN=...... SE=..... Y=......
..........
X=...... SN=...... SE=..... Y=......
Здесь X- значение параметра; SN- значение суммы для за-
данного n; SE- значение суммы для заданной точности; Y-
точное значение функции.
Помогите пожалуйста с переводом на C++
Задача для понимания программы.
Для х изменяющегося от a до b с шагом (b-a)/k, где
(k=10), вычислить функцию f(x), используя ее разложение в
степенной ряд в двух случаях:
а) для заданного n;
б) для заданной точности ε (ε=0.0001).
Для сравнения найти точное значение функции.
Вариант задания указан на фото
| Функция | Диапазон изменения аргумента | n | Сумма |
Указания
1. Алгоритм решения задачи сводится к трем циклам, причем два из них вложены в третий. Внутренние циклы суммируют слагаемые при фиксированном параметре x, один (арифметический для заданного n), другой (итерационный для за-
данной точности ε. При организации этих циклов следует обратить внимание на правильный выбор формулы для вычисления элемента ряда an и правильное присвоение начальных значений переменным цикла. Внешний цикл организует изменение параметра х.
2. Результаты расчетов отпечатать с следующем виде:
Вычисление функции
X=...... SN=...... SE=..... Y=......
X=...... SN=...... SE=..... Y=......
..........
X=...... SN=...... SE=..... Y=......
Здесь X- значение параметра; SN- значение суммы для за-
данного n; SE- значение суммы для заданной точности; Y-
точное значение функции.
Код:
// Главный цикл
procedure TForm1.FormClick(Sender: TObject);
var x,y,s,s2:Extended; i,NN: integer ;
// Точное значение
function YY (x:Extended): Extended ;
var tmp,s: Extended ;
begin
tmp := x/2 ;
s := (tmp *(tmp+1) +1.0) * Exp (tmp) ;
Result := s
end ;
// Для заданного n
function summa (x:Extended;n:integer): Extended ;
var i,nf: integer; tmp,tmp1,s: Extended ;
begin
s := 1.0 ;
tmp := x/2 ;
tmp1 := 1.0 ;
nf := 1 ;
for i := 1 to n do
begin
nf := nf * i ;
tmp1 := tmp1*tmp ;
s := s + (i*i+1) * tmp1 / nf ;
end ;
summa := s;
end ;
// Для заданного epsylon
function summa2 (x,eps:Extended;var nitt:integer): Extended ;
var i,nf: integer; eps1,tmp,tmp1,s,slast: Extended ;
begin
nitt := 0 ;
eps1 := 1 ;
slast := 1 ;
s := 1.0 ;
tmp := x/2 ;
tmp1 := 1.0 ;
nf := 1 ;
i := 1 ;
while (Abs(eps1)>eps)do
begin
Inc (nitt) ;
nf := nf * i ;
tmp1 := tmp1*tmp ;
s := s + (i*i+1) * tmp1 / nf ;
eps1 := s - slast ;
slast := s ;
Inc (i) ;
end ;
summa2 := s;
end ;
begin
for i := 1 to 10 do
begin
x := i/10.0 ;
y := YY (x) ;
s := summa (x,10) ;
s2 := summa2 (x,0.00001,NN) ;
Memo1.Lines.Add(Format('%3.1f %9.6f %9.6f %9.6f %6d',[x,y,s,s2,NN]))
end ;
end;