我要编写一个函数,尝试使用牛顿法找到函数的零。
我有 x^7-1000 的函数和导数
double function(double x) {
return pow(x, 7) - 1000;
}
double derivative(double x) {
return 7 * pow(x, 6);
}
我还有牛顿函数
using fx = double(*)(double);
double newtons( fx f, fx df, double x0, double e )
{
double x1{};
while( true ) {
x1 = x0 - f( x0 ) / df( x0 );
if( std::abs( x1 - x0 ) <= e ) break;
x0 = x1;
}
return x1;
}
如何调用函数到我的 int main?
最佳答案
这很简单:
#include <iostream>
#include "my_functions.h"
int main(){
std::cout << newtons(function, derivative, 10.5, 1.0e-5) << std::endl;
}
注意(tx @martinbonner):使用模板和 STL,您可以使其更加通用:使用 lambda 表达式、现有函数……任何“可调用”的东西。
template<typename F>
double newtons(F f, F df, double x0, double e) {
... // same as your code
}
// usage:
auto x = newtons(std::sin, std::cos, 0.5, 1e-5);
auto x2 = newtons(
[](double d){ return d*d + 2*d - 1; },
[](double d){ return 2*d + 2; },
0,
1.0e-5);
关于c++ - 牛顿法调用函数 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42557764/