




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
實驗要求(1)理解和應用條件語句(if)、循環(huán)語句(while、for)、break語句(2)通過編程實現(xiàn)經典的迭代算法,強化對迭代結構的理解和應用(3)理解并應用窮舉法的基本原理,在具體問題中通過遍歷所有可能的組合或情況找到符合條件的解。【例5-4】績點計算。績點(GradePointAverage,GPA)是衡量學生學習成績的一種標準化指標。4.0分制A對應績點4.0B對應績點3.0C對應績點2.0D對應績點1.0F對應績點0設課程1:學分3,成績B(對應課程績點3.0)課程2:學分4,成績A(對應課程績點4.0)課程3:學分2,成績C(對應課程績點2.0)計算GPA課程1的加權績點:3×3.0=9.0課程2的加權績點:4×4.0=16.0課程3的加權績點:2×2.0=4.0總績點=9.0+16.0+4.0=29.0總學分=3+4+2=9GPA=29.0÷9=3.22#獲取課程數量num_courses=int(input("輸入課程數量:"))
total_credits=0
#總學分total_points=0
#總績點
#獲取每門課程的學分和成績foriinrange(num_courses):
print(f"\n請輸入第{i+1}門課程信息:")
credits=float(input("學分:"))
#課程學分
grade=input("成績(A,B,C,D,E):").upper()
#課程成績,轉為大寫英文字母
#根據課程成績計算課程績點
ifgrade=='A':
grade_point=4.0
elifgrade=='B':
grade_point=3.0
elifgrade=='C':
grade_point=2.0
elifgrade=='D':
grade_point=1.0
elifgrade=='F':
grade_point=0.0
else:
print("無效成績輸入!")
grade_point=0.0
#如果輸入的課程成績無效,直接賦值為0
#計算該課程的加權績點
total_credits+=credits
total_points+=credits*grade_point
#計算GPAgpa=total_points/total_creditsprint(f"GPA:{gpa:.2f}")實驗任務從鍵盤輸入兩個整數,求它們的和、差、積、商、a和b的余數、a的b次方。輸入一個用戶的體重和身高,計算BMI指數,并指出其體質類型。編寫一個猜數的游戲,由計算機給出一個1~100范圍內被猜的整數,當用戶猜了一個數后,通過比較給出“大了”、“小了”或“猜對了”提示,在猜對的情況下輸出用戶猜數的次數。要求最多允許用戶猜8次。輸出九九乘法表。迭代法迭代算法是一種通過重復計算逐步逼近解的算法,廣泛應用于優(yōu)化、數值計算和機器學習等領域。【例5-5】二分法求解非線性方程。非線性方程的根(或解)是指滿足某個非線性方程的x值,也就是使方程f(x)=0的解,其中f(x)是一個非線性函數。二分法:通過不斷縮小區(qū)間,從而逐步逼近方程解的數值計算方法。適用于求解連續(xù)函數的零點(f(x)=0)問題。f(b)f(a)
abxyy=f(x)根【例5-5】二分法求解非線性方程。(1)選擇區(qū)間。首先選擇一個閉區(qū)間[a,b],并且保證f(a)和f(b)的符號不同,即f(a)·f(b)<0。根據連續(xù)性理論,這意味著在區(qū)間內必定存在解能夠令f(x)=0。(2)計算中點。計算區(qū)間的中點(半寬度)。(3)判斷符號。如果f(m)=0,那么m就是方程的解;如果f(a)·f(m)<0,那么解在區(qū)間[a,m]內,更新右端點b=m;如果f(b)·f(m)<0,那么解在區(qū)間[m,b]內,更新左端點a=m。重復以上步驟,繼續(xù)縮小區(qū)間,直到函數值足夠接近0,或者區(qū)間的中點小于設定的精度閾值。deff(x):
#示例方程:x^3-x-2=0
returnx**3-x-2
#設置區(qū)間[a,b]a=1
#區(qū)間左端點b=2
#區(qū)間右端點epsilon=1e-6
#精度閾值
#檢查區(qū)間端點符號是否不同iff(a)*f(b)>0:
print("f(a)和f(b)必須符號不同,否則無法繼續(xù)計算")else:
#二分法求解
#二分法求解
while(b-a)/2>epsilon:#半區(qū)間長度不夠小,繼續(xù)迭代
#計算中點
m=(a+b)/2
f_m=f(m)
#在中點是解的情況下結束二分法
ifabs(f_m)<epsilon:
break
#根據符號選擇新的區(qū)間
iff(a)*f_m<0:
b=m
else:
a=m
#返回最終的中點作為方程的解solution=(a+b)/2print(f"方程的解為:{solution}")f(b)f(a)
abxyy=f(x)根【例5-5】二分法求解非線性方程。牛頓迭代法:用于求解方程f(x)=0的數值方法,它通過從一個初始猜測點出發(fā),逐步迭代來逼近方程的解。(1)從初始猜測值出發(fā)。牛頓法從一個初始猜測值x0開始,這個值通常是方程解的大致估計,通過不斷更新當前的猜測值,逐步逼近實際的解。(2)用切線代替函數。牛頓法的核心思想是利用函數在當前猜測點的切線來近似函數本身。具體來說,假設已經知道某一點xi處的函數值f(xi)和導數f′(xi),通過該點的切線找到下一個猜測點xi+1。(3)不斷更新猜測值。在每次迭代中,計算出新的點xi+1,并將其作為下一次迭代的起點。隨著迭代次數的增加,新的猜測值逐漸逼近實際的解。x0xyy=f(x)根x1x2#需要求解的方程f(x)=0deff(x):
#示例方程:x^3-x-2=0
returnx**3-x-2
#f(x)的導數deff_prime(x):
#f'(x)=3*x^2-1
return3*x**2-1
x0=1.5
#初始猜測值epsilon=1e-6
#精度要求max_iter=100
#最大迭代次數(防止死循環(huán))
x=x0
#猜測值foriter_countinrange(max_iter)
:
fx=f(x)
f_prime_x=f_prime(x)
#計算新的解
x_new=x-fx/f_prime_x
#檢查是否滿足精度要求
ifabs(x_new-x)<epsilonorabs(f(x_new))<epsilon:
print(f"方程的解為:{x_new}")
break
#更新x為新的近似值
x=x_newelse:
#不是通過break語句離開循環(huán),達到最大迭代次數仍未收斂
print("牛頓法未能收斂,無法找到解.")x0xyy=f(x)根x1x2實驗任務輸入一個數字,分別使用窮舉法、二分法和牛頓迭代法求其平方根,并對時間性能進行對比。輸入兩個正整數,求它們的最大公約數。輸入一個整數,求它的數字根。數字根是一個通過將數字的各個位置上的數字相加,直到得到一個單一數字的過程。簡單來說,就是將一個正整數的所有位數相加,然后重復這個過程,直到結果是個位數為止。例如,數字9876的數字根為39+8+7+6=303+0=3窮舉法窮舉法是一種通過列舉所有可能的解并逐一進行驗證的算法,適用于解空間較小或沒有明顯規(guī)律可依賴的場景。它的實現(xiàn)簡單直觀,通過遍歷所有解來確保不會漏掉任何一個可能的解,但效率較低,特別是解空間較大時,可能導致高昂的計算成本。窮舉法適用于小規(guī)模問題、驗證性問題或組合優(yōu)化問題的簡化版。在解空間有限的情況下,窮舉法能夠確保找到最優(yōu)解或所有符合要求的解,但是其時間復雜度較高,通常為指數級別。【例5-7】取小球方案。一個不透明的袋子中裝有若干個紅、橙、黃、綠、藍5種顏色的小球,每次隨意摸出3個小球,輸出3個小球顏色都不一樣的所有可能的方案。要點避免相同的組合出現(xiàn)(“紅、黃、藍”和“黃、紅、藍”是相同的組合/)方法:使用嵌套循環(huán)時,在每層循環(huán)中限制下一個小球顏色的選擇范圍,確保每次選出的顏色是不同的,并且每次都能生成唯一的組合。#定義5種顏色colors=['紅','橙','黃','綠','藍']
#使用3層嵌套循環(huán)生成所有3種不同顏色的組合foriinrange(len(colors)):
#第1層循環(huán),選擇第1種顏色
forjinrange(i+1,len(colors)):
#第2層循環(huán),選擇第2種顏色
forkinrange(j+1,len(colors)):
#第3層循環(huán),選擇第3種顏色
#輸出每個符合條件的組合
print(colors[i],colors[j],colors[k])紅橙黃紅橙綠紅橙藍紅黃綠紅黃藍紅綠藍橙黃綠
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生鮮打折活動方案
- 班組集體活動ktv活動方案
- 狗狗瑜伽活動方案
- 牛排沙龍活動方案
- 環(huán)保公司環(huán)境日活動方案
- 生姜洗發(fā)活動方案
- 愛心人士活動方案
- 理想降價活動策劃方案
- 烤魚線上教學活動方案
- 【公開課】牛頓第二定律+課件+-2024-2025學年高一上學期物理人教版(2019)必修第一冊+
- 預防錯混料培訓
- 2024年江蘇省響水縣衛(wèi)生局公開招聘試題帶答案
- 2025年云南省中考地理試卷真題(含答案)
- 粵港澳大灣區(qū)青少年國情教育實踐基地(虎門渡口西岸物業(yè)提升改造項目)可行性研究報告
- 人教版三年級數學下學期期末復習試卷含答案10套
- 2024年7月三級老年人能力評估師練習題庫(含參考答案解析)
- 華為員工招聘管理制度
- 天津市四校聯(lián)考2023-2024學年高一下學期7月期末考試化學試卷(含答案)
- BIM技術在建筑項目施工工藝優(yōu)化中的應用報告
- 文學概論考試要點試題及答案
評論
0/150
提交評論