中南大學計算機實踐C程式設計

2021-03-04 09:49:26 字數 2643 閱讀 7297

c++課程設計報告

理論塔板數計算

化學與製藥類班

組員 指導老師:****

2023年6月28日星期四

目錄1.c語言課程設計任務書

2.摘要

3.程式設計思路和流程框圖

4.c++原始程式

5.程式執行結果

6.程式除錯過程出現的一些問題的討論

7.後記

1.c語言課程設計任務書

a. 2023年6~7月

c++課程設計

主體化工與製藥類1101~1103班

高階人才實驗班全體同學

輔助b.

c. d.

ef.g. h.

i. j.

h. 2.摘要

本組使用了高斯消元法解了個二元方程組。同時應用了最小二乘法與類進行曲線擬合求得了 y=f(x)的相平衡方程。在進行迴圈的時候迴圈使用牛頓迭代法求得相平衡方程與精餾段操作線以及相平衡方程與提鎦段操作線的交點,如此迴圈多次後可求得精餾塔理論塔板的數目n。

在設計課程中運用了c++語言的的陣列與指標,類的定義與檔案流輸入與輸出,迴圈語句,以及多種數學方法及其思想和作圖等操作。

3.程式設計思路和流程框圖

a.程式設計思路

1).首先運用高斯消元法求得了w,d的值。原理如下首先設個陣列a[3][2]=和另外乙個陣列b[3].

將a[0][i]乘以-xd再加上a[1][i]用來消除d,最後再利用個函式s=y/x*f即可求得w的值,再用f-w即可求得d的值。

2)利用最小二乘法進行曲線擬合求得相平衡方程;y=a+b*(x-z)+c*(x-z)^2+d*(x-z)^3. z為x的平均數。再化簡即可得;

的係數a0,a1,a2,a3.所以可得擬合後的方程1。

3)將xq代入方程1可得yq,在代入

可得r的值繼而可得l的值。

4)第一步迴圈解xm的值,首先令y1=xd,即可得方程xd=a0+a1*x+a2*x^2+a3*x^3用牛頓迭代法解方程組0=a0-xd+a1*x+a2*x^2+a3*x^3可得x1,再將x1代入直線方程y=r*x/(r+1)+xd/(r+1),得y2,再代入方程1解得x2如此一直迴圈。當xm少於xf時,結束迴圈。即一直解方程a0-r*x/(r+1)+xd/(r+1) +a1*x+a2*x^2+a3*x^3=0,並把值賦給xn+1,直到xm5)第二部迴圈得到xj的值,類似於第一步只是把方程2 y=r*x/(r+1)+xd/(r+1),換成方程3 y=x*(l+f)/(l+f-w)-w*xw/(l+f-w).

同時就是一直用牛頓迭代法解方程a0- x*(l+f)/(l+f-w)-w*xw/(l+f-w) +a1*x+a2*x^2+a3*x^3=0,並把值賦給xj+1,直到xjb程式設計流程框圖:

4.c語言原始程式

#include

#include

#include

#include

#include

#include

#include

double r,l,xd,xw,xq,xf,d,w,x[50];

double f=46.61;

double g(double x,double y)

class pirl //定義類用最小二乘法曲線擬合

void input(); //由檔案讀入n個資料點(x,y)

void fit(); //執行最小二乘法曲線擬合

void output(); //輸出m次擬合多項式的m+1個係數

~pirl()

};void pirl::input() //由檔案讀入n個資料點(x,y)

fin.close();

}void pirl::fit() //執行最小二乘法曲線擬合

c=c/d1;p=p/d1;

a[0]=c*b[0];

if(m>0)

c=c/d2;p=g/d2;q=d2/d1;

d1=d2;

a[1]=c*t[1];a[0]=c*t[0]+a[0];

}for (j=2;j<=m;j++)

c=c/d2;p=g/d2;q=d2/d1;

d1=d2;

a[j]=c*s[j];t[j]=s[j];

for (k=j-1;k>=0;k--)

}}void pirl::output() //輸出m次擬合多項式的m+1個係數

fout.close();}

double diedai(double a,double b,double c,double d迭代定義

while(fabs(xn1-xn)>=1e-6);

return xn1;

}void main() //主函式

;double b[3];

for(i=0;i<3;i++)

b[i]=a[1][i]-a[0][i]*xd;

w=g(b[1],b[2]);

d=f-g(b[1],b[2]);

cout<<"w="

pirl solution(25,3);

ofstream ft ("pirl.txt");

if (!ft)

while(x[i]>=xq);

q=i;j=q;

cout<<"進料板位置是"<

計算機C程式設計程式設計經典例題

1 找出100 999之間的所有超級素數 除去個位數還是素數 include int main 2 輸入乙個字串判斷是否為回文 include int main printf 此字串是回文!n return 0 3 鍵盤中輸入乙個整數,輸出其因子積。include int main printf d...

D3 《C語言程式設計》計算機實踐 實踐報告

計算機文化基礎 c語言 程式設計報告 二 七年三月十一日 一 設計題目 題目編號 題目名稱 二 題目的意義 三 程式設計功能圖 在此繪製出總體功能模組圖,並對每個模組進行功能說明,指出解決方法及相關變數和引數的說明等。模組進行功能說明,多個模組該錶可以複製.如 四 詳細設計 至少畫出乙個功能模組的流...

計算機程式設計C語言實踐考試試卷

2009年 上 全國資訊科技水平考試 請根據題目要求寫出完整的程式,並編譯通過。注意以下幾點 1 三個源程式檔案必須儲存到考場伺服器中指定的資料夾中,其名字為考生准考證號的最後5位 該資料夾已建立 即使你的程式無法編譯通過,也應儲存源程式檔案,以得到基本分數。2 根據執行平台的不同,考生上傳的程式檔...