网站大量收购独家精品文档,联系QQ:2885784924

计算方法实验3(Computational method experiment 3).doc

计算方法实验3(Computational method experiment 3).doc

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算方法实验3(Computational method experiment 3)

计算方法实验3(Computational method experiment 3) 拉格朗日插值法 # include stdio.h Void main () { The double L (double x); Double a, X; Scanf (% lf, x); A = l (x); Printf (% F,); } The double L (double x) {double the [5] = {0.4,0.5,0.6,0.7,0.8}; Double B [5] = {- 0.916291, 0.693147, 0.510826, 0.356675, -0.223144}; Double n = 0, l, k = 1, s = 1; Int w I; For (I = 0; I = 4; I + +) { For (w = 0, w = 4; W + +) { If (w = = I) Continue; K = k * (x - [w]); S = s * (a [i] - [w]); } L = K / s * B [i]; S = 1; K = 1; N = n + L; } The return (n); } 牛顿法 # include stdio.h # include stdlib.h # include iostream.h Typedef struct date { Float X; Float y; } / / 变量x和函数值y的结构 date; Date d [20]; / / 最多二十组数据 Float f (int s, int t) / / 牛顿插值法, 用以返回插商 { If (t = = S + 1) The return (d [t].Y - D [S].Y) / (d [t].X - D [S].X); Else The return (f (s + 1, t) - f (s, t) - 1) / (d [t].X - D [S].X); } Newton (float x, float, int count) { Int n; While (1) { Cout 请输入n值 (即n次插值):; / / 获得插值次数 CIN n; If (n = count - 1) / / 插值次数不得大于count-1次 Break; Else System (CLS); } / / 初始化t, y, YT. Float t = 1.0; Float y = D [0].Y; Float YT = 0.0; / / 计算y值 For (int j = 1; J = n; j + +) { T = (x - D [J-1].X) * t; YT = f (0, J * t; / / cout f (0, J) endl; Y = y + YT; } Return y; } Lagrange (float x, float, int count) { Float y = 0.0; For (int k = 0; K count; K + +) / / 这儿默认为count-1次插值 { Float P = 1.0; / / 初始化p For (int j = 0, J count; j + +) {/ / 计算p的值 If (k = J) continue; / / 判断是否为同一个数 P = P * (x - D [J].X) / (d [k].X - D [J].X); } Y = y + p * d [k].Y; / / 求和 } Return y; / / 返回y的值 } Void main () { Float x, y; Int count; While (1) { Cout 请输入x [i], y [i] 的组数, 不得超过20组:; / / 要求用户输入数据组数 CIN count; If (count = 20) Break; / / 检查输入的是否合法 System (CLS); } / / 获得各组数据 For (int i = 0; I count; I + +) { Cout 请输入第 I + 1 组x的值:; CIN d [i].X; Cout 请输入第 I + 1 组y的值:; CIN d [i].Y; System (CLS); } Cout 请输入x的值:; / / 获得变量x的值 CIN x; While (1) { Int choice = 3; Cout 请您选择使用哪种插值法计算: endl; Cout (0): 退出 endl; Cou

您可能关注的文档

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档