共轭梯度法源代码

共轭梯度法程序源代码

#include

#include

#define N 10

#define eps pow(10,-6)

double f(double x[],double p[],double t)

{

double s;

s=pow(x[0]+t*p[0],2)+25*pow(x[1]+t*p[1],2);

return s;

}

/*以下是进退法搜索区间源程序*/

void sb(double *a,double *b,double x[],double p[])

{

double t0,t1,t,h,alpha,f0,f1;

int k=0;

t0=2.5; /*初始值*/

h=1; /*初始步长*/

alpha=2; /*加步系数*/

f0=f(x,p,t0);

t1=t0+h;

f1=f(x,p,t1);

while(1)

{

if(f1

{

h=alpha*h; t=t0;

t0=t1; f0=f1;

k++;

}

else

{

if(k==0)

{h=-h;t=t1;}

else

{

*a=t

*b=t>t1?t:t1;

break;

}

}

t1=t0+h;

f1=f(x,p,t1);

}

}

/*以下是黄金分割法程序源代码*/

double hjfg(double x[],double p[])

{

double beta,t1,t2,t;

double f1,f2;

double a=0,b=0;

double *c,*d;

c=&a,d=&b;

sb(c,d,x,p);/*调用进退法搜索区间*/

printf("\nx1=%lf,x2=%lf,p1=%lf,p2=%lf",x[0],x[1],p[0],p[1]);

printf("\n[a,b]=[%lf,%lf]",a,b);

beta=(sqrt(5)-1.0)/2;

t2=a+beta*(b-a); f2=f(x,p,t2);

t1=a+b-t2; f1=f(x,p,t1);

while(1)

{

if(fabs(t1-t2)

break;

else

{

if(f1

{

t=(t1+t2)/2;

b=t2; t2=t1;

f2=f1; t1=a+b-t2;

f1=f(x,p,t1);

}

else

{

a=t1; t1=t2;

f1=f2;

t2=a+beta*(b-a);

f2=f(x,p,t2);

}

}

}

t=(t1+t2)/2;

return t;

}

/*以下是共轭梯度法程序源代码*/

void gtd()

{

double x[N],g[N],p[N],t=0,f0,mod1=0,mod2=0,nanda=0;

int i,k,n;

printf("请输入函数的元数值n=");

scanf("%d",&n);

printf("\n请输入初始值:\n");

for(i=0;i

scanf("%lf",&x[i]);

f0=f(x,g,t);

g[0]=2*x[0]; g[1]=50*x[1];

mod1=sqrt(pow(g[0],2)+pow(g[1],2));/*求梯度的长度*/

if(mod1>eps)

{

p[0]=-g[0]; p[1]=-g[1]; k=0;

while(1)

{

t=hjfg(x,p);/*调用黄金分割法求t的值*/

printf("\np1=%lf,p2=%lf,t=%lf",p[0],p[1],t);

x[0]=x[0]+t*p[0]; x[1]=x[1]+t*p[1];

g[0]=2*x[0]; g[1]=50*x[1];

/*printf("\nx1=%lf,x2=%lf,g1=%lf,g2=%lf",x[0],x[1],g[0],g[1]);*/

mod2=sqrt(pow(g[0],2)+pow(g[1],2)); /*求梯度的长度*/

if(mod2<=eps) break;

else

{

共轭梯度法matlab代码博客园,共轭梯度法源代码.doc相关推荐

  1. 博客园页面定制html代码,博客园代码定制

    博客园代码定制 版本:2019-08-11 本文基于Simple Memory模板,且已获取CSS和JS权限,此版本并非最终版本. 如有错误请指出,代码开源可以修改完善,仅用于学习交流,转载时请注明出 ...

  2. 博客园页面源代码结构分析

    博客园页面源代码结构分析 一.总结 板块注释结束可以加上end 二.博客园页面源代码结构分析 1.页面样例: 2.页面源代码分析: 1 <!DOCTYPE html> 2 <html ...

  3. 博客园页面定制html代码,博客园主题分享

    博客园主题 分享 选择Custom主题 页面定制CSS代码 /*评论框祖传猫猫*/ .comment_textarea{ background:#f5f5f5 url(https://files-cd ...

  4. 数值实验共轭梯度法matlab代码,数值线性代数实验-共轭梯度法

    一开始用c++的运算符重载程序总是莫名其妙的崩掉,然后以为是运算符重载的问题就写了个class对矩阵重新封装,结果还是崩,然后好久才发现是我把空间开的太大导致程序崩掉,无语,这样就浪费了我一个上午.. ...

  5. python实现计算器代码 博客园_python实现计算器

    python实现计算器 1.题目描述 实现一个计算器的控制台程序,支持加减乘除.乘方.括号.小数点,运算符优先级为括号>乘方>乘除>加减,同级别运算按照从左向右的顺序计算 1.1输入 ...

  6. 博客园程序源代码下载

    http://www.cnblogs.com/dudu/archive/2004/08/30/37613.aspx 转载于:https://www.cnblogs.com/qiantuwuliang/ ...

  7. 博客园样式管理总结(个人博客园装修指南)

    一.如何自定义博客园的各级标题样式 参考博客:https://www.cnblogs.com/maxiaodoubao/p/9854705.html 1.申请博客园JS修改权限 按照博客园系统提示申请 ...

  8. 博客园Markdown模式的MATLAB代码高亮方案

    前言 博客园随笔写作可以使用 Markdown 进行编辑,当展示代码时,可以使用下面的语法来对代码块进行展示: ​```language code-content ​``` 一般来说,指明了 lang ...

  9. 改进博客园Markdown显示功能(加代码行号、显示代码所用编程语言)

    博客园的markdown模式下的代码高亮功能使用的是highlight.js,没有行号和显示相应编程语言的功能,只好自己将其改造了一下(将这两种功能一并实现了)~ 先看一下效果,再详细介绍方法~ 查看 ...

最新文章

  1. ssh时出现 Agent admitted failure to sign using the key
  2. 超干货3D视觉技术分享+人才内推!独角兽奥比中光与你相约VALSE 2021
  3. 添加lombok插件
  4. php-echo原理
  5. java nginx 例子_Nginx配置日志
  6. Greenplum使用简明手册
  7. linux笔记_20150825_linux下的软件工具唠叨下
  8. 信息学奥赛C++语言:打印字母表
  9. avocado自动化测试框架
  10. 基于JAVA+SpringBoot+Vue+Mybatis+MYSQL的微信小程序便利店购物系统
  11. InstanceBeginEditable dw中特有标识
  12. Frame Stacking 框架堆叠
  13. 【数据结构与算法】完结
  14. Python 函数参数传递的困惑
  15. 盘点大数据分析AI工具的常用算法
  16. elementui二维表动态渲染
  17. 如何快速知道哪些中文期刊是中文核心期刊
  18. 三个极限定理与四种收敛性
  19. python正则表达式:贪婪与非贪婪
  20. 成都市绿色建筑创建行动实施计划通知

热门文章

  1. js获取URL中参数
  2. 简单快捷测试java数据库是否连接成功
  3. springboot consumes和produces属性
  4. 计算机对教育的影响雅思听力,雅思听力机经:各大网站听力考试的预测汇总
  5. CTF网络信息安全竞赛:记一次小比赛
  6. 古筝几种遥指技法训练
  7. kaggle 在无网络的环境下安装packages的方法
  8. BCP功能简介及调试方法之三
  9. Android--ListView及BaseAdapter的使用
  10. dhclient dhcp-4.4.1 编译