Форум программистов, компьютерный форум, киберфорум
Assembler: математика, вычисления
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 17.04.2012
Сообщений: 24
1

Вычислить число Pi по приближению Pi/4 == 4*Arctan(1/5) – arctan(1/239)

17.04.2012, 22:11. Показов 5206. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Умоляю помогите написать срочно программу ооочень нужно

Аппроксимация 3. Для числа Pi известна формула
Pi/4 == 4*Arctan(1/5) – arctan(1/239)
Ряд Тейлора для арктангенса
у= x- x^3/3 + x^5/5 – x^7/7 + x^9/9….
Этот ряд достаточно быстро сходится при abs(x) <=1/2
Сколько надо взять членов в ряде, чтобы вычислить число Пи хотя бы с 5-7 знаками после запятой? (Это умели еще в средние века).
Сравнить полученное значение с точным.

Пожалуйстаа
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2012, 22:11
Ответы с готовыми решениями:

Вычислить значение функции y:=sqrt(exp(x)-b)+arctan(sqrt(x/(b-x)))
Вычислить значение функции y:=sqrt(exp(x)-b)+arctan(sqrt(x/(b-x))) -1&lt;=b&lt;=1 db=0.1 0.39&lt;=x&lt;=0.99...

Возведение Arctan в квадрат
как возвести Arctan в квадрат? Добавлено через 18 секунд В Паскале

Нарисовать график функции y=arctan(x)
Нарисовать график функции y=arctan(x) прошу помощи .

write(arcTan(1)); почему резултат не 45 ?
write(arcTan(1)); почему резултат не 45 ? Зарнее спасибо

21
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
17.04.2012, 22:24 2
Цитата Сообщение от polyakov1993 Посмотреть сообщение
Это умели еще в средние века
Не нам не вам от этого не легче.

polyakov1993, представляешь что примерно надо делать?
0
0 / 0 / 0
Регистрация: 17.04.2012
Сообщений: 24
17.04.2012, 22:29  [ТС] 3
Я сишный код написал можно сделать вставки а можно гольный ассемблер написать но я в ассемблере плохо разбираюсь очень помощь нужна

Добавлено через 2 минуты
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<conio.h>


double arctagen(double x, int n)
{
int i;
double tmp=0.;
for(i=1;i<=n;i++)
{
tmp=tmp+(pow(-1,i-1)/(2*i-1))*pow(x,2*i-1);
}
return(tmp);
}
int main()
{
int n,i;
double Pi;
while (fabs(M_PI-Pi)>1e-6)
{
Pi=4*(4*arctagen(1./5.,n)-arctagen(1./239.,n));
printf("M_PI=%.10f\t Pi=%.10f\t |M_PI-Pi|=%.10f\n",M_PI,Pi,fabs(M_PI-Pi));
n++;
}
return(0);
}

Вот сишный код помогите пожалуйста
0
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
17.04.2012, 22:35 4
Цитата Сообщение от polyakov1993 Посмотреть сообщение
Я сишный код написал
Выкладывай взглянем, хоть что-то!

Добавлено через 5 минут
polyakov1993, в итоге результат верный?
Прикрепи программу что в итоге получится должно!
0
0 / 0 / 0
Регистрация: 17.04.2012
Сообщений: 24
17.04.2012, 22:38  [ТС] 5
Работает всё верно в ответе получается число пи
0
Клюг
7675 / 3190 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
18.04.2012, 00:40 6
Не компилится. Кто такой M_PI?
0
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
18.04.2012, 00:52 7
Цитата Сообщение от Charles Kludge Посмотреть сообщение
Кто такой M_PI?
Как понял истинное Pi;
0
56 / 56 / 16
Регистрация: 01.08.2011
Сообщений: 141
18.04.2012, 01:37 8
Цитата Сообщение от Charles Kludge Посмотреть сообщение
Не компилится. Кто такой M_PI?
Дабавь перед подключением math.h строку
C++
1
2
3
4
// ...
#define _USE_MATH_DEFINES
#include <math.h>
// ...
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
18.04.2012, 06:32 9
;Pi/4 == 4*Arctan(1/5) – arctan(1/239)

Для вычисления напиши вверху директиву .486, чтобы использовать сопроцессор.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
res1 dd 0.2 
res dd 0 ; это в сегменте данных
 
 
 
 
 
fld 1 ;а это код
fdiv 239
fstp res
fld res1
farctan
fstp res1
fld res1
fmul 4
fstp res1
fld res
farctan
fstp res
fld res1
fsub res
fld res
fmul 4
fstp res ; это число Pi
0
0 / 0 / 0
Регистрация: 17.04.2012
Сообщений: 24
18.04.2012, 07:09  [ТС] 10
Так вроде с кодом разобрался,спасибо большое,а вот где строки пропущены там что должно быть?

Добавлено через 17 минут
хотя не совсем разобрался,что такое fld 1
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
18.04.2012, 07:18 11
Тут вкралась ошибка. Надо было в разделе данных написать one dd 1.0, а в разделе кода вместо 1 - one. Это просто опечатка.
0
Ушел с форума
Автор FAQ
16338 / 7659 / 1075
Регистрация: 11.11.2010
Сообщений: 13,698
18.04.2012, 08:50 12
programmisto, fld1 — это команда такая — её нужно писать слитно
0
0 / 0 / 0
Регистрация: 17.04.2012
Сообщений: 24
18.04.2012, 08:54  [ТС] 13
Что эта команда выполняет?
0
Ушел с форума
Автор FAQ
16338 / 7659 / 1075
Регистрация: 11.11.2010
Сообщений: 13,698
18.04.2012, 09:36 14
polyakov1993, загружает на вершину стека сопроцессора единицу. А вообще впечатление такое, что микроскоп используется для забивания гвоздей - в сопроцессоре есть команда для вычисления арктангенса, поэтому программу для получения числа Пи по формуле Pi/4 = 4*Arctg(1/5) – arctg(1/239) нужно писать так
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
.data
x dd 5.0
y dd 239.0
result dd ?
.code
    finit; инициализирую сопроцессор
    fld1; st(0)=1
    fld y; st(0)=239 st(1)=1
    fpatan; st(0)=arctg(1/239)
    fld1;st(0)=1 st(1)=arctg(1/239)
    fld x; st(0)=5
    fpatan; st(0)=arctg(1/5) st(1)=arctg(1/239)
    fld st(0); st(0)=st(1)
    fadd ;st(0)=2*st(0)
    fld st(0)
    fadd; st(0)=4*arctg(1/5)
    fsubr; st(0)=4*arctg(1/5)-arctg(1/239)
    fld st(0)
    fadd 
    fld st(0)
    fadd; st(0)=16*arctg(1/5)-4*arctg(1/239)
    fstp result
0
0 / 0 / 0
Регистрация: 17.04.2012
Сообщений: 24
18.04.2012, 09:43  [ТС] 15
Спасибо,почему то выдаёт ошибку при компиляции в строке
1 .data
0
Ушел с форума
Автор FAQ
16338 / 7659 / 1075
Регистрация: 11.11.2010
Сообщений: 13,698
18.04.2012, 09:59 16
polyakov1993, а указывать модель памяти и тип процессора не пробовал? Это "мясо" для твоей программы, стандартную шапку, вывод результата и выход из программы пиши сам
1
0 / 0 / 0
Регистрация: 17.04.2012
Сообщений: 24
18.04.2012, 11:09  [ТС] 17
В какой среде ты это делал?

Добавлено через 11 минут
И ещё как реализовать ассемблерные вставки в сишный код для этой же программы?

Добавлено через 52 минуты
Почему в программе нет аргументов например у арктангенса?
0
Ушел с форума
Автор FAQ
16338 / 7659 / 1075
Регистрация: 11.11.2010
Сообщений: 13,698
18.04.2012, 11:44 18
polyakov1993,
1) masm
2) __asm {
вставка
}
3) очень сложно набрать в Google "команда fpatan"?
0
0 / 0 / 0
Регистрация: 17.04.2012
Сообщений: 24
18.04.2012, 19:04  [ТС] 19
Пожалуйста напишите проще и желательнее с комментами каждой строки что она делает
0
Ушел с форума
Автор FAQ
16338 / 7659 / 1075
Регистрация: 11.11.2010
Сообщений: 13,698
19.04.2012, 03:46 20
polyakov1993,
1) найди учебник
2) комментарии написаны, смотри внимательно, если что-то не понятно смотри пункт первый
3) куда уж проще, хотя если выполнишь первый и второй пункт, попробуй переписать мою программу, хз, может быть напишешь проще
0
19.04.2012, 03:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.04.2012, 03:46
Помогаю со студенческими работами здесь

Посчитать сумму ряда (arctan)
Помогите пожалуста ! на С++ http://*******.ru/i8Y6G

Составить программу, использующую процедуры и функции модуля System: Exit, Chr, Abs, ArcTan, Dec, Random
Составить программу, которая использует следующие процедуры и функции модуля System: Exit, Chr,...

Вычислить S=16arctg1/5-4arctg1/239
через ряд arctgx=x-x^3/3+x^5/5-x^7/7+...(с точностью eps.&gt;0) помогите еще пожалуйста)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru