计算结果问题

来源:百度知道 编辑:UC知道 时间:2024/09/28 09:23:04
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define e 0.0001 /*定义精度和步长*/
double funx(double x1,double x2) /*定义主函数*/
{
double y;
y=x1*x1+2*x2*x2-4*x1-2*x1*x2;
return y;
}
double ffx1(double x1,double x2) /*定义梯度的第一个量*/
{
double y;
y=2*x1-4-2*x2;
return y;
}
double ffx2(double x1,double x2) /*定义梯度的第二个量*/
{
double y;
y=4*x2-2*x1;
return y;
}
main()
{
double x0[2],x1[2],xx[2],f,ff[2],ffx[2],g[2];/*定义变量 x0 & x1为坐标变量,xx&f为最优解,ff[2]为x0&x1的函数值,ffx为中间变量,作用为求x1*/
int nd=0;
float t ; /*迭代次数变量*/
x0[0]=12;x0[1]=-5; /*定义初始点*/
lab1: /*定义循环*/
ffx[0]=ffx1(x0[0],x0[1]); /*求解梯度*/
ffx[1]=ffx2(x0[0],x0[1]);
t=(float)(((2*x0[0]-2*x0[1]-4)*ffx

不好意思,我看错了

x0[0],x0[1],ff[0],ff[1]迭代的时候会不断变大,最后很大,会溢出,产生很多0
你说的那个给t赋值然后输出没有什么问题

会不会你算法实现出了问题,不太了解这个算法