永发信息网

想写个数值微分的C语言程序,用中心差商求一阶导数,初学C语言,哪位大神或者学长学姐能帮忙看看,谢谢

答案:1  悬赏:50  手机版
解决时间 2021-03-23 06:07
想写个数值微分的C语言程序,用中心差商求一阶导数,初学C语言,哪位大神或者学长学姐能帮忙看看,谢谢
最佳答案
typedef double(*FUN_TYPE)(double);
double derive(double x0, double h, FUN_TYPE fun)

    return (fun(x0 + h) - fun(x0 - h)) / 2.0 / h;
}
int main()
{
    double d = 1.15;
    double dd = derive(d, 0.01, exp);
    cout << dd << endl;
}追问typedef是什么?请问这是c还是C++啊?最后一排也没看懂,能写简单点吗?
对了,最后一排都没有定义吧追答哦你要写c啊,那改成printf("%lf", dd);就行了,反正就是输出dd的值。
cout是c++的东西
typedef就是定义一个类型,我定义了FUN_TYPE这个类型,
这个类型实际上是接受一个double参数,返回一个double值的函数指针
这样的话derive不仅能计算exp这个函数,还能计算其他的函数,比如sin log等,只要是一个double参数,一个double返回值的,都可以往里代。
比如计算sinx在x=1处的近似导数
double dd = derive(1, 0.01, sin);追问T^T能把我的代码改正确吗?我真的没办法了,不太会C语言,没学过,选了计算物理,老师要求用C。因为不太懂,所以希望帮我改一下我的代码,让我知道怎么错了,谢谢啦O(∩_∩)O追答第一
double cf(x, h, f)
double x, h, (*f)(double);
{}这个风格是K & R c,现在已经很少用了
这样写
double cf(x, h, double(*f)(double))
{
    dy =((*f)(x + h) -(*f)(x- h)) / (2 * h);
    return dy;
}第二,这个没有必要,这不和exp是一样的嘛
double f(double x)
{
double y;
y = exp(x);
return(y);
}
main里面这样写
double x, h, dy, error;
x = 1.15;
h = 0.1;
dy = cf(x, h, exp);//这里直接用exp做参数,不用f。
error = dy - exp(1.15);//计算误差 刚看到步长要变
main里面这样调:
for(h = 0.1;h>0;h-=0.01)
{
    dy = cf(x, h, exp);
    error = dy - exp(1.15);
    printf("error = %lf
", error);
}追问谢谢O(∩_∩)O!谢谢O(∩_∩)O!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
单选题用哪种方法可以减缓放射性元素的衰变A.
表达对未来憧憬的诗词,表达对和恋人一起的未
燃气采暖热水炉3巴安全阀什么作用
慧爱宝贝婴童连锁地址有知道的么?有点事想过
我男友总爱吸我胸,我都戴40的了,他还说可以
美豪家具城地址在哪,我要去那里办事,
日益增加近义词,日益的近义词是什么
LoL琴女辅助打法有什么技巧?
单选题The MP3 _____ too mu
渤海和黄海哪个盐都高
什么牌子的烤面包机好,什么牌子的烤面包机好
做衣柜用杉木板好还是用免漆板好
女友和我好之前有一个男友,但是这个男友对她
哪个少数民族的女孩最好看?
ad_qumi已停止运行是什么意思?手机一打开就
推荐资讯
用一个字形容亲历亲为
爱美天堂地址在哪,我要去那里办事
朝字左侧偏旁怎么读,朝偏旁部首是什么
电脑桌面标签怎么设置,怎样把电脑桌面图片设
汽车smart什么时候出4座
问 多少钱 说 多钱 这是哪里的方言
弱弱的问下防虹吸是什么意思
为什么玩平衡球游戏时总是黑屏不能玩
马哲和白鲨那期体育人间只有那几分钟吗
俗话说“一方水土养一方人”。下列自然景观或
下列叙述中不正确的是A.钠与水反应后的溶液滴
网桥、路由器、中继器的功能和作用以及其区别
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?