数值分析实验报告(C++语言实现)

上传人:灯火****19 文档编号:122218662 上传时间:2020-03-03 格式:DOC 页数:16 大小:138.81KB
返回 下载 相关 举报
数值分析实验报告(C++语言实现)_第1页
第1页 / 共16页
数值分析实验报告(C++语言实现)_第2页
第2页 / 共16页
数值分析实验报告(C++语言实现)_第3页
第3页 / 共16页
数值分析实验报告(C++语言实现)_第4页
第4页 / 共16页
数值分析实验报告(C++语言实现)_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《数值分析实验报告(C++语言实现)》由会员分享,可在线阅读,更多相关《数值分析实验报告(C++语言实现)(16页珍藏版)》请在金锄头文库上搜索。

1、数值分析上机实验一、三次样条插值:P52第一种边界条件:9、给定函数y=fx的函数表和边界条件s75=0,s80=0,求三次样条插值函数s(x),并求f(78.3)的近似值。函数表x757677787980y=fx2.7682.8332.9032.9793.0623.153源代码:#include#includeint main() const int n=6; /给定节点个数double xn = 75, 76, 77, 78, 79, 80;double yn = 2.768, 2.833, 2.903, 2.979, 3.062, 3.153; /初始化插值节点xi、yidouble x

2、x = 78.3; /点xxdouble Alphn,Betn; /、double an,bn;double sx; /三次样条插值函数s(x)在点xx处的函数值/计算hi=xi+1+xi (i=0,1,.,n-2)double hn-1;for( int i=0; in-1; i+ )hi = xi+1-xi;/计算i和i(i=0,1,.,n-1),对应第二种边界条件 Alph0=1;Alphn-1=0;Bet0=3/h0*( y1 - y0 );Betn-1=3/hn-2*( yn-1 - yn-2 );for( i=1; in-1; i+ )Alphi = hi-1/( hi-1+hi

3、);Beti = 3*( (1-Alphi)/hi-1*( yi-yi-1 ) + Alphi/hi*( yi+1-yi ) );/计算ai和bi (i=0,1,.,n-1) a0=-Alph0/2; b0=Bet0/2; for( i=1; i=0; i- ) mi = ai*mi+1 + bi; /判断xx所在的区间xi,xi+1, i=0; while(1) if( xx=xi & xxxi+1 ) break; else i+; /求出s(x)在点xx处的值sx并输出 sx = (1+2*(xx-xi)/(xi+1-xi)*pow( (xx-xi+1)/(xi-xi+1),2 )*yi

4、 + (1+2*(xx-xi+1)/(xi-xi+1)*pow( (xx-xi)/(xi+1-xi),2 )*yi+1 + (xx-xi)*pow( (xx-xi+1)/(xi-xi+1),2 )*mi + (xx-xi+1)*pow( (xx-xi)/(xi+1-xi),2 )*mi+1; cout 函数表n x 75 76 77 78 79 80n y=f(x) 2.768 2.833 2.903 2.979 3.062 3.153n s(75)=0,s(80)=0n 由三次样条插值的第二种边界条件可得f(78.3)的近似值为:sxendl; return 0;运行结果截图:第二种边界条件

5、:10、给定函数y=fx的函数表和边界条件s0.25=1,s0.53=0.6868,求三次样条插值函数s(x),并求f(0.35)的近似值。函数表x0.250.30.390.450.53y=fx0.50.54770.62450.67080.728源代码:#include#includeint main() const int n=5; /给定节点个数double xn = 0.25, 0.3, 0.39, 0.45, 0.53;double yn = 0.5, 0.5477, 0.6245, 0.6708, 0.728; /初始化插值节点xi、yidouble xx = 0.35; /点xxd

6、ouble m0=1,mn=0.6868; /s(x0)=m0,s(xn)=mndouble Alphn,Betn; /、double an,bn;double sx; /三次样条插值函数s(x)在点xx处得函数值/计算hi=xi+1+xi (i=0,1,.,n-2)double hn-1;for( int i=0; in-1; i+ )hi = xi+1-xi;/计算i和i(i=0,1,.,n-1),对应第一种边界条件 Alph0=0;Alphn-1=1;Bet0=2*m0;Betn-1=2*mn;for( i=1; in-1; i+ )Alphi = hi-1/( hi-1+hi );Be

7、ti = 3*( (1-Alphi)/hi-1*( yi-yi-1 ) + Alphi/hi*( yi+1-yi ) );/计算ai和bi (i=0,1,.,n-1) a0=-Alph0/2; b0=Bet0/2; for( i=1; i=0; i- ) mi = ai*mi+1 + bi; /判断xx所在的区间xi,xi+1 i=0; while(1) if( xx=xi & xxxi+1 ) break; else i+; /求出s(x)在点xx处的值sx并输出 sx = (1+2*(xx-xi)/(xi+1-xi)*pow( (xx-xi+1)/(xi-xi+1),2 )*yi + (1

8、+2*(xx-xi+1)/(xi-xi+1)*pow( (xx-xi)/(xi+1-xi),2 )*yi+1 + (xx-xi)*pow( (xx-xi+1)/(xi-xi+1),2 )*mi + (xx-xi+1)*pow( (xx-xi)/(xi+1-xi),2 )*mi+1; cout 函数表n x 0.25 0.3 0.39 0.45 0.53n y=f(x) 0.5 0.5477 0.6245 0.6708 0.728n s(0.25)=1,s(0.53)=0.6868n 由三次样条插值的第一种边界条件可得f(0.35)的近似值为:sxendl; return 0;运行结果截图:二、

9、自动选取步长梯形法:P977、使用自动选取步长梯形法计算积分0121+t2dt的近似值。(给定=0.01)源代码:#include#includedouble fun_t( double t ) /被积函数return 2/( 1+t*t );int main()double a,b,Eps;coutabEps;double h=(b-a)/2;int n=1;double T0,T1=( fun_t(a) + fun_t(b) )*h; /T0为前次积分近似值,T1为后次积分近似值 double S;do T0=T1;S=0;for( int k=1; k=3*Eps );cout所求积分的

10、近似值为:T1endl; return 0;运行结果截图:三、Romberg求积法:P978、使用Romberg求积法计算积分19xdx的近似值。(给定=0.01,且取n=1)源代码:#include#includestatic double T200200;double fun_x( double x ) /被积函数return sqrt(x);double Romberg( double a, double b, double Eps )int k=0; /用来记录把区间a,b2等分的次数T00 = (b-a)/2*( fun_x(a)+fun_x(b) ); do k+;double temp=0;for( int i=1; i=pow(2,k-1); i+ )temp += fun_x(a+(2*i-1)*(b-a)/pow(2,k);T0k = 0.5*(T0k-1+(b-a)/pow(2,k-1)*temp);for( int m=1; m=k; m+

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号