я не знаю, как определить функцию в cpp, но, как обычно, я определил мое:
#include<iostream>;
#include<Windows.h>;
using namespace std;
int main(){
int n;
int power;
//f(x) = x^power-n=0
cout << "please enter number of root: " << endl;
cin >> power;
cout << "what number you want to get root: "<< endl;
cin >> n;
double x = 2;//it the first x0 that newton algorithm needs
for (int i = 0; i<20000 ;i++)
{
//f(x) = x^power-n=0 , f'(x) = 2*x //fx:x^power
x = x - (fx(power,x) - n)/dif(power,x);
}
cout << "answer is " << x << endl;
return 0;
}
double fx (int power,int x){
for (int i = 1; i<power; i++)
{
x = x*x;
}
return x;
}
double dif (int power,int x){
//f(x) = x^power-n=0 -> f'(x) = power * x^(power-1)
if(power>1)
{
for(int i = 1; i<power-1 ;i++){
x = x*x;
}
x = x*power;
return x;
}
return 1;
}
и я столкнулся с двумя ошибками, которые говорят: Ошибка 2 ошибки C3861: 'fx': идентификатор не найден Ошибка 4 ошибки C3861: 'diff': идентификатор не найден, так что я должен делать?
Заявлять объявления функций
double fx (int power,int x);
double dif (int power,int x);
перед их использованием.
using namespace std;
double fx (int power,int x);
double dif (int power,int x);
int main(){
Теперь ваши функции неизвестны для компилятора, где вы пытаетесь их вызвать.
Любое имя должно быть объявлено до его использования. Вы используете имя функции fx
но после использования своего имени вы поместили его объявление (которое в то же время его определение). Место перед основной декларацией
double fx (int power,int x);
То же самое относится к относительной функции dif
fx
иdif
передmain
либо переместите их передmain
.