Какую визуальную программу - Вы вообще про что?
Синус и косинус трудно будет реализовать для очень больших аргументов.
Ряд Маклорена для натурального логарифма у Вас неверный. Вот правильный ряд:
㏑(1+x) = ⅀(n=1;∞)(-1)ⁿ⁺¹xⁿ/n
При х=1 данный ряд сходится к ㏑2, но крайне медленно!
Кстати, где Вы эту картинку взяли - на calc ru? Вот же тоже идиоты - что ещё тут скажешь? Печатают всякую чушь!
Ряд для арктангенса при х=-1 расходится, а поэтому область его сходимости указана неправильно! Кроме того при х=1 данный ряд сходится к π/4, но крайне медленно!
Так что Вы хотели?
Вот как, например, реализуются функции для синуса, косинуса, натурального логарифма и арктангенса:
#include
#include
#include
using namespace std;
const double ε = 1e-17;
double q;
double Sin(double x)
{
double y = - x * x, p = x, s = x; q = 1.;
while (abs(p) > ε) s += (p *= y / ((q += 2.) * (q - 1.)));
return s;
}
double Cos(double x)
{
double y = - x * x, p = 1., s = p; q = 0.;
while (abs(p) > ε) s += (p *= y / ((q += 2.) * (q - 1.)));
return s;
}
double Ln(double x)
{
double y = - x, e = 1., s = 0., p = -1.; q = 0.;
while (abs(e) > ε) s += (e = (p *= y) / (q += 1));
return s;
}
double Arctg(double x)
{
double y = - x * x, e = 1., p = x, s = x, q = e;
while (abs(e) > ε) s += (e = (p *= y) / (q += 2.));
return s;
}
int main()
{
double x, y;
while (true)
{
cout << "x: ";
cin >> x;
y = Sin(x);
cout << "sin(x) = " << setprecision(15) << fixed << y
<< ", err = " << setprecision(5) << scientific << y - sin(x)
<< " (" << setprecision(0) << fixed << (q + 1.) / 2 << ')' << endl;
y = Cos(x);
cout << "cos(x) = " << setprecision(15) << fixed << y
<< ", err = " << setprecision(5) << scientific << y - cos(x)
<< " (" << setprecision(0) << fixed << (q + 1.) / 2 << ')' << endl;
y = Ln(x);
cout << "㏑(1+x) = " << setprecision(15) << fixed << y
<< ", err = " << setprecision(5) << scientific << y - log(1. + x)
<< " (" << setprecision(0) << fixed << q << ')' << endl;
y = Arctg(x);
cout << "arctg(x) = " << setprecision(15) << fixed << y
<< ", err = " << setprecision(5) << scientific << y - atan(x)
<< " (" << setprecision(0) << fixed << (q + 1.) / 2. << ')' << endl;
}
}
Если греческие литеры не поддерживаются, тогда ε лучше везде заменить на eps. Вместо abs можно fabs. В скобках - потребовавшееся количество взятых слагаемых для вычисления функций с точностью, близкой к машинной для вещественных чисел типа double, а перед этим - абсолютная точность расчёта по сравнению с функциями, вычисленными при помощи модуля cmath: