進退法黃金分割法c語言編程下載,黃金分割法程序代碼

本文目錄一覽:

c語言編程:用黃金分割法求 minf(x)=x2+2x+1 急!!!!

給,已經編譯運行確認:

#include “math.h”

#include “stdio.h”

#define f(x) x*x+2*x+1 //一元函數,這裡按照你的要求寫的是:x2+2x+1

//函數功能是用黃金分割法實現求一元函數 的最優解

double hj(double *a,double *b,double e,int *n)

{ double x1,x2,s;

if(fabs(*b-*a)=e)

s=f((*b+*a)/2);

else

{ x1=*a+0.382*(*b-*a);

x2=*a+0.618*(*b-*a);

if(f(x1)f(x2))

*a=x1;

else

*b=x2;

*n=*n+1;

s=hj(a,b,e,n);

}

return s;

}

main()

{ double s,a,b,e;

int n=0;

scanf(“%lf %lf %lf”,a,b,e); // 輸入區間[a,b]和精度e的值

s=hj(a,b,e,n); //調用hj函數,其中n代表迭代次數

printf(“a=%lf,b=%lf,s=%lf,n=%d\n”,a,b,s,n);

}

運行時:

輸入:0.6 0.5 0.1

輸出結果為:

0.6 0.5 0.1

a=0.600000,b=0.500000,s=2.402500,n=0

《C語言編程魔法書》pdf下載在線閱讀全文,求百度網盤雲資源

《C語言編程魔法書》百度網盤pdf最新全集下載:

鏈接:

?pwd=6jvc 提取碼: 6jvc

簡介:主要講解C11標準的語法內容,並且從整個編譯、連接到加載過程都會涉及。同時在後會分別介紹GCC編譯器與Clang編譯器的C語言語法擴展。通過閱讀本書,讀者能夠完全掌握新標準的C語言編程。並且對C語言設計思想、實現方式也能有個大概的了解。  

用黃金分割法求f(x)=(x-3)²的最優解 附C語言程序

黃金分割法其實也是Fibonacci法吧!!!因為對於Fibonacci數列,有f(n)/f(n-1)-→0.618……

這題解法我是參考,

只是改了多項式和Fibonacci數列用黃金分割數來求而已(需要改的還有x的範圍(a,b))!

#includestdio.h

#include

math.h

const

int

fi[10]={1,1,2,3,5,8,13,21,34,55};

double

f(double

x)

//多項式

{

return

(x-3)*(x-3);

}

double

F(int

tn)//計算Fibonacci數

{

if(tn10)

return

fi[tn];

return

pow(1.618,tn-9)*fi[9];

}

void

main(void)

{

double

r,u,a,b,fr,fu,q;

int

k,n;

//步驟1,初始化

a=0.0;

b=3.0;

k=0;

q=0.00001;

n=0;

while(F(n)((b-a)/q))n++;

//計算次數n

r=a+(F(n-k-1)/F(n-k+1))*(b-a);

u=a+(F(n-k)/F(n-k+1))*(b-a);

fr=f(r);

fu=f(u);

while(kn)

{

if(frfu)

{

if(b-r=q)

{

printf(“%d:%f”,k,u);

break;

}

else

{

a=r;

b=b;

r=u;

fr=fu;

u=a+(F(n-k)/F(n-k+1))*(b-a);

fu=f(u);

k++;

}

}

else

{

if(u-a=q)

{

printf(“%d:%f”,k,r);

break;

}

else

{

a=a;

b=u;

u=r;

fu=fr;

r=a+(F(n-k-1)/F(n-k+1))*(b-a);

fr=f(r);

k++;

}

}

}

getchar();

}

編程你們來看下啊2X^2-2X+1用C語言編出來,最好用MATLAB搞出來還有分加的

把以下程序存為f618.m,再運行[x,min]=F618(0.2,0,1)

得到:x=1,min=0

function [x,min]=F618(precision,t0,h)

%初始區間為a,b,相對精度precision 即為原區間的多少分之,t0為初始值,h為步長

%用進退法得到高低高區間,在用0.618法求最值

%precision=0.2;

%t0=0;

%h=1;

[a,b]=Fpush(t0,h);

An=a;

Bn=b;

n=1;

while 0.618^(n-1)=precision

A=0.618.*(An-Bn)+Bn;

B=0.618.*(Bn-An)+An;

if AB

if F618Ret(A)F618Ret(B)

Bn=B;

else

An=A;

end

else

if F618Ret(A)F618Ret(B)

An=A;

else

Bn=B;

end

end

n=n+1;

end

x=An;

min=F618Ret(An);

%=======================================

function y=F618Ret(x)

%函數為f(x)=t^2-10*t+36 嚴格凸函數

y=x.^2-2*x+2;

%======================================

function [x1,x2]=Fpush(t0,h)

%進退法,調用函數為,F618Ret,t0為初始值,h為步長

a=t0;

b=t0+h;

while 1

if F618Ret(a)F618Ret(b)

h=0-h;

a=a+h;

b=a-h;

if F618Ret(b)F618Ret(b-h) F618(b)F618Ret(a)

break;

end

else

a=b;

b=a+h;

if F618Ret(a)F618Ret(b) F618Ret(a)F618Ret(a-h)

break;

end

end

end

x1=a;

x2=b;

用c語言編寫黃金分割法

黃金分割點是指把一條線段分割為兩部分,使其中一部分與全長之比等於另一部分與這部分之比。其比值是一個無理數,用分數表示為(√5-1)/2。黃金分割點(p)的求法,如圖:①過點B作BD⊥AB,使BD=1/2AB;②連結AD,以D為圓心,CB為半徑作弧,交AD於E, 則有DE=DB;③以A為圓心,AE為半徑作弧,交AB於P,則有AP=AE;則點P是線段AB上的一個黃金分割點.為什麼點P是線段AB上的一個黃金分割點?事實上,若設AB=2,則BD=BE=1,由作圖過程可知AD=√5.則AE=AP=(√5)-1,PB/AP=AP/AB=[(√5)-1]/2。 因此點P是線段AB上的一個黃金分割點.

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/192468.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-01 09:58
下一篇 2024-12-01 09:58

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python計算機程序代碼全面介紹

    本文將從多個方面對Python計算機程序代碼進行詳細介紹,包括基礎語法、數據類型、控制語句、函數、模塊及面向對象編程等。 一、基礎語法 Python是一種解釋型、面向對象、動態數據…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28

發表回復

登錄後才能評論