为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

三次样条C语言的实现

2012-03-20 6页 doc 116KB 43阅读

用户头像

is_096631

暂无简介

举报
三次样条C语言的实现实验二 .三次样条C语言的实现 1.实验目的: 进一步熟悉三次样条插值法。 掌握编程语言字符处理程序的设计和调试技术。 2.实验要求: 已知:某些点的坐标以及初值条件。 输入:条件点数以及这些点的坐标,边界条件 输出:根据三次样条公式求出多项式公式。 3.程序流程: (1)输入已知点的个数; (2)分别输入已知点的X,Y坐标; (3)输入边界条件; (4)通过调用函数,求三次样条函数。 三次样条函数如下: 常见边界条件有三种: (1) 第1种边界条件: (2) 第2种边界条件: (3) 周期边界条件 对于第1,2...
三次样条C语言的实现
实验二 .三次样条C语言的实现 1.实验目的: 进一步熟悉三次样条插值法。 掌握编程语言字符处理程序的设计和调试技术。 2.实验要求: 已知:某些点的坐标以及初值条件。 输入:条件点数以及这些点的坐标,边界条件 输出:根据三次样条公式求出多项式公式。 3.程序: (1)输入已知点的个数; (2)分别输入已知点的X,Y坐标; (3)输入边界条件; (4)通过调用函数,求三次样条函数。 三次样条函数如下: 常见边界条件有三种: (1) 第1种边界条件: (2) 第2种边界条件: (3) 周期边界条件 对于第1,2种条件可写成矩阵形式: 对于第3种条件可写成矩阵形式: 通过以上方程求出Mi 其中: 将求出的解带入: 即得所求函数 程序流程图: ↓ ↓ ↓ ↓ 程序如下: #include #include using namespace std; const int MAX = 250; float x[MAX], y[MAX], h[MAX]; float c[MAX], a[MAX], fxym[MAX]; float f(int x1, int x2, int x3){ float a = (y[x3] - y[x2]) / (x[x3] - x[x2]); float b = (y[x2] - y[x1]) / (x[x2] - x[x1]); return (a - b)/(x[x3] - x[x1]); } //求差分 void printout(int n){ cout< 0)cout< 0)cout<<" + "< 0)cout<<"+ "< 0)cout<<" + "<= 0; i--) fxym[i] = fxym[i] - B[i]*fxym[i+1]; } void printout(int n); int main(){ int n,i; char ch; do{ cout<<"请输入节点个数:"; cin>>n; n=n-1; for(i = 0; i <= n; i++){ cout<<"请输入 X"<>x[i]; //cout<>y[i]; //cout<>t; switch(t){ case 1:cout<<"请输入 Y0\' Y"<>f0>>f1; c[0] = 1; a[n] = 1; fxym[0] = 6*((y[1] - y[0]) / (x[1] - x[0]) - f0) / h[0]; fxym[n] = 6*(f1 - (y[n] - y[n-1]) / (x[n] - x[n-1])) / h[n-1]; break; case 2:cout<<"请输入 Y0\" Y"<>f0>>f1; c[0] = a[n] = 0; fxym[0] = 2*f0; fxym[n] = 2*f1; break; default:cout<<"不可用\n";//待定 };//switch for(i = 1; i < n; i++) fxym[i] = 6 * f(i-1, i, i+1); for(i = 1; i < n; i++){ a[i] = h[i-1] / (h[i] + h[i-1]); c[i] = 1 - a[i]; } a[n] = h[n-1] / (h[n-1] + h[n]); cal_m(n); cout<<"\n输出三次样条插值函数:\n"; printout(n); cout<<"Do you to have anther try ? y/n :"; cin>>ch; }while(ch == 'y' || ch == 'Y'); return 0; } 例题: 设f(x)为定义在【27.7,30】上的函数,在节点xi(i=0,1,2,3)上的值如下: f(x0)=f(27.7)=4.1, f(x1)=f(28)=4.3, f(x2)=f(29)=4.1 f(x3)=f(30)=3.0 试求三次样条函数S(x),使它满足边界条件S‘(27.7)=3.0 S’(30)=-4.0 开始 输入已知点个数n 分别输入已知点的X,Y坐标并输入边界条件 调用函数,求三次样条函数 输出结果 _1348251346.unknown _1348250926.unknown
/
本文档为【三次样条C语言的实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索