共軛梯度法為求解線性方程組而提出。后來,人們把這種方法用于求解無約束最優化問題, 使之成為一種重要的最優化方法。 共軛梯度法的基本思想是把共軛性與最速下降方法相結合, 利用已知點處的梯度構造一組共 軛方向, 并沿這組方向進行搜索, 求出目標函數的極小點。 根據共軛方向的基本性質, 這種 方法具有二次終止性。 在各種優化算法中, 共軛梯度法是非常重要的一種。 其優點是所需存 儲量小,具有步收斂性,穩定性高,而且不需要任何外來參數。 共軛方向 無約束最優化方法的核心問題是選擇搜索方向 . 在本次實驗中 , 我們運用基于共軛方向的一種 算法 — 共軛梯度法 三.算法流程圖: 四.實驗結果: (1). 實驗函數 f=(3*x1-cos(x2*x3)-1/2)^2+(x1^2-81*(x2+0.1)+sin(x3)+1.06)^2+(exp(-x1*x2)+20*x3+ 1/3*(10*3.14159-3))^2; 給定初始點 (0,0,0) , k=1 ,最 大迭代次數 n ? ? d 確定搜索方向 進 退 法 確 定 搜 索 區 間 分割法確定最 優步長
上傳時間: 2016-05-08
上傳用戶:saren11
#include <malloc.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define NULL 0 #define MaxSize 30 typedef struct athletestruct /*運動員*/ { char name[20]; int score; /*分數*/ int range; /**/ int item; /*項目*/ }ATH; typedef struct schoolstruct /*學校*/ { int count; /*編號*/ int serial; /**/ int menscore; /*男選手分數*/ int womenscore; /*女選手分數*/ int totalscore; /*總分*/ ATH athlete[MaxSize]; /**/ struct schoolstruct *next; }SCH; int nsc,msp,wsp; int ntsp; int i,j; int overgame; int serial,range; int n; SCH *head,*pfirst,*psecond; int *phead=NULL,*pafirst=NULL,*pasecond=NULL; void create(); void input () { char answer; head = (SCH *)malloc(sizeof(SCH)); /**/ head->next = NULL; pfirst = head; answer = 'y'; while ( answer == 'y' ) { Is_Game_DoMain: printf("\nGET Top 5 when odd\nGET Top 3 when even"); printf("\n輸入運動項目序號 (x<=%d):",ntsp); scanf("%d",pafirst); overgame = *pafirst; if ( pafirst != phead ) { for ( pasecond = phead ; pasecond < pafirst ; pasecond ++ ) { if ( overgame == *pasecond ) { printf("\n這個項目已經存在請選擇其他的數字\n"); goto Is_Game_DoMain; } } } pafirst = pafirst + 1; if ( overgame > ntsp ) { printf("\n項目不存在"); printf("\n請重新輸入"); goto Is_Game_DoMain; } switch ( overgame%2 ) { case 0: n = 3;break; case 1: n = 5;break; } for ( i = 1 ; i <= n ; i++ ) { Is_Serial_DoMain: printf("\n輸入序號 of the NO.%d (0<x<=%d): ",i,nsc); scanf("%d",&serial); if ( serial > nsc ) { printf("\n超過學校數目,請重新輸入"); goto Is_Serial_DoMain; } if ( head->next == NULL ) { create(); } psecond = head->next ; while ( psecond != NULL ) { if ( psecond->serial == serial ) { pfirst = psecond; pfirst->count = pfirst->count + 1; goto Store_Data; } else { psecond = psecond->next; } } create(); Store_Data: pfirst->athlete[pfirst->count].item = overgame; pfirst->athlete[pfirst->count].range = i; pfirst->serial = serial; printf("Input name:) : "); scanf("%s",pfirst->athlete[pfirst->count].name); } printf("\n繼續輸入運動項目(y&n)?"); answer = getchar(); printf("\n"); } } void calculate() /**/ { pfirst = head->next; while ( pfirst->next != NULL ) { for (i=1;i<=pfirst->count;i++) { if ( pfirst->athlete[i].item % 2 == 0 ) { switch (pfirst->athlete[i].range) { case 1:pfirst->athlete[i].score = 5;break; case 2:pfirst->athlete[i].score = 3;break; case 3:pfirst->athlete[i].score = 2;break; } } else { switch (pfirst->athlete[i].range) { case 1:pfirst->athlete[i].score = 7;break; case 2:pfirst->athlete[i].score = 5;break; case 3:pfirst->athlete[i].score = 3;break; case 4:pfirst->athlete[i].score = 2;break; case 5:pfirst->athlete[i].score = 1;break; } } if ( pfirst->athlete[i].item <=msp ) { pfirst->menscore = pfirst->menscore + pfirst->athlete[i].score; } else { pfirst->womenscore = pfirst->womenscore + pfirst->athlete[i].score; } } pfirst->totalscore = pfirst->menscore + pfirst->womenscore; pfirst = pfirst->next; } } void output() { pfirst = head->next; psecond = head->next; while ( pfirst->next != NULL ) { // clrscr(); printf("\n第%d號學校的結果成績:",pfirst->serial); printf("\n\n項目的數目\t學校的名字\t分數"); for (i=1;i<=ntsp;i++) { for (j=1;j<=pfirst->count;j++) { if ( pfirst->athlete[j].item == i ) { printf("\n %d\t\t\t\t\t\t%s\n %d",i,pfirst->athlete[j].name,pfirst->athlete[j].score);break; } } } printf("\n\n\n\t\t\t\t\t\t按任意建 進入下一頁"); getchar(); pfirst = pfirst->next; } // clrscr(); printf("\n運動會結果:\n\n學校編號\t男運動員成績\t女運動員成績\t總分"); pfirst = head->next; while ( pfirst->next != NULL ) { printf("\n %d\t\t %d\t\t %d\t\t %d",pfirst->serial,pfirst->menscore,pfirst->womenscore,pfirst->totalscore); pfirst = pfirst->next; } printf("\n\n\n\t\t\t\t\t\t\t按任意建結束"); getchar(); } void create() { pfirst = (struct schoolstruct *)malloc(sizeof(struct schoolstruct)); pfirst->next = head->next ; head->next = pfirst ; pfirst->count = 1; pfirst->menscore = 0; pfirst->womenscore = 0; pfirst->totalscore = 0; } void Save() {FILE *fp; if((fp = fopen("school.dat","wb"))==NULL) {printf("can't open school.dat\n"); fclose(fp); return; } fwrite(pfirst,sizeof(SCH),10,fp); fclose(fp); printf("文件已經成功保存\n"); } void main() { system("cls"); printf("\n\t\t\t 運動會分數統計\n"); printf("輸入學校數目 (x>= 5):"); scanf("%d",&nsc); printf("輸入男選手的項目(x<=20):"); scanf("%d",&msp); printf("輸入女選手項目(<=20):"); scanf("%d",&wsp); ntsp = msp + wsp; phead = (int *)calloc(ntsp,sizeof(int)); pafirst = phead; pasecond = phead; input(); calculate(); output(); Save(); }
標簽: 源代碼
上傳時間: 2016-12-28
上傳用戶:150501
1.2 源代碼表示不考慮主題,列舉 15 000行源代碼本身就是一件難事。下面是所有源代碼都使用的文本格式:1.2.1 將擁塞窗口設置為13 8 7 - 3 8 8 這是文件t c p _ s u b r . c中的函數t c p _ q u e n c h。這些源文件名引用4 . 4 B S D - L i t e發布的文件。4 . 4 B S D在1 . 1 3節中討論。每個非空白行都有編號。正文所描述的代碼的起始和結束位置的行號記于行開始處,如本段所示。有時在段前有一個簡短的描述性題頭,對所描述的代碼提供一個概述。這些源代碼同4 . 4 B S D - L i t e發行版一樣,偶爾也包含一些錯誤,在遇到時我們會提出來并加以討論,偶爾還包括一些原作者的編者評論。這些代碼已通過了 G N U縮進程序的運行,使它們從版面上看起來具有一致性。制表符的位置被設置成 4個欄的界線使得這些行在一個頁面中顯示得很合適。在定義常量時,有些 # i f d e f語句和它們的對應語句 # e n d i f被刪去(如:G A T E W A Y和M R O U T I N G,因為我們假設系統被作為一個路由器或多播路由器 )。所有r e g i s t e r說明符被刪去。有些地方加了一些注釋,并且一些注釋中的印刷錯誤被修改了,但代碼的其他部分被保留下來。這些函數大小不一,從幾行 (如前面的t c p _ q u e n c h)到最大11 0 0行(t c p _ i n p u t)。超過大約4 0行的函數一般被分成段,一段一段地顯示。雖然盡量使代碼和相應的描述文字放在同一頁或對開的兩頁上,但為了節約版面,不可能完全做到。本書中有很多對其他函數的交叉引用。為了避免給每個引用都添加一個圖號和頁碼,書封底內頁中有一個本書中描述的所有函數和宏的字母交叉引用表和描述的起始頁碼。因為本書的源代碼來自公開的 4 . 4 B S D _ L i t e版,因此很容易獲得它的一個拷貝:附錄 B詳細說明了各種方法。當你閱讀文章時,有時它會幫助你搜索一個在線拷貝 [例如U n i x程序grep ( 1 )]。描述一個源代碼模塊的各章通常以所討論的源文件的列表開始,接著是全局變量、代碼維護的相關統計以及一個實際系統的一些例子統計,最后是與所描述協議相關的 S N M P變量。全局變量的定義通常跨越各種源文件和頭文件,因此我們將它們集中到的一個表中以便于參考。這樣顯示所有的統計,簡化了后面當統計更新時對代碼的討論。卷 1的第2 5章提供了S N M P的所有細節。我們在本文中關心的是由內核中的 T C P / I P例程維護的、支持在系統上運行的S N M P代理的信息。TCP IP詳解 卷1協議 :http://dl.21ic.com/download/tcpip-288223.html TCP IP詳解 卷2實現 :http://dl.21ic.com/download/tcpip-288224.html TCPIP詳解卷三:TCP事務協議,HTTP,NNTP和UNIX域協議 :http://dl.21ic.com/download/tcpip-288225.html
上傳時間: 2022-07-27
上傳用戶:
有趣的文字鼠標跟隨,l o a d i n g字母組成,在打開頁面等待的時候可以用
上傳時間: 2013-12-21
上傳用戶:2525775
2的16次冪正整數d與n,編寫計算d-1 (mod n) 的程序; 2、對于三個不超過2的16次冪正整數a、e與n,編寫計算ae (mod n) 的程序。 在上述程序基礎上寫出下列程序: (1) 對給定的10000以內數判定其是否為素數; (2) 進行ElGamal體制的加密與簽名。
上傳時間: 2013-12-25
上傳用戶:stvnash
四柱漢諾塔問題的求解程序.解題思路:如a,b,c,d四柱. 要把a柱第n個盤移到目標柱子(d柱),先把上層 分兩為兩部份,上半部份移到b柱,下半部分移到c柱,再把第n盤移到 目標柱子,然后,c柱盤子再移到目標柱子,再把b柱盤子移到目標柱子. 細節地方: 上半部份移到b柱時,它的中間變量柱子是有二選一的.而下半部分 移到c柱時,它的中間變量柱子只有一個(因為一個柱子已被上半部份 占了).b,c也移到目標柱子時同理。
上傳時間: 2013-12-22
上傳用戶:aeiouetla
鄰接矩陣類的根是A d j a c e n c y W D i g r a p h,因此從這個類開始。程序1 2 - 1給出了類的描述。程 序中,先用程序1 - 1 3中函數Make2DArray 為二組數組a 分配空間,然后對數組a 初始化,以描述 一個n 頂點、沒有邊的圖的鄰接矩陣,其復雜性為( n2 )。該代碼沒有捕獲可能由M a k e 2 D A r r a y 引發的異常。在析構函數中調用了程序1 - 1 4中的二維數組釋放函數D e l e t e 2 D
標簽: 矩陣
上傳時間: 2013-12-21
上傳用戶:lanjisu111
一個旅行家想駕駛汽車從城市A到城市B(設出發時油箱是空的)。給定兩個城市之間的距離dis、汽車油箱的容量c、每升汽油能行駛的距離d、沿途油站數n、油站i離出發點的距離d[i]以及該站每升汽油的價格p[i],i=1,2,…,n。設d[1]=0<d[2]<…<d[n]。要花最少的油費從城市A到城市B,在每個加油站應加多少油,最少花費為多少?
上傳時間: 2013-12-31
上傳用戶:redmoons
本書提供用J B u i l d e r開發數據庫應用程序、創建分布式應用程序以及編寫J a v a B e a n 組件的高級資料。它包括下列幾個部分: • 第一部分是“開發數據庫應用程序”,它提供關于使用J b u i l d e r的D a t a E x p r e s s數據 庫體系結構的信息,并解釋原始數據組件和類之間的相互關系,以及怎樣使用它 們來創建你的數據庫應用程序。它還解釋怎樣使用Data Modeler(數據模型器)和 Application Generator(應用程序生成器)創建數據驅動的客戶機/服務器應用程 序。 • 第二部分是“開發分布式應用程序”,它提供關于使用ORB Explorer、用J B u i l d e r 創建多級的分布應用程序、調試分布式應用程序、用J a v a定義C O R B A接口以及 使用s e r v l e t等的信息。 • 第三部分是“創建J a v a B e a n”,它解釋怎樣開發新的J a v a B e a n組件,描述在組件 開發中涉及的任務, 怎樣使用B e a n s E x p r e s s創建新的J a v a B e a n,以及關于屬性、 事件、B e a nIn f o類和其他方面的詳細情況。
上傳時間: 2014-01-03
上傳用戶:wpt
N年前有個法國小組用Delphi寫了一個2D網游(AD&D類型),是否運營不得而知,他們最終公開了源碼
上傳時間: 2013-12-26
上傳用戶:wmwai1314