Newton–Raphson method

hi guys.I have a question.I created a program but this program execute for some input files but this program does not execute another input files. for example
input file is okey.
3
3 1 -2 4

but
if my input files is
5
1 0 0 -3 1 0 this program executes wrongly.

my code is here..

#include <iostream>
#include <fstream>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <string>

#include<cstdlib>
#include<vector>

using namespace std;


double u,newx;
double j,newson,newfin,term;
int sayac;
int result;
double top,final,y,sonuc,fark;

vector<int>satir;
string karakter;
int derece;

double eps=0.000001;




double olustur(double u)
{
double toplam = 0;
int value = derece;
for(int i=0; i<derece; i++)
{
toplam += satir[i] * pow(u,value);
value--;
}
toplam += satir[derece];

return toplam;
}


void oku(char file[])
{
ifstream reader(file);

reader >> derece;
int value;


for (int i=0; i<=derece; i++){
reader >> value;
satir.push_back(value);
}
}
double turev(double u)
{
double result=0;
int g=0;
int value = derece;
for (int k=value; k>=0; k--)
{
int gel=satir[g];
result=result + k*gel*pow(u,k-1);
g=g +1;

}
return result;
}
double newton(double u,double fx,double fxx)
{
double newx = u - (fx / fxx);

while (abs(fx)>eps)
{
u = newx;
fx=olustur(newx);
fxx=turev(newx);
newx=newx -(fx/fxx);

}
return newx;

}

void yaz(char file_name[])
{
ofstream output_file (file_name);

output_file << newfin;
output_file.close();


}

int main( int argc, char* argv[])
{
srand(time(NULL));

if(argc==3)
{
oku(argv[1]);
u =rand();

sonuc = olustur(u);
j=turev(u);
newfin=newton(u,sonuc,j);

yaz(argv[2]);

}else{
cout << "Wrong input";

}
return 0;
}


Last edited on
Topic archived. No new replies allowed.