Консультация № 188595
04.01.2016, 20:31
0.00 руб.
04.01.2016, 20:41
0 6 1
Здравствуйте! У меня возникли сложности с таким вопросом:
Нужно было запрограммировать на С++ метод простых итераций,
для x4+x3-x-1 на отрезке [0;1] e=0.0001.
Не могли бы помочь, где я коде допустил ошибку(неправильно считает), по теории вроде бы все верно..
Спасибо заранее.

Приложение:
//
// main.cpp
//
// Created by Rustam on 04.01.16.
// Copyright © 2016. All rights reserved.
//

#include <cmath>
#include <iomanip>
#include <iostream>
using namespace std;
#define pi 3.14
// Основная функция
double f(double x) {

return pow(x, 4)+2*pow(x, 3)-x-1;
}
// 1 производная ф-и
double f1(double x) {

return 4*pow(x, 3)+6*pow(x, 2)-1;
}
//2 производная ф-и
double f2(double x) {

return 12*pow(x, 2)+12*x;
}
// Метод простых итераций
void iterat (double xA,double xB, double xE) {
int n = 0;
double x0,x1;
x1 = (xA+xB)/2.0;
do{
x0=x1;
x1=f(x0);
n+=1;
}
while (fabs(x0-x1)>=xE);
cout<<"x="<<x1<<"\n";
cout<<"n="<<n<<"\n";
}

int main() {
double A,B,E;
// insert code here...
cout << "Enter A and B:";
cin >> A; cin >> B;
cout << "Enter Eps:"; cin >> E;
cout << "Метод простых итераций:\n";
iterat (A,B,E);
return 0;
}

Обсуждение

в сети
Управляющий
143894
2148
04.01.2016, 20:42
общий
Адресаты:
Обратите внимание на этот вопрос, перенесенный из другого раздела.
Об авторе:
Устав – есть устав! Если ты устав – то отдыхай!


давно
Посетитель
7438
7205
04.01.2016, 23:26
общий
это ответ
Здравствуйте, Сергей В.!
Ошибка в функции iterat
Увы, по теории все немного по-другому.
Формула ж такая:

Код:

void iterat (double xA, double xB, double xE) {
int n = 0;
double x0,x1;
x1 = (xA+xB)/2.0;
do{
x0=x1;
x1=x0-f(x0)/f1(x0);
n+=1;
}while (fabs(x0-x1)>=xE);
cout<<"x="<<x1<<endl;
cout<<"n="<<n<<endl;
}
5
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
05.01.2016, 11:59
общий
Так?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Профессионал
304622
583
05.01.2016, 20:19
общий
Адресаты:


Я бы посоветовал вам, Сергей, уточнить постановку задачи. Игорь Витальевич предложил вам реализацию метода Ньютона. Этот метод, действительно, является частным случаем метода простых итераций. Но нередко его всё-таки рассматривают, как отдельный метод. Может получиться, что решение будет расченено, как несоответсвующее постановке.

Сверьтесь с теорией. Может быть от вас требуется выразить итерационную формулу из функции f(x)?
давно
Посетитель
399388
6
05.01.2016, 22:08
общий
Адресаты:
В постановке было указано, решить данное уравнение 2 методами: методом итераций, Ньютона(касательных) и методом половинного деления.
давно
Профессионал
304622
583
08.01.2016, 01:13
общий
Адресаты:
Вот как? А какой это предмет: программирование или вычислительная математика?

Условие сходимости, например, не надо проверять?
Форма ответа