Страница 3 из 3
Re: Разложение sh(x) в ряд
Добавлено: 09 май 2008, 17:55
Alex_Burn
Здравствуйте, у меня вопрос насчет программы из поста #20.
Я по началу не обратил внимания, но если аргуент у функции отрицательный, то ее значение расходится со значением функции sinh . И чем больше отрицательное число по модулю, тем больше разница в значениях.
Подскажите пожалуйста почему так происходит и как это перебороть?

Re: Разложение sh(x) в ряд
Добавлено: 11 май 2008, 16:59
Alex_Burn
Подскажите, пожалуйста. Ведь по алгоритму все вроде логично, но разница, тем не менее, появляяется. Не пойму где косяк.

Re: Разложение sh(x) в ряд
Добавлено: 11 май 2008, 17:10
somewhere
" писал(а):у меня вопрос насчет программы из поста #20.
В посте №20 нет кода.
" писал(а):по алгоритму все вроде логично, но разница, тем не менее, появляяется
Выкладывайте свой код
Re: Разложение sh(x) в ряд
Добавлено: 11 май 2008, 17:18
Alex_Burn
В посте №20 нет кода.
Пардон, промазал. Имел ввиду пост №18.
Я использую функцию оттуда.
Это несколько измененный
airyashov ваш код.
Re: Разложение sh(x) в ряд
Добавлено: 11 май 2008, 17:23
somewhere
" писал(а):Это несколько измененный airyashov ваш код.
В этом посте была изменена основная часть алгоритма, думаю этот вопрос именно к
airyashov
Re: Разложение sh(x) в ряд
Добавлено: 11 май 2008, 17:50
Alex_Burn
Понятно.
Откровенно говоря я до сих пор не пойму смысл строк
[Syntax="ASM"]
test ax, 01000010100000000b
jz cycle
[/Syntax]
Почему ах тестируется именно с 01000010100000000b ?
В ах на тот момент хранится результат сравнения.
Re: Разложение sh(x) в ряд
Добавлено: 11 май 2008, 22:05
airyashov
Я думаю при оценке погрешности результат
т.е.
Это сравнение соотвествует условию st(0)>e, т.е цикл выполняется пока оно истина
тут по модулю сравнивать надо, затра проверю на работе
Re: Разложение sh(x) в ряд
Добавлено: 11 май 2008, 22:12
Alex_Burn
Я понимаю, что это должно быть условием выхода из цикла. Мне не понятен сам механизм. Не ясно откуда взялось число 01000010100000000b. А насчет разночтений, проверьте пожалуйста.
Re: Разложение sh(x) в ряд
Добавлено: 12 май 2008, 08:47
airyashov
Код: Выделить всё
#include <iostream.h>
#include <math.h>
double shx(double argument, double precision)
{
double factorial = 2;
double function;
_asm
{
fld argument
fld st(0)
cycle:
fmul argument
fmul argument
fdiv factorial
fld factorial
fld1
fadd
fdiv st(1), st(0)
fld1
fadd
//fdiv st(1), st(0) // ? «»??? nN???, ?N?????a? o st(1)
fstp factorial
fadd st(1), st(0)
fld st(0)
fabs
fcomp precision
fstsw ax
sahf
ja cycle
fstp factorial
fstp function
}
cout<<factorial<<endl;
return function;
}
int main(int argc, char* argv[])
{
long double x=-2 ,e=0.000001 ;
char ch;
cout<<shx(x,e)<<endl<<sinh(x)<<endl;
cin.get(ch);
return 0;
}
Re: Разложение sh(x) в ряд
Добавлено: 20 май 2008, 10:03
Alex_Burn
Спасибо большое, работает.