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;
}
} 展开
#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;
}
} 展开
8个回答
展开全部
你定义的f的两个参数是float型,在main函数中f的参数又变成long double型了,明显不对
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-08-02
展开全部
if (fabs(dd1-dd2)<eps)
printf("%lf\n",dd2);//dd2为实型double,要使用lf格式输出
printf("%lf\n",dd2);//dd2为实型double,要使用lf格式输出
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
}
#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;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询