Консультация № 175497
21.12.2009, 19:10
35.00 руб.
0 4 1
Здравствуйте,уважаемые эксперты!Реализую решение нелин ур-е методом ньютона.
Помогите,пожалуйста,модернизировать программу так ,чтобы все входные данные :начальное приближение А,заданная точность E и предельное число итераций maxstep вводились из входного файла,а резултаты:X и step выводились в выходной файл.Т.е.ввод-вывод сделать файловым.Кроме этого,желательно дополнить программу сообщением об ошибке:если недостигнута заданная точность за заданное число итераций.

Приложение:
#include<iostream.h>
#include<conio.h>
#include<math.h>

static double const E = 0.000001; //точность
static double const A = -9; //точка А- начальное приближение

double getValueFunction(double x); //возвращает значение функции в точке х
double getValueFirstDerivativeFunction(double x); //возвращет значение первой производной функции в точке х

int main(void)
{
int step[2] = {0,0}; //счетчик шагов для методов
double x[2] = {0.0,0.0}; //итерации предыдущая и последуящая
double f_A = getValueFunction(A);

clrscr();

x[1]=A;
do
{
step[0]++;
x[0]=x[1];
x[1]=x[0]-getValueFunction(x[0])/getValueFirstDerivativeFunction(x[0]);
}
while(E < fabs(x[0] - x[1]));
cout<<"X = "<<x[1]<<endl;
cout<<"Steps = "<<step[0]<<endl;

getch();
return 0;
}

double getValueFunction(double x)
{
double function = x-7*sin(0.3*x);
return function;
}

double getValueFirstDerivativeFunction(double x)
{
double firstDerivativeFunction = 1-2.1*cos(0.3*x);
return firstDerivativeFunction;
}

Обсуждение

давно
Профессор
230118
3054
21.12.2009, 22:37
общий
РАИ:
Пока никакого maxstep в программе нет. Как вы собираетесь использовать эту переменную?
Неизвестный
21.12.2009, 22:44
общий
РАИ:
А в чем проблема то?
Код:

#include <fstream>
...

{
...
std::ifstream in("Имя файла");
in>>A>>E>>maxstep;
...
std::ofstream out("Имя файла");
out<<Результаты;
...
}

Копайте в этом направлении.
давно
Профессор
230118
3054
22.12.2009, 19:27
общий
это ответ
Здравствуйте, РАИ.

Для ввода-вывода используются потоки ifstream и ofstream.

Приложение:
static double E = 0.000001; //точность
static double A = -9; //точка А- начальное приближение
static int maxstep=100;

double getValueFunction(double x); //возвращает значение функции в точке х
double getValueFirstDerivativeFunction(double x); //возвращет значение первой производной функции в точке х

int main(void)
{
int step[2] = {0,0}; //счетчик шагов для методов
double x[2] = {0.0,0.0}; //итерации предыдущая и последуящая
double f_A = getValueFunction(A);

ifstream f1("Вход.txt");
f1>>A;
f1>>E;
f1>>maxstep;

x[1]=A;
do
{
step[0]++;
x[0]=x[1];
x[1]=x[0]-getValueFunction(x[0])/getValueFirstDerivativeFunction(x[0]);
}
while(E < fabs(x[0] - x[1]) | step[0]<=maxstep);

ofstream f2("Выход.txt");
f2<<"X = "<<x[1]<<endl;
f2<<"Steps = "<<step[0]<<endl;
if(step[0]>maxstep)
f2<< "Couldn't solve in " << maxstep <<"steps"<<endl;
return 0;
}
давно
Профессор
230118
3054
22.12.2009, 19:30
общий
std::ifstream пишите, если #include <iostream.h>. У меня #include <iostream> и using namespace std;
Форма ответа