fortran求解雷诺方程_方程的计算机处理94(5)_Cvs
計算機語言運用--數值計算9-方程的計算機處理94(5)_Cvs
計算機:電子線路組成的計算機器。人與計算機則是通過計算機語言-符號系統說給計算機聽而交流。
計算機語言有低級語言-機器語言、匯編、高級語言-C/C++/C#/VB/PASCAL/LISP/JAVA/PYTHON/……成百上千種之多。
作為一種計算機器—可以協助人類處理各種事情—數值計算問題、文字處理問題、圖形圖像處理問題、事務問題……。自從有了數字計算的計算機器,幾乎所有的可以交給計算機的事情,都交給計算機來處理—是輔助處理—按照人們的要求—事先安排的模式進行處理。
數值計算
代數的計算、初等函數的計算、代數方程的求解、解析幾何與微分幾何的求解、矢量-張量與場論的求解、抽象代數-空間及泛函分析、級數與變換、特殊函數問題、概率統計與隨機過程分析計算、誤差分析與實驗數據處理、最優化方法分析、有限單元法求解、數論分析、集合論及其計算、拓撲學分析與計算、組合數學的計算、圖結構處理、數理邏輯分析與處理、……、……
或者說:
自然數的計算、整數的計算、實數的計算、復數的計算、矢量-向量的計算、矩陣的計算、函數的計算、代數方程的計算、函數方程的計算、微分的計算、積分的計算、常微分-一元微分方程的計算、偏微分-多元微分方程的計算、連續數量的計算、離散數量的計算、集合的計算、組合數學的計算、……、……
或者說:科學與工程技術應用中的數值計算、……、……
方程的計算機處理
這里說的方程,是以實數域為計算范圍。
這里說的方程:是含有未知數的等式。
可以是a+5=8,或X+A=B,或ax2+bx+c=0,或ax+by=c與dx-ey=f,或ax"+bx=c,或,
或
…、……
計算機如何處理這些問題呢?,問題的描述是什么樣子的,才能充分利用計算機呢?
當然是代數形式的。便于計算機發揮特長,便于程序軟件的重用性。通過用戶交互,決定將什么樣的具體問題交給計算機進行數值處理。
方程的計算機處理
MATLAB語言及其平臺、Fotran語言平臺
C語言平臺
對于任何一個計算機語言來說,X+a=b型的方程也需要進行改造:
成為----X=b-a的樣式;
計算機是進行數值計算的好幫手,因此需要對a,b預先賦值,再進行計算;
那么對于二元一次方程呢?也是如此。當然,最好是用求解方程的兩個解的公式來進行處理—也就是,用它們作為計算機語言描述的基礎。當然,需要計算機語言描述判別分母為零。這樣,便有了方程處理的前期工作,手工處理。
有數學家推導的求根公式可以直接利用
從數學問題的自然語言表述到數學問題的計算機語言表述
? 三元一次方程組求解
求解的計算機語言表達分析,可以簡單說明如下
算法說明:
?
接下來是說:C是編譯型語言,因此需要將所做工作用計算機語言編制程序,再交給計算機來處理。作為靜態數據的模式,與MATLAB不同,需要對計算的數據—數值或代數預先聲明變量,以便申請到內存來放置。
用C語言編寫為文件形式,接著編譯成*.exe文件,再運行—人機交互。
程序文件
//三元一次方程組--threevariable linear equations
//CubicEquation3_1.C
#include
#include
#include
?void main()
{
????? ?//variable declaration
????? int i,j,k,N;
????? float ai[3][4];
????? float D,D1,D2,D3;
????? float x,y,z;
????? FILE *fp;
??? char file_z[10];
//input
????? printf("請輸入希望計算的方程組次數,N:\n");
????? scanf_s("%d",&N);
?for(i=0;i
????? {
????? printf("請輸入三元一次方程的系數,a,b,c,d \n");
????? for(j=0;j<3;j++)
???????????? {
???????????? for(k=0;k<4;k++)
??????????????????? {
??????????????????? scanf_s("%f",&ai[j][k]);
??????????????????? }
???????????? }
//data processing
D=ai[0][0]*ai[1][1]*ai[2][2]+ai[0][1]*ai[1][2]*ai[2][0]+ai[0][2]*ai[1][0]*ai[2][1]\
? -ai[0][0]*ai[1][2]*ai[2][1]-ai[0][1]*ai[1][0]*ai[2][2]-ai[0][2]*ai[1][1]*ai[2][0];
D1=ai[0][3]*ai[1][1]*ai[2][2]+ai[0][1]*ai[1][2]*ai[2][3]+ai[0][2]*ai[2][1]*ai[1][3]\
?-ai[0][3]*ai[1][2]*ai[2][1]-ai[0][1]*ai[1][3]*ai[2][2]-ai[0][2]*ai[1][1]*ai[2][3];
D2=ai[0][0]*ai[1][3]*ai[2][2]+ai[0][3]*ai[1][2]*ai[2][0]+ai[0][2]*ai[2][3]*ai[1][0]\
?-ai[0][2]*ai[1][3]*ai[2][0]-ai[0][3]*ai[1][0]*ai[2][2]-ai[0][0]*ai[2][3]*ai[1][2];
D3=ai[0][0]*ai[1][1]*ai[2][3]+ai[0][1]*ai[1][3]*ai[2][0]+ai[0][3]*ai[2][1]*ai[1][0]\
??-ai[0][3]*ai[1][1]*ai[2][0]-ai[0][1]*ai[1][0]*ai[2][3]-ai[0][0]*ai[2][1]*ai[1][3];
????? if(D!=0.0)
????? {
????? ?x=D1/D;?
????? ?y=D2/D;
????? ?z=D3/D;
//output
????? printf("方程有三個根:%9.3f,%9.3f,%9.3f\n",x,y,z);
//save result
????? printf("請輸入要保存的文件名與格式:");
????? scanf_s("%s",file_z);
????? if((fp=fopen(file_z,"w+"))==NULL)
????? {
????? printf("cannot open file\n");
????? }
????? else
????? {
fprintf(fp,"第一個方程的系數值:%8.2f,%8.2f,%8.2f,%8.2f\n",ai[0][0],ai[0][1],ai[0][2],ai[0][2]);
fprintf(fp,"第二個方程的系數值:%8.2f,%8.2f,%8.2f,%8.2f\n",ai[1][0],ai[1][1],ai[1][2],ai[1][2]);
fprintf(fp,"第三個方程的系數值:%8.2f,%8.2f,%8.2f,%8.2f\n",ai[2][0],ai[2][1],ai[2][2],ai[2][2]);
fprintf(fp,"方程的解是:\n");
fprintf(fp,"計算結果:x=%7.3f\n",x);
fprintf(fp,"計算結果:y=%7.3f\n",y);
fprintf(fp,"計算結果:z=%7.3f\n",z);
????? }
fclose(fp);//保存
printf("計算結果的文件已保存!文件名為:%s\n",file_z);
}
else
printf("方程組沒有解\n");
}
?system("pause");
}
求解過程
請輸入希望計算的方程組次數,N:
3
請輸入三元一次方程的系數,a,b,c,d
1 2 3 4 5 6 7 8 9 10 11 12
方程組沒有解
請輸入三元一次方程的系數,a,b,c,d
1 3 5 7 -9 11 -12 13 2 4 6 -8
方程有三個根:?? -18.047,??-4.907,??? 7.953
請輸入要保存的文件名與格式:1.txt
計算結果的文件已保存!文件名為:1.txt
請輸入三元一次方程的系數,a,b,c,d
3.3 5.5 7.8 -9.9 6.7 4.3 -2.1 12 3 4.7 -8 9.9
方程有三個根:???? 2.358,??-1.480,?? -1.223
請輸入要保存的文件名與格式:2.txt
計算結果的文件已保存!文件名為:2.txt
請按任意鍵繼續. . .
進行結果
?
咱不是要說明實際數學問題怎么變成計算機處理嗎!就是數學方程的預先處理問題、計算機語言描述問題嘛。
在C、C++、C#、Fortran等語言中,你能看到復數的處理問題與描述。
感覺咋樣?什么是方程的計算機處理—算法及其描述,運行及其人機交互。
總結
以上是生活随笔為你收集整理的fortran求解雷诺方程_方程的计算机处理94(5)_Cvs的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: url 转换中文_数字快速转换成中文大写
- 下一篇: python数据可视化的特点_Pytho