IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Вычисление значений тригонометрических функций на основе разложения в ряд Маклорена
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Бадык

Репутация: -  0  +


помогите пожалуйста сделать задание...
Вычисление значений тригонометрических функций на основе разложения в ряд Маклорена
1. Вычислить с заданной точностью значения тригонометрических функций arctg(x);
2. Построить графики функций arctg(x), где x - ограниченно;
3. Оценить погрешности вычислений;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Mad Dam, само разложение функции в ряд Маклорена знаешь, как делается? Я имею в виду не запрограммировать, а просто разложить, что будет из себя представлять ряд для Arctg(x)?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Бадык

Репутация: -  0  +


вот я нашел в интернете...
arctg x=x-x^3/3+x^5/5-x^7/7+...+(-1)^n*(x^(2n+1)/(2n+1))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
вот я нашел в интернете...
Вот и прекрасно... Теперь пишешь функцию, вычисляющую значение этого ряда с заданной точностью Eps:
function _arctan(x: double): double;
const
eps = 0.0001;
var
next: double;
i: integer;
begin
result := 0; next := x; i := 1;
repeat
result := result + next / i;
next := - next * sqr(x);
inc(i, 2);
until abs(next) < eps;
end;
, и стоишь графики (это уже самостоятельно, можешь использовать Chart, можно рисовать вручную на Canvas) с использованием этой функции, и с использованием библиотечной Math.ArcTan. Погрешность вычисляешь, суммируя модуль разности библиотечной и своей функции. Попробуй, что не получится - скажешь...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Бадык

Репутация: -  0  +


скажи пожалуйста...с использованием какой именно функции и что такое библиотечная Math.ArcTan...?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Я тебе выше написал код. Так _arctan, это по-твоему, что? Не функция? Программ "под ключ" я уже давно не пишу, думай сам. А насчет библиотечной функции - подключаешь модуль Math в списке Uses, и используешь функцию ArcTan оттуда для проверки результатов самописной функции.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Бадык

Репутация: -  0  +


спасибо огромное...сейчас попробую..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Бадык

Репутация: -  0  +


привет..а тот код написан на delphi или pascal? извини за глупые вопросы, просто я мало чего в этом понимаю..(
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Это Дельфийский код, раз там присутствует Result... Турбо Паскаль про эту переменную не знает...

А с чего возник этот вопрос? Что-то не получается откомпилировать в Дельфи? Тогда говори, что именно.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Бадык

Репутация: -  0  +


ну вот я вставляю код, который ты мне прислал после implementation
запускаю на выполнение, он запускает, но результата ничего не пишет...вот я думаю, сейчас надо добавить написать в Uses - Math, далее добавить в форму Button и Chart, и через
x:=-1;
while x<=1 do begin
s.AddXY(x , _arctan(x) );
x:=x+0.0001;
end;
построить график арктангенса, только я не пойму для чего при построении графика нужен модуль Math и функция arctan...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Цитата
ну вот я вставляю код, который ты мне прислал после implementation запускаю на выполнение
... и что ты хочешь, чтоб случилось? Я тебе привел функцию, которая что-то вычисляет. Эту функцию еще надо вызвать, чтобы получить какой-нибудь результат, правда? Ты ее вызывал? Нет. Вот, вызывай, и отображай результат хотя бы в Memo или StringGrid-е, чтобы его было видно

Добавлено через 3 мин.
Цитата
только я не пойму для чего при построении графика нужен модуль Math и функция arctan...
Задание перечитай внимательно:
Цитата
3. Оценить погрешности вычислений;
Как ты собрался оценивать погрешность, не используя КАК МИНИМУМ ДВЕ функции? Одну я написал, вторая - библиотечная... Я ж сказал: вычисляешь модуль разности, и делишь его на количество вычисленных значений. Получаешь среднюю погрешность...

Ты для себя сначала словесный алгоритм составь, не бросайся сразу что-то программировать, пойми задачу, что вообще от тебя требуется...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Бадык

Репутация: -  0  +


спасибо..
блин...я даже не знаю как ее вызвать и записать в StringGrid..вот я тупой

Добавлено через 10 мин.
вот нашел в интернете вчера код на паскале для разложения косинуса в ряд...только там график не строится..

Program Cosin1;
var n: word; Cosa: double; xx, slagaem: double; eps,cos1: double;
begin
n:=0; cosa:= 1; slagaem:= 1;
writeln('Вычислим косинус заданного угла.');
write('Введи угол (в радианах, <= 0.7)'); readln(xx);
write('Введи допустимую погрешность (1E-5)--> '); readln(eps);
Repeat
slagaem := -slagaem*sqr(xx)/((n+1)*(n+2));
Cosa := Cosa + slagaem;
inc(n,2);
until abs(slagaem) < eps;
cos1:= cos(xx);
writeln('Cosa = ',cosa,' Cos(x) = ',cos1);
writeln('Погрешность факт. = ',abs(cosa - cos1));
readln;
end.

помоги пожалуйста перестроить его для арктангенса..может так полегче будет..а то я не знаю..вообще ни в чем не разбираюсь, а сделать как-то нужно, чтоб не выкинули..=(
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Вот программа:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series;

type
TForm1 = class(TForm)
Chart1: TChart;
Button1: TButton;
Series1: TLineSeries;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

function _arctan(x: double): double;
const
eps = 0.0001;
var
next: double;
i: integer;
begin
result := 0; next := x; i := 1;
repeat
result := result + next / i;
next := - next * sqr(x);
inc(i, 2);
until abs(next) < eps;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
x, delta: double;
n: integer;
begin
Series1.Clear;
x := -0.99; n := 0;
while x < 1 do begin
Series1.AddXY(x, _arctan(x));
delta := delta + abs(_arctan(x) - ArcTan(x));
x := x + 0.01;
inc(n);
end;
Edit1.Text := 'Average delta = ' + FloatToStr(delta / n);
end;

end.
, на Chart-е одна Серия, типа TLineSeries... После нажатия на кнопку получаешь в Чарте график арктангенса, а в Edit-е - среднюю погрешность вычисления. Вот так это выглядит:
Прикрепленное изображение
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Бывалый
****

Группа: Пользователи
Сообщений: 318
Пол: Мужской

Репутация: -  0  +


Попробуй по другому по решать)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Бадык

Репутация: -  0  +


спасибо большое...я честно очень тебе благодарен...
и извини что раньше не поблагодарил...просто у меня компьютер сломался и я только что его починил...еще раз огромное спасибо! я летом в штаты лечу, тебе сувенир привезу)..серьезно!

Добавлено через 7 мин.
а скажи пожалуйста...где он вычисляет значение функции применяя алгоритм...вернее где выводит...?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Бадык

Репутация: -  0  +


вот смотри код немного переделал...

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TeEngine, TeeFunci, Series, ExtCtrls, TeeProcs, Chart, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Chart1: TChart;
Series1: TFastLineSeries;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

function _arctan(x: double): double;
const
eps = 0.0001;
var
next: double;
i: integer;
begin
result := 0; next := x; i := 1;
repeat
result := result + next / i;
next := - next * sqr(x);
inc(i, 2);
until abs(next) < eps;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
x, delta: double;
n: integer;
begin
Edit3.Text := 'Вычисление по Маклорену = ' + FloatToStr(_arctan(x));
Series1.Clear;
x := -0.99; n := 0;
while x < 1 do begin
Series1.AddXY(x, _arctan(x));
delta := delta + abs(_arctan(x) - ArcTan(x));
x := x + 0.01;
inc(n);
end;
Edit1.Text := 'Погрешность = ' + FloatToStr(delta / n);
Edit2.Text := 'Проверка вычислений = ' + FloatToStr(ArcTan(x));
end;
end.


получилася следущая программа...


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Бадык

Репутация: -  0  +


volvo, помоги пожалуйста...исправить и сделать что не так...

Сообщение отредактировано: Mad Dam -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Гость






Ты сначала расскажи, что такое "Проверка вычислений"? Ты вычисляешь одно значение с помощью функции ArcTan, значение при X = 1.0. Что именно ты этим проверяешь?

По поводу погрешности - обнули Delta там же, где обнуляешь N, получишь правильный результат погрешности...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Бадык

Репутация: -  0  +


ну правильность решения _arctan(x) проверяю с помощью Math'овской ArcTan.....или это выводится где и я выводил _arctan?

Добавлено через 9 мин.
вот он выводит...
Маклорен = 2,07772247244556E-307
Проверка = 2,07772247244556E-307
Погрешность = 2,79364812104946E-6
правильно же?)

Сообщение отредактировано: Mad Dam -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Бывалый
****

Группа: Пользователи
Сообщений: 318
Пол: Мужской

Репутация: -  0  +


Помогите написать функцию которая осуществляет это разложение
Вот разложил синус по ряду маклорена:


Сообщение отредактировано: dron4ik -


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.04.2024 15:18
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name