Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2013, 17:44   #1
Lizzzz
 
Регистрация: 11.04.2013
Сообщений: 3
По умолчанию Задача на способ последовательных приближений

Здравствуйте. Мне срочно нужно написать программу для решения задачи, но я не могу с ней справиться, я новичок в этом деле, задача для меня очень сложная. Пробовала по-всякому, не получается ничего... Условие попробую записать понятно, там сложные формулы, если что-то будет непонятно, спрашивайте
Способ последовательных приближений позволяет находить корень пятой степени из положительного числа a приближенно по формуле Xn+1 = 4/5* Xn + a/ 5*(Xn^4) . При этом разность между xn и (a^1/5) по абсолютной величине не превосходит 5/4*a*|Xn+1 - Xn| . Составить программу вычисления корня пятой степени из числа a с точностью до 10-k с заданным значением k, принимая X0 = (здесь должен быть знак системы) min(2*a, 0.95), a<=1 ; a/5, 1<a<25;
a/25, a>25
Помогите пожалуйста, если кто-нибудь сможет, без этой программы не ставят зачет. Я попыталась что-то написать, вот код, который у меня есть
Код:
#include <iostream>
#include <math.h>
#include <algorithm>
using namespace std;
int main()
{
setlocale(LC_ALL,"rus_rus.1251" ;
int a, k;
float xn1, xn, kpa, f;
cout << "Введите положительное число а:" << endl;
cin >> a;
cout << "Введите число k:"<< endl;
cin >> k;
if (a <= 1) xn = min (2.0*a, 0.95);
else if ((a > 1) && (a < 25)) xn = a/5;
else if (a > 25) xn = a/25;
f = pow(a, 1.0/5.0);
kpa - 4/5* xn + a/5* pow(xn,4);
if (((xn - f) = 5/4*a* abs(xn1-xn)) ||((xn - f) < 5/4*a* abs(xn1-xn)))
Дальше совсем запуталась...
Заранее спасибо

Последний раз редактировалось Stilet; 11.04.2013 в 18:22.
Lizzzz вне форума Ответить с цитированием
Старый 11.04.2013, 18:16   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Напишите вначале словами - что Вы хотите делать (то есть, что бы Вы делали, применяя этот метод на бумажке). Потом будем разбираться, как перевести это с русского на C++.
Решение задачи состоит из трёх частей:
1) Ввод данных - двух вещественных чисел.
2) Вычисление первого приближения (реализация того самого ветвления).
3) Последовательности "проверить текущее приближение - улучшить текущее приближение", повторяемой до достижения просветления.
Первая часть есть, но a почему-то может быть только целым (она вводит переменные a и k, я бы ещё на этом шаге ввёл переменную eps, равную 10^(-k)).
Вторая часть... есть, она устанавливает значение переменной xn.
Третьей части нет, поэтому сначала напишите её словами. Обратите внимание: f = pow(a, 1.0/5.0) Вам вычислять не надо - разве что вывести под конец, для справки. Корень Вы считаете другим способом, не опираясь на "готовую" функцию ни в какой мере.
Abstraction вне форума Ответить с цитированием
Старый 11.04.2013, 22:45   #3
Lizzzz
 
Регистрация: 11.04.2013
Сообщений: 3
По умолчанию

Спасибо за ответ, немного полегче стало, некоторые вещи прояснились) Ну вот как раз с этой самой третьей частью я никак не могу разобраться, не пойму, куда вставить этот кусок, где сказано про разность между Xn и корнем 5-й степени из а, и еще мне не совсем понятно именно то, как вычислить корень 5-й степени из а с точностью до 10^-k. Тут как раз тот случай, когда я не совсем пойму, что от меня требуется, поэтому и не получается реализовать в С++
Lizzzz вне форума Ответить с цитированием
Старый 12.04.2013, 11:43   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
3) Последовательности "проверить текущее приближение - улучшить текущее приближение", повторяемой до достижения просветления.
Код:
Пока (5/4*a*|Xn+1 - Xn| больше требуемой погрешности),
   В переменную для Xn занести текущее значение Xn+1 ("n увеличилось на 1")
   В переменную для Xn+1 занести результат вычисления (4/5* Xn + a/ 5*(Xn^4))
Если мы вышли из цикла, то, как нам дано, Xn+1 отличается от "идеального" корня пятой степени из a не более чем на величину требуемой погрешности.
Вопрос о том, почему это так, находится в ведении математического анализа, а не программирования.

Только перед входом в этот цикл надо первый раз посчитать Xn+1.
Abstraction вне форума Ответить с цитированием
Старый 12.04.2013, 14:07   #5
Lizzzz
 
Регистрация: 11.04.2013
Сообщений: 3
По умолчанию

Ну да, что посчитать Xn+1 нужно, это я поняла. Да, я как раз пробовала именно так, рак вы описали делать, только не все учла. Спасибо большое за помощь, думаю, теперь разберусь)
Lizzzz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление функции, используя улучшенный метод последовательных приближений (Вегстейн) на си lullaby Помощь студентам 2 17.01.2013 14:36
задача паскаль, скорее всего массив+рекурсия(хотя у меня другой способ) IvaniuS Помощь студентам 10 23.12.2009 15:34
Метод послед. приближений. Pascal Кэмерон Помощь студентам 7 24.05.2009 15:39