C/C++

Знатоки C++ и математики. Нужна ваша помощь.

Вот само задание.
В программировании я чайник, потому нужна ваша помощь.


Что-то в этом роде:
 #include   
#include
#include

using namespace std;

int main()
{
#define lX 1.0
#define rX 2.0
#define RNG (rX - lX)
float n;
float y;
float yd;
float l;
string sn;

cout
ЮР
Юрий Реостат
31 524
Лучший ответ
ξ - точность в каком смысле? Если это шаг по оси OX, то всего таких шагов при ξ=1е-3 или ξ=1e-4 будет 1000 или 10000. Длина ломаной при этом будет такая:
L = Σ(k=0; 1/ξ-1)√(ξ²+(y(k+1)-y(k))²)
И поехали считать:
#include <cmath>
#include <iostream>
using namespace std;
int main()
{
cout.precision(16);
double ξ, ξξ, k, s, x, u, v, w,
S = 1.222016177086634;
while (true)
{
cout << "ξ = ";
cin >> ξ;
ξξ = ξ * ξ;
s = u = 0.;
for (k = 0; k < 1 / ξ; k++)
{
x = 1. + k * ξ;
v = log(x + ξ);
w = v - u;
s += sqrt(ξξ + w * w);
u = v;
}
cout << s << ", err=" << s - S << endl;
}
}
S - это истинная длина дуги графика функции на сегменте [1;2], она тут нужна для контроля абсолютной ошибки. А вот что считает программа:По моему классная точность получается. Теперь если задача состоит в том, что задан модуль абсолютной точности ξ, а по нему надо вычислить число звеньев ломаной, тогда, естественно, всё надо переписывать, например, так:
#include <cmath>
#include <iostream>
using namespace std;
int main()
{
cout.precision(16);
double ξ, e, h, hh, k, s, x, u, v, w, n,
S = 1.222016177086634;
while (true)
{
cout << "ξ = ";
cin >> ξ;
for (n = 1;; n++)
{
h = 1 / n;
hh = h *h;
s = u = 0.;
for (k = 0; k < n; k++)
{
x = 1. + k * h;
v = log(x + h);
w = v - u;
s += sqrt(hh + w * w);
u = v;
}
e = fabs(s - S);
cout << n << ") " << e << endl;
if (e < ξ) break;
}
}
}
Вот тогда какие количества разбиений получаются при ξ=1e-3 и ξ=1е-4:Три в первом случае и восемь во втором. Но для установления этого факта сразу потребовалось достаточно точное значение длины куска кривой, которую ещё надо было откуда-то взять! Так что всё равно надо снова переписывать, но третий вариант (или какой он там у Вас окажется по счёту) давайте-ка лучше пишите самостоятельно, тем более как длину считать с высокой точностью Вы уже знаете...
Дмитрий Летяго
Дмитрий Летяго
66 572