共轭梯度法matlab代码博客园,共轭梯度法源代码.doc
共轭梯度法源代码
共轭梯度法程序源代码
#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相关推荐
- 博客园页面定制html代码,博客园代码定制
博客园代码定制 版本:2019-08-11 本文基于Simple Memory模板,且已获取CSS和JS权限,此版本并非最终版本. 如有错误请指出,代码开源可以修改完善,仅用于学习交流,转载时请注明出 ...
- 博客园页面源代码结构分析
博客园页面源代码结构分析 一.总结 板块注释结束可以加上end 二.博客园页面源代码结构分析 1.页面样例: 2.页面源代码分析: 1 <!DOCTYPE html> 2 <html ...
- 博客园页面定制html代码,博客园主题分享
博客园主题 分享 选择Custom主题 页面定制CSS代码 /*评论框祖传猫猫*/ .comment_textarea{ background:#f5f5f5 url(https://files-cd ...
- 数值实验共轭梯度法matlab代码,数值线性代数实验-共轭梯度法
一开始用c++的运算符重载程序总是莫名其妙的崩掉,然后以为是运算符重载的问题就写了个class对矩阵重新封装,结果还是崩,然后好久才发现是我把空间开的太大导致程序崩掉,无语,这样就浪费了我一个上午.. ...
- python实现计算器代码 博客园_python实现计算器
python实现计算器 1.题目描述 实现一个计算器的控制台程序,支持加减乘除.乘方.括号.小数点,运算符优先级为括号>乘方>乘除>加减,同级别运算按照从左向右的顺序计算 1.1输入 ...
- 博客园程序源代码下载
http://www.cnblogs.com/dudu/archive/2004/08/30/37613.aspx 转载于:https://www.cnblogs.com/qiantuwuliang/ ...
- 博客园样式管理总结(个人博客园装修指南)
一.如何自定义博客园的各级标题样式 参考博客:https://www.cnblogs.com/maxiaodoubao/p/9854705.html 1.申请博客园JS修改权限 按照博客园系统提示申请 ...
- 博客园Markdown模式的MATLAB代码高亮方案
前言 博客园随笔写作可以使用 Markdown 进行编辑,当展示代码时,可以使用下面的语法来对代码块进行展示: ```language code-content ``` 一般来说,指明了 lang ...
- 改进博客园Markdown显示功能(加代码行号、显示代码所用编程语言)
博客园的markdown模式下的代码高亮功能使用的是highlight.js,没有行号和显示相应编程语言的功能,只好自己将其改造了一下(将这两种功能一并实现了)~ 先看一下效果,再详细介绍方法~ 查看 ...
最新文章
- ssh时出现 Agent admitted failure to sign using the key
- 超干货3D视觉技术分享+人才内推!独角兽奥比中光与你相约VALSE 2021
- 添加lombok插件
- php-echo原理
- java nginx 例子_Nginx配置日志
- Greenplum使用简明手册
- linux笔记_20150825_linux下的软件工具唠叨下
- 信息学奥赛C++语言:打印字母表
- avocado自动化测试框架
- 基于JAVA+SpringBoot+Vue+Mybatis+MYSQL的微信小程序便利店购物系统
- InstanceBeginEditable dw中特有标识
- Frame Stacking 框架堆叠
- 【数据结构与算法】完结
- Python 函数参数传递的困惑
- 盘点大数据分析AI工具的常用算法
- elementui二维表动态渲染
- 如何快速知道哪些中文期刊是中文核心期刊
- 三个极限定理与四种收敛性
- python正则表达式:贪婪与非贪婪
- 成都市绿色建筑创建行动实施计划通知