c语言怎么编求导

这是我编的,输出总是一个超大的值,大神给改一下#include<stdio.h>#include<math.h>floatf(floatx,floaty){y=2*x*x... 这是我编的,输出总是一个超大的值,大神给改一下
#include <stdio.h>
#include <math.h>
float f(float x,float y)
{
y=2*x*x+3;
return y;

}
void main()
{

long double dx,dy,dd1,dd2,x,y,x0,eps;
dx=0.5,x0=3,eps=0.000001;
dy=f(x0,y)-f(x0+dx,y);
dd1=dy/dx;
loop: dx=0.5*dx;
dy=f(x0,y)-f(x0+dx,y);
dd2=dy/dx;

if (fabs(dd1-dd2)<eps)
printf("%d\n",dd2);
else
{ dd1=dd2;
goto loop;
}

}
展开
 我来答
xwc374635420
2012-08-02
知道答主
回答量:54
采纳率:0%
帮助的人:12.8万
展开全部
你定义的f的两个参数是float型,在main函数中f的参数又变成long double型了,明显不对
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-08-02
展开全部
if (fabs(dd1-dd2)<eps)
printf("%lf\n",dd2);//dd2为实型double,要使用lf格式输出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jackou20057
推荐于2017-09-16 · TA获得超过998个赞
知道小有建树答主
回答量:199
采纳率:100%
帮助的人:275万
展开全部
#include <stdio.h>
#include <math.h>
//此处函数定义的时候 返回值和参数类型都是float,最好改为double,与主程序相对应
float f(float x,float y)
{
y=2*x*x+3;
return y;

}

void main()
{

long double dx,dy,dd1,dd2,x,y,x0,eps; //这里只需要定义为double型的变量就可以了
dx=0.5,x0=3,eps=0.000001;
//下边调用的y没有初始化,虽然对程序结果无影响,但是编译时会有警告,建议初始化为0.0
//当然也可以将上边定义的函数f() 的参数改为只有一个 如:double f(double x){},则不需要变量y
dy=f(x0,y)-f(x0+dx,y);
dd1=dy/dx;
loop: dx=0.5*dx;
dy=f(x0,y)-f(x0+dx,y);
dd2=dy/dx;

if (fabs(dd1-dd2)<eps)
printf("%d\n",dd2); //这里 如果你想打印浮点数 ,那么应该是printf("%.6lf\n",dd2)
//如果想打印整数,则需要将dd2先强制性转换成int型,即 printf("%d\n", (int)dd2 );
else
{ dd1=dd2;
goto loop;
}

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式