當前位置:編程學習大全網 - 編程語言 - 編程增量

編程增量

對於下列壹元二次方程:

ax*x+bx+c=0

設計壹個C語言程序,輸入壹個二次方程的三個系數A、B、C,求解方程的兩個根,並允許用戶在程序中多次輸入不同的系數,求解壹個二次方程的不同解。

編程思路分析:

對於這個方程,設delta = b ^ 2-4 * a * c,從數學的角度,我們需要根據delta的值來判斷這個方程的根:

當delta >時;當=0時,它的兩個根是實數解,分別是(-b+sqrt(delta))/(2*a)和(-b-sqrt(delta))/(2 * a);

當德爾塔

其中sqrt(delta)代表delta上的根操作。

在代碼設計中,可以定義壹個結構復數來存儲方程的根,它包括兩個變量,實部和虛部。

在程序中,定義復雜類型x1和x2的兩個根,當delta >時;當=0時,兩個根的虛部為0,否則,分別求解兩個根的虛部。

具體編程如下:

#包含?“stdio.h”?

#包含?“math.h”?

/*求壹元二次方程ax*x+bx+c=0的解*/?

main()?

{浮動?a,b,c,x1,x2,d;

Printf("請輸入a:");

scanf("%f ",& ampa);

Printf("請輸入b:");

scanf("%f ",& ampb);

Printf("請輸入c:");

scanf("%f ",& ampc);

d = b * b-4 * a * c;如果(d?& lt?0)

printf("方程沒有實數解。\ n ");

如果?(d = = 0){ x 1 =(-b)/(2 * a);

printf("x1=%f\n ",x 1);}

如果?(d & gt0){ x 1 =(-b+sqrt(d))/(2 * a);

x2 =(-b-sqrt(d))/(2 * a);

printf("x1=%f,x2=%f\n ",x1,x2);}?}

請輸入a: 12。

請輸入b: 34。

請輸入c: 4。

x1=-0.122985,x2=-2.710348

新聞?有嗎?鑰匙?去哪?繼續

擴展數據:

壹維二次方程也可以用叠代的思想編程:

舉例?壹種新品種的兔子被引進了農場。這種兔子從出生的次月開始,每個月都會有壹只新兔子,新兔子會以同樣的方式繁殖。如果所有的兔子都沒有死,那麽在12月這個農場有多少只兔子?

分析:這是典型的遞歸問題。我們不妨假設第1個月的兔子數是u 1,第2個月的兔子數是u 2,第3個月的兔子數是u 3...根據問題的意思,“這種兔子從出生的次月開始,每個月生壹只新兔子”。

u 1 = 1,u 2 = u 1 + u 1 × 1 = 2,u 3 = u 2 + u 2 × 1 = 4,…

根據這個規律,可以總結出如下遞推公式:u n = u(n-1) × 2 (n ≥ 2),對應u n和u(n-1),定義兩個叠代變量y和x,上述遞推公式可以轉化為如下叠代關系:

y=x*2,x=y

讓計算機重復這個叠代關系11次,就可以算出12月時的兔子數量。參考程序如下:

cls?x=1?對於i=2到12

y=x*2?x=y

下壹個我?打印y

結束

叠代法是壹種利用遞推公式或循環算法,通過構造序列來尋找問題近似解的方法。例如,對於非線性方程,利用遞歸關系從頭開始依次計算,以逼近方程的根。

如果僅與有關,即這種叠代法稱為單步叠代法,壹般稱為多步叠代法;對於線性方程組,從頭開始依次計算方程的解的方法過於接近。

如果壹個正整數與當時的k無關,則該叠代法稱為定常叠代法,否則稱為非定常叠代法。構造的序列稱為叠代序列。

參考資料:

叠代法_百度百科

  • 上一篇:電腦組裝步驟及技巧-筆記本
  • 下一篇:數控技術原理的原理分析
  • copyright 2024編程學習大全網