Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Приближённое вычисление ArcSin (C++)

20K
04 ноября 2006 года
STALK3R
5 / / 04.11.2006
Нужно написать простенькое консольное приложение для вычисления arcsin с помощью стандартой функции (насколько я понимаю это asinl()). А также приближённое вычисление (по формуле), учитывая погрешность, введённую пользователем (0 < EPS < 1). Проблема как раз таки в этой формуле.. Никак не могу составить её, для итерационного посчёта, т.е. когда каждый следующий член вычисляется умножением предыдущего на чего-то там..
Честно говоря даже стыдно, что создавая сложные системы управления на PHP, я не могу создать несложную мат. формулу:confused:
3.2K
05 ноября 2006 года
Sania
186 / / 28.10.2006
Я бы сделал так:
Код:
double a=1/6.;
int at=3;
double xs=x*x*x;
xp=x;
xn=x+xs*a;
while ((xn-xp>eps)||(xn-xp<-eps))
{
xp=xn;
xs*=x*x;
at+=2;
a*=at/(at+1);
xn+=xs*a;
}
20K
05 ноября 2006 года
STALK3R
5 / / 04.11.2006
А мона поподробней?
Я пока что написал так:
Код:
#include <iostream>
#include <cmath>
using namespace std;

float eps_arcsin(float X, float EPS)
{
    float sum = 0, a = 1;
    int i;
    for (i = 1; a >= EPS || a <= -EPS; i++)
    {
        a = a*X*X*(2*i-1)/(2*i*(2*i+1));
        sum += a;
    }
    return sum;
}


int main()
{
    float X, EPS;
    cout << "Enter X: ";
    cin >> X;
    cout << "\nEnter EPS: ";
    cin >> EPS;
    cout << "EPS ArcSin: " << eps_arcsin(X, EPS) << "\n";
    cout << "Standart ArcSin: " << asin(X) << "\n";
    system("PAUSE");
    return 0;
}


Но тут ошибка, слишком уж различаются Standart и EPS ArcSin. Тем более что тут EPS вобще ни на что не влияет. Цикл почему-то совершается всегда только 1 раз... Это из-за неправильных значений sum / a / i?? Вот только что из них неправильно
63
06 ноября 2006 года
Zorkus
2.6K / / 04.11.2006
[QUOTE=STALK3R]Честно говоря даже стыдно, что создавая сложные системы управления на PHP, я не могу создать несложную мат. формулу:confused:[/QUOTE]
Почему стыдно??? это разные вещи совершенно, web и математика. Для приближенного вычисления таких вещей обычно используют ряд Маклорена (Тейлора). Советую почитать Фихтенгольц, Мат. Анализ, Т.1, а вообще разложение такой известной функции наверняка есть в любом справочнике по высшей математике.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог