說說用C語言求根的那些事兒

2022-07-29 07:00:11 字數 1486 閱讀 6134

c

語言——求根;計算機只識別0和

1,那麼問題來了,作為計算工具如何解決數學問題?其實,計算機是死東西,都是程式設計師用計算機的的思維去加數學公式計算數學題的。

聽起來好高階的樣子,其實啊,也就那麼回事兒,

請看~~

求平方根,也許你會說,這還不簡單直接呼叫

square

函式就好了,這個還用說麼?可是我若問你那麼

square

函式是如何實現求平方根的呢?怎麼樣是不是沒那麼簡單呢?且看:

數學公式為x(n+1)=1/2*(x(n)+a/x(n));

演算法如下:

1)設定乙個

x0的值;

2)用上述公式求出

x的下乙個值x1;

3)再將

x1帶入上述公式右側的

xn,求出下乙個

xn+1

4)如此繼續下去知道最後兩次求出的

x的值(xn和

xn+1

)滿足關係:

|xn+1-xn|<10e-5;

為了便於說明,現用x0

和x1,

先令初值

x0=a/2

;求出x1

,源**如下:

#include#includeint main()

while(fabs(x0-x1)>=10e-5);

printf("the square root of %5.2f is %8.5f\n",a,x1);

return 0;

}

執行截圖:

又稱牛頓切線法:先任意設定乙個與真實根接近的x0作為第一次近似根,由x0求出f(x0),過點(x0,f(x0))作f(x)的切線,交x軸於x1,把x1作為第二次近似根,再過x1作點(x1,f(x1))的切線交x軸於x2,如此繼續,直到接近真實根x為止,由此可得下

公式:x1=x0-f(x0)/f『(x0)這就是牛頓迭代公式。例如求2x^3-4x^2+3x-6=0的根

f(x)=2x^3-4x^2+3x-6     變形為f(x)=((2x-4)x+3)x-6   進一步f』(x)=6x^2-8x+3=(6x-8)+3

用這種方法表示的表示式在運算時可以節省時間,由原來的多次指數運算改為乘法和加法運算。源**如下:

#include#includeint main()

while(fabs(x1-x0)>=10e-5);

printf("the root of 2x^3-4x^2+3x-6=0 is %5.2f\n",x1);

return 0;

}

執行截圖:

說說部落格的那些事兒

adversity leads to prosperity.窮則思變 讀書的時候,經常看別人都讀的輕輕鬆鬆的,還拿個高分,自己累死累活的,卻依然成績平平不見起色的時候,便很羨慕別人,私下裡留心別人是怎麼看書學習的,課下找他們玩,跟他們聊聊學習上的這些事兒 別人怎麼做我怎麼做,時間長了,發現比之前更累...

C語言那些事兒

專案名稱 蘇嵌實訓 嵌入式linuxc第3天 今日進度以及任務 學習了c語言的基本知識 本日任務完成情況 掌握了c語言的基本知識 本日開發 現的問題彙總 c語言中的細節問題要注意 本日未解決的問題 無本日開發收穫 進一步熟悉了c語言其他無 c語言1 c語言之父?丹尼斯里奇 2 c的特點 優勢 語言標...

說說Socket的那些事兒 上

兩個計算機通訊的過程,就像兩個人打 一樣 socket 套接字 socket又稱 套接字 應用程式通常通過 套接字 向網路發出請求或者應答網路請求。為網路服務提供一種機制 網路通訊其實就是socket之間的通訊 資料在兩個socket之間通過io傳輸 socket是純c語言的,是跨平台的 http基...