Нужно найти значение функции используя ряд Тэйлора - Turbo Pascal (29366)
Формулировка задачи:
Помогите решитьзадачу в Турбо паскале или АВС. Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от значения х нач до х кон с шагом дх с точностью Экспоненты. Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда.
вот код есть но работает не правильно
Листинг программы
- Program lab33;
- const
- te1=('Введите X нач= ');
- te2=('Введите X кон= ');
- te3=('Введите шаг dx= ');
- te4=('Введите точность e= ');
- var f,x,eps,s,a: real;
- x2,dx:real;
- i,n: integer;
- begin
- Write(te1); readln(x);
- Write(te2); readln(x2);
- Write(te3); readln(dx);
- Write(te4); readln(eps);
- writeln('*******************************************');
- writeln('* n * f * s * a * x *');
- writeln('*******************************************');
- while x<=x2 do
- begin
- n:=0; a:=1; s:=a;
- while (abs(a)>eps) do
- begin
- a:=-(x*x/(n+1))*a;
- s:=s+a;
- n:=n+1;
- end;
- writeln('* ',n:3,' * ',exp(-(x*x)):7:4,' * ',s:7:4,' * ',a:7:4,' *',x:5:1,'*');
- x:=x+dx;
- end;
- writeln('*******************************************');
- end.
Решение задачи: «Нужно найти значение функции используя ряд Тэйлора»
textual
Листинг программы
- uses crt;
- const e=0.0001;
- var xn,xk,eps,x,s,dx,t,ex:real;
- n:integer;
- begin
- clrscr;
- write('Введите начало интервала xn=');
- readln(xn);
- repeat
- write('Введите конец интервала, больше ',xn:0:1,' xk=');
- readln(xk);
- until xk>xn;
- repeat
- write('Введите шаг табуляции, больше 0, меньше ',xk-xn:0:1,' dx=');
- readln(dx);
- until (dx>0)and(dx<xk-xn);
- repeat
- write('Введите точность 0<eps<1 eps=');
- readln(eps);
- until (eps>0)and(eps<1);
- clrscr;
- x:=xn;
- writeln(' Табулирование функции F(x)=e^(-x^2),');
- writeln(' представленной разложением в степенной ряд');
- writeln(' на интервале ',xn:0:1,'..',xk:0:1,' с шагом ',dx:0:1);
- writeln;
- writeln(' -----------------------------------');
- writeln(' | X | S |e^(-x^2) | n | ');
- writeln(' -----------------------------------');
- while x<=xk+dx/2 do
- begin
- n:=0;
- t:=1;
- s:=t;
- while abs(t)>=e do
- begin
- n:=n+1;
- t:=-t*x*x/n;
- s:=s+t;
- end;
- ex:=exp(-x*x);
- writeln(' |',x:6:1,' |',s:8:4,' |',ex:8:4,' | ',n:4,'|');
- x:=x+dx;
- end;
- writeln(' -----------------------------------');
- readln
- end.
Объяснение кода листинга программы
- В начале кода используется библиотека crt, которая обеспечивает функциональность стандартного ввода и вывода.
- Константа e равна 0.0001, что представляет собой очень маленькое значение, используемое для представления очень малых чисел в виде десятичной дроби.
- Переменные xn, xk, eps, x, s, dx, t и ex являются реальными числами.
- Переменная n является целым числом, которое будет использоваться для определения шага табуляции.
- Цикл repeat используется для получения от пользователя начала и конца интервала, а также шага табуляции.
- Цикл while используется для вычисления значений функции на интервале от xn до xk+dx/2 с шагом dx/2.
- Внутри цикла while переменные n, t и s инициализируются нулевыми значениями.
- Затем выполняется итерация цикла while, пока abs(t) не станет больше или равно e.
- Когда это происходит, переменная n увеличивается на единицу, и значение t изменяется на -txx/n.
- Значение s обновляется как сумма предыдущих значений t.
- После окончания итерации цикла while, переменная ex инициализируется как exp(-x*x).
- Затем выводится значение функции на интервале от xn до xk+dx/2 с шагом dx/2.
- Выводится значение n.
- После этого цикл repeat завершается, и программа продолжает работу со следующим вводом пользователя.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д