java实验报告合肥工业大学_合肥工业大学 计算机专业 计算方法实验报告
《合肥工業大學 計算機專業 計算方法實驗報告》由會員分享,可在線閱讀,更多相關《合肥工業大學 計算機專業 計算方法實驗報告(33頁珍藏版)》請在人人文庫網上搜索。
1、合肥工業大學計算機與信息學院實驗報告課 程:計算方法專業班級: 學 號: 姓 名: .Java界面其實都不難按照程序流程圖就可以完成了實驗一插值與擬合1、 實驗目的(1) 明確插值多項式和分段插值多項式各自的優缺點;(2) 編程實現三次樣條插值算法,分析實驗結果體會高次插值產生的龍格現象;(3) 理解最小二乘擬合,并編程實現線性擬合,掌握非線性擬合轉化為線性擬合的方法(4) 運用常用的插值和擬合方法解決實際問題。2、 實驗內容(1)對于f(x)=1/(1+x*x)實現三次樣條插值(2)實現最小二乘法的直線擬合數據如下:16512315012314151483、 基本原理(計算公式)(1)三次樣。
2、條插值在每個內節點上具有2階導數。(2) 最小二乘法擬合直線為y=a+bx,而a,b有如下等式(N為給出的數據點的總個數); 四、算法設計與實現(流程圖,關鍵點)最小二乘法直線擬合:輸入數據后,按照公式計算a,b。用得到的擬合直線計算預測點的近似函數值。五、輸入與輸出(1)三次樣條插值輸入:區間長度,n+1個數據點,預測點輸出:預測點的近似函數值,精確值,及誤差(2)最小二乘法直線擬合輸入:n個數據點,預測點輸出:預測點的近似函數值六、結果討論和分析代碼三次樣條插值#include#include #define N 10using namespace std;double u0(double。
3、 x)return (x-1)*(x-1)*(2*x+1);double u1(double x)return x*x*(3-2*x);double v0(double x)return x*(x-1)*(x-1);double v1(double x)return x*x*(x-1);double s3(double x,double y,double y1,double m,double m1,double h)return u0(x)*y+u1(x)*y1+h*v0(x)*m+h*v1(x)*m1;double f(double x)return 1/(1+x*x); int main(。
4、)ifstream fin;fin.open(E:t.txt);if(!fin)coutxiyi;finf0fn;h0=x1-x0;for(i=1;i0;i-)mi=mi-Ci*mi+1;couttemp)double tt=temp;if(tempxN)cout#include#define n 5using namespace std;double sum(double x,int k)int i;double sum=0;for(i=0;ixiyi;b=(n*sumxy(x,y,n)-sum(x,n)*sum(y,n)/(n*sum2(x,n)-sum(x,n)*sum(x,n);a=(。
5、sum(y,n)-b*sum(x,n)/n;coutx0)y0=a+b*x0;cout#include#includeusing namespace std;double f(double x)if(x=0)return 1;return sin(x)/x;int main()ifstream fin;fin.open(E:t.txt);if(!fin)coutabe;cout#include#includeusing namespace std;double f(double x)return exp(x);double f1(double x)return exp(x);double g(。
6、double x,double h)return (f(x+h)-f(x-h)/2/h;double g1(double x,double h)return 4*g(x,h/2)/3-g(x,h)/3;double g2(double x,double h)return 16*g1(x,h/2)/15-g1(x,h)/15;double g3(double x,double h)return 64*g2(x,h/2)/63-g2(x,h)/63;int main()ifstream fin;fin.open(E:t.txt);if(!fin)coutah)cout#include#includ。
7、eusing namespace std;double f(double x)/函數return x*x*x-x-1;double f1(double x)/一階導數return 3*x*x-1; int main()ifstream fin;fin.open(E:t.txt );if(!fin) cout x0eMN; cout=M)break; while(fabs(f(x1)=fabs(f(x0);if(i=M)cout=N)cout#include#include#define n 3using namespace std;void show(double an+1n+1,double。
8、 bn+1)int i,j;couteN;for(i=1;ixi;yi=xi;coutaij;finbi; show(a,b);k=0;while(true)for(i=1;i#include#include#define n 3using namespace std;void show(double an+1n+1,double bn+1)int i,j;coutaij;finbi;show(a,b); k=1;dod=akk;l=k;i=k+1;doif(in)break;if(fabs(aik)fabs(d)d=aik;l=i;if(i=n)break;i+;while(true);if。
9、(d=0)cout=1;i-)t=0;for(j=i+1;j#include#define n 3using namespace std;void show(double an+1n+1,double bn+1)int i,j;coutaij;finbi; show(a,b); for(i=1;i=1;i-)t=0;for(j=i+1;j#include#includeusing namespace std;double f(double x,double y)return y-2*x/y;/函數 double f0(double x)return pow(1+2*x,0.5);int mai。
10、n()ifstream fin;fin.open(E:t.txt);if(!fin)coutx0y0hN;cout#include#includeusing namespace std;double f(double x,double y)return y-2*x/y;/函數 double f0(double x)return pow(1+2*x,0.5); void fc(double y,double x,int n,double h)double k1,k2,k3,k4;int i;for(i=0;ix0y0hN; cout亞當姆斯方法求解常微分方程,初始條件為步長h= h ,初值為x0。
11、= x0 ,y0= y0endl; for(k=0;k4;k+)xk=x0+k*h;fc(y,x,4,h);for(k=0;k4;k+)y1k=f(xk,yk);for(k=1;k4;k+)cout當x= xk 時,y精確值為f0(xk),用亞當姆斯求得y為yk,誤差為f0(xk)-ykendl;n=4;dox4=x3+h;yp=y3+h*(55*y13-59*y12+37*y11-9*y10)/24;yp1=f(x4,yp);y4=y3+h*(9*yp1+19*y13-5*y12+y11)/24;y14=f(x4,y4);cout當x= x4 時,y精確值為f0(x4),用亞當姆斯求得y為y4,誤差為f0(x4)-y4endl;n+;x3=x4;y3=y4;for(k=0;k4;k+)y1k=y1k+1;while(n=N);system(pau。
總結
以上是生活随笔為你收集整理的java实验报告合肥工业大学_合肥工业大学 计算机专业 计算方法实验报告的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java throw 接口_Java基础
- 下一篇: java jsonobject转List