最速下降法 C语言

1.最速下降法

#include "stdio.h"

#include "math.h"

double fun1(double x1,double x2) /*定义函数fun1为目标函数*/

{double y;

y=x1*x1-2*x1*x2+4*x2*x2+x1-3*x2;

return y;

}

void main()

{ double t, x1=1, x2=1,e=0.01, g[2], y, m;

int k=1; /*定义起始点为x1=0,x2=1,并定义精度为e=0.01*/

g[0]=2*x1-2*x2+1; /*目标函数对x1求偏导*/

g[1]=(-2)*x1+8*x2-3; /*目标函数对x2求偏导*/

m=(sqrt(g[0]*g[0]+g[1]*g[1])); /*对g[0]*g[0]+g[1]*g[1]求开方,将值赋给m*/

while(m>e&&k<=200) /*判断,当m>e时进行以下循环*/

{ t=((2*g[1]-2*g[0])*x1+(2*g[0]-8*g[1])*x2-g[0]+3*g[1])/(4*g[0]*g[1]-2*g[0]*g[0]-8*g[1]*g[1]); /*根据梯度法(最速下降法),利用梯度和海赛矩阵*/

x1=x1-g[0]*t; /*求步长t。 根据步长和梯度方向求出新的x1,x2*/

x2=x2-g[1]*t;

printf("迭代次数%d\n",k);

printf("搜索方向-%f,-%f,负梯度的模%f,步长%f\n",g[0],g[1],m,t);

printf("x的值%f,%f\n",x1,x2);

g[0]=2*x1-2*x2+1;

g[1]=(-2)*x1+8*x2-3;

m=(sqrt(g[0]*g[0]+g[1]*g[1])); /*计算新的m*/

printf("新的负梯度的模%f\n",m);

k++;

}

y=fun1(x1,x2); /*当m不满足m>e的时候退出循环,并计算fun1,*/

printf("分别输出x1,x2 %f,%f\n",x1,x2); /*将值赋给y,并输出。*/

printf("极小值y%f",y);

}

2.FR共轭梯度法

#include "stdio.h"

#include "math.h"

double fun1(double x1,double x2) /*定义函数fun1为目标函数*/

{double y;

y=x1*x1-2*x1*x2+4*x2*x2+x1-3*x2;

return y;

}

double fun2(double g[],double d[]) /*定义函数fun2为求步长的函数*/

{

double buchang;

buchang=-(g[0]*d[0]+g[1]*d[1])/(d[0]*(2*d[0]-2*d[1])+d[1]*((-2)*d[0]+8*d[1]));

return buchang;

}

void main()

{ double t, beta, x1=1, x2=1, d[2],g[4], y, m,e=0.01;

/*定义起始点为x1=0,x2=1,并定义精度为e=0.01*/

int k=1;

g[0]=2*x1-2*x2+1; /*目标函数对x1求偏导*/

g[1]=(-2)*x1+8*x2-3; /*目标函数对x2求偏导,求梯度*/

m=(sqrt(g[0]*g[0]+g[1]*g[1])); /*对g[0]*g[0]+g[1]*g[1]求开方,将值赋给m*/

while(m>e&&k<=200) /*判断,当m>e时进行以下循

最速下滑法c语言程序,最速下降法 C语言.doc相关推荐

  1. c语言线性顺序表,C语言程序——线性顺序表.doc

    C语言程序--线性顺序表.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文 ...

  2. c语言程序设计基础的考试题,c语言程序设计基础的考试题.doc

    c语言程序设计基础的考试题.doc 程序设计基础(考试题) 读程序,写出程序的执行结果 1.若a是int型变量,且a=5,则下面表达式的值为:____3_______. (a+100)%2+a/2 2 ...

  3. 步进电机循环脉冲c语言程序,基于C语言的步进电机调速.doc

    课 程 设 计 (论文) 题目 基于C语言的步进电机调速 目 录 0. 前言3 1.基本理论4 2. 方案设计4 2.1 步进电机5 2.2 8255芯片5 3. 硬件电路的工作原理5 3.1 步进电 ...

  4. 包括循环和分支的C语言程序,《C语言程序设计》分支和循环的C程序设计.ppt

    <C语言程序设计>分支和循环的C程序设计.ppt 第三章 分支和循环的C程序设计 问题 一元二次方程根求解算法描述 3.1 程序的基本结构 ⒊循环结构Repetition ⒋复合语句 Co ...

  5. 最初编写的c语言程序称为,C语言程序设计复习参考答案

    <C语言程序设计复习参考答案>由会员分享,可在线阅读,更多相关<C语言程序设计复习参考答案(46页珍藏版)>请在人人文库网上搜索. 1.随堂练习12]1. 下面哪些标识符属于合 ...

  6. c语言 程序循环,C语言程序设计-循环例子

    <C语言程序设计-循环例子>由会员分享,可在线阅读,更多相关<C语言程序设计-循环例子(28页珍藏版)>请在人人文库网上搜索. 1.C 语言程序设计基础篇,第 7 章 简单程序 ...

  7. 简单说明c语言程序步骤,C语言的入门简介和三个简单的C语言程序详细说明

    学习一种编程语言,最重要的是建立一个练习环境,边学边练才能学好.Keil软件是目前最流行开发80C51系列单片机的软件,Keil提供了包括C编译器.宏汇编.连接器.库管理和一个功能强大的仿真调试器等在 ...

  8. c语言程序前言,C语言 程序代码编写规范前言

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 一个好的程序编写规范是编写高质量程序的保证.清晰.规范的源程序不仅仅是方便阅读,更重要的是能够便于检查错误,提高调试效率,从而最终保证软件的质量和可维护性 ...

  9. c语言程序基本设计,C语言程序的设计基本6.ppt

    C语言程序的设计基本6 第六章 本章要点 建立循环程序设计的基本概念和逻辑思维 掌握循环程序设计的方法 6.1 if-goto 语句循环 一般形式: goto 标号: 标号:语句 其中:标号用标识符表 ...

  10. c语言 程序结集,c语言(结体程序设计).doc

    c语言(结体程序设计) C语言程序设计实验报告 实验七.结构体程序设计 [实验目的] (1)掌握结构体类型的概念.定义和使用: (2)掌握结构体数组.结构体指针的定义和使用: [实验内容及步骤] 1. ...

最新文章

  1. php 日志处理类,php中自定义日志处理类(类似于java中的log4j)
  2. cocos2d-x初探学习笔记(7)--CCProgressTimer
  3. ng-template 和 TemplateRef.createEmbeddedView
  4. 再次献给那些心软的人!!!
  5. 电脑桌面打开计算机后出现两部分,为什么当打开电脑时,桌面会出现两个我的文档的窗口,是不是中病毒了,怎么处理啊...
  6. double类型数据做加和操作时会丢失精度问题处理
  7. 三次握手与accept()函数
  8. Effective C# Item4:使用Conditional特性代替#if条件编译
  9. python修改html,Python爬虫精简步骤 HTML基础
  10. char 类型的取值范围
  11. html、css实现导航栏5种常用效果
  12. 可通过qq聊天机器人拿下服务器权限
  13. 产品读书《文案训练手册》
  14. DeepDive自动化信息抽取---全网首发DeepDive偷工减料超速部署方式
  15. Python删除字符串中的空格和特殊字符
  16. linux系统fflush函数
  17. 【pwn】WMCTF2020 cfgo-CheckIn
  18. 价值投资私募基金三人谈
  19. JDBC 学习笔记1
  20. SWA实战:使用SWA进行微调,提高模型的泛化

热门文章

  1. 解决python的OverflowError: int too large to convert to float
  2. Matlab uicontrol 用法
  3. Java编程基础知识(一)
  4. 十七世纪的常用对数表是怎么算出来的
  5. echarts同时带有颜色和光圈的中国地图
  6. 编写c高级语言程序步骤,高级语言程序设计知识点总结一
  7. Java 简单工厂模式
  8. Windows Xp sp2 升级为 sp3
  9. 解决WPS2000非正常删除后的重安装问题(转)
  10. 千方百剂创建账套服务器文件,千方百剂辅助工具使用手册(图解