Вычислить и вывести на экран значение функции F(x) на отрезке [a,b]. Как такое решать?
Вычислить и вывести на экран значение функции F(x) на отрезке [a,b] с точностью e.
F(x) = 1 + (x/3) + pow((x/3),2)... [0, 0.9], при шаге 0.1
Не столько сам алгоритм интересует, сколько понять, что здесь от меня надо.
Как привести это к рекурентной форме? Конкретно сам алгоритм могу составить, просто нужно понять, в какой момент нужно выходить из цикла.
Ну и вообще общее понимание решение подобных задач.
longclaps, Да, что ты чудик с горы. Одно дело алгоритм пятиминутный, другое дело проект, курсовая и далее по списку. Нормальному чуваку мелочь пятиминутную раскидать и дальше двинуться - дело простое, а чудик за каждый пердых лепит ценник. Ну, въехал, милый?..
Rsa97, Это-то как раз самая простая история в этом алгоритме. Другой вопрос - внутри функции f(x) есть цикл, внутри которого идет суммирование. Само собой в цикле. И тут вопрос - когда тот цикл должен прекратить суммировать? Ведь ряд может быть бесконечно расходящимся, нужно условие для выхода. Я так понимаю, какая-то переменная e, которая вводится с клавы, что ли. Короче, суть этой переменной мне не ясна. Тут дело такое, что сам алгоритм для меня плевое дело, а вот разобраться с лету в этих рядах не выходит.
longclaps, а кто сказал, что не готов?..
Само собой торгуюсь, где ты здесь олигархов увидел?
На пару соточек готов раскошелиться, алгоритм такой написать - простая история, въехать в эти ряды за пару часов - вот вопрос. Не себе пишу, люди попросили.
longclaps, 200 р))
Я прекрасно понимаю, что там 1 простая функция, помимо main(), которая гоняет цикл с подсчетом суммы по заданной формулы до какого-то предела. Ну и цикл от 0 до 0.9, который в функцию толкает x от 0 до 0.9
И все это прекрасно ляжет в 15-20 строк и 10 минут времени))
https://yadi.sk/i/Jxlo-7doePdjzA
вот задание
как я понял, x принимает по очереди значения от 0 до 0.9, а функция f(x) суммирует некоторую переменную по формуле до тех пор, пока что-то не случится в e (типа while(x < e))
Не?
muhasa, что же ты не указываешь адресата реплики? Я уж тебя было потерял (
А знакома тебе формула суммы геометрической прогрессии? Если не знакома - готов открыть её для тебя.
#include <iostream>
#include <iomanip>
using namespace std;
double F (double x, double E, int &n)
{
double s, r, x0;
x /= 3.0;
for (n = 0, s = x0 = 1.0; ; ++n)
{
x0 *= x;
r = s + x0;
if (n && r - s < E)
return r;
s = r;
}
}
int main()
{
int i, n;
double x, E, v;
cout << ("Введите e: ");
cin >> E;
if (E < 0.00000001 || E > 0.1)
{
printf ("Следует ввести E в пределах между 0.00000001 и 0.1");
system ("pause");
return 0;
}
for (x = 0.0, i = 0; i < 10; ++i, x += 0.1)
{
v = F (x, E, n);
cout << i + 1 << "\t" << x << "\t" << v <<"\t" << n << endl;
}
return 0;
}