标题:指向函数的指针
只看楼主
几米的月亮
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2018-4-28
结帖率:33.33%
 问题点数:0 回复次数:2 
指向函数的指针
编写函数,用牛顿迭代法求方程f(x)=2x3-4x2+3x-6=0在1.5附近的根。
牛顿迭代公式为:xn+1=xn-f(xn)/f'(xn)
其中,f'(xn) 是f在xn处的导数。
结束条件:|f(xn+1)|< eps与|xn+1-xn|< eps同时成立(eps是一个很小的正数,从键盘输入)
同时编写主函数,在主函数中调用并输出函数值。
函数原型如下:
double root(double (*f)(double),double (*f1)(double),double x,double eps);
其中,形参f接收原函数f(x),形参f1接收导函数f'(x)
如输入:
1e-8
如输出结果为:
2.000000


结果运行不出来并且不能够调试,可以帮忙看一下问题出在哪里了吗

#include<stdio.h>
#include<math.h>
int main()
{
    double root(double(*f)(double), double(*f1)(double), double x, double eps);
    double y(double);
    double d(double);
    double x = 1.5;
    double eps;
    scanf_s("%lf\n",&eps);
    double h;
    h=root(y, d, x, eps);
    printf("%f\n", h);
}
double root(double(*f)(double), double(*f1)(double), double x, double eps)
{
    while (fabs((*f)(x) / (*f1)(x)) >= eps)
    {
        x = x - (*f)(x) / (*f1)(x);
    }
    if (fabs((*f)(x)) < eps)
        return x;
    else
        do
        {
            x = x - (*f)(x) / (*f1)(x);
        } while (fabs((*f)(x))>=eps);
   
        return x;
}
double y(double x)
{
    double z;
     z= 2*x*x*x - 4*x*x + 3*x - 6;
     return z;
}
double d(double x)
{
double r;
    r = 6*x*x - 8*x + 3;
    return r;
}

搜索更多相关主题的帖子: 指向 函数 指针 double return 
2018-05-16 02:10
童生
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:205
专家分:455
注 册:2018-3-7
得分:0 
scanf("%lf",&eps);
2018-05-16 08:59
shanyun2017
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2018-4-25
得分:0 
double h;定义放前面就可以了
2018-05-16 13:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-486963-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.056299 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved