范文一:拉格朗日插值法c语言
实 验 报 告
实验课程名称 数值计算方法
实验项目名称 Lagrange插值公式
年 级
专 业
学生姓名
学 号
理 学 院
实验时间: 201 年 月 日
学生实验室守则
一、按教学安排准时到实验室上实验课,不得迟到、早退和旷课。
二、进入实验室必须遵守实验室的各项规章制度,保持室内安静、整洁,不准在室内打闹、喧哗、吸烟、吃食物、随地吐痰、乱扔杂物,不准做与实验内容无关的事,非实验用品一律不准带进实验室。
三、实验前必须做好预习(或按要求写好预习报告),未做预习者不准参加实验。 四、实验必须服从教师的安排和指导,认真按规程操作,未经教师允许不得擅自动用仪器设备,特别是与本实验无关的仪器设备和设施,如擅自动用或违反操作规程造成损坏,应按规定赔偿,严重者给予纪律处分。
五、实验中要节约水、电、气及其它消耗材料。
六、细心观察、如实记录实验现象和结果,不得抄袭或随意更改原始记录和数据,不得擅离操作岗位和干扰他人实验。
七、使用易燃、易爆、腐蚀性、有毒有害物品或接触带电设备进行实验,应特别注意规范操作,注意防护;若发生意外,要保持冷静,并及时向指导教师和管理人员报告,不得自行处理。仪器设备发生故障和损坏,应立即停止实验,并主动向指导教师报告,不得自行拆卸查看和拼装。
八、实验完毕,应清理好实验仪器设备并放回原位,清扫好实验现场,经指导教师检查认可并将实验记录交指导教师检查签字后方可离去。
九、无故不参加实验者,应写出检查,提出申请并缴纳相应的实验费及材料消耗费,经批准后,方可补做。
十、自选实验,应事先预约,拟订出实验方案,经实验室主任同意后,在指导教师或实验技术人员的指导下进行。
十一、实验室内一切物品未经允许严禁带出室外,确需带出,必须经过批准并办理手续。
学生所在学院: 专业: 班级:
范文二:拉格朗日插值法c语言
实 验 报 告
实验课程名称 数值计算方法
实验项目名称 Lagrange插值公式
年 级
专 业
学生姓名
学 号
理 学 院
实验时间: 201 年 月 日
学生实验室守则
一、按教学安排准时到实验室上实验课,不得迟到、早退和旷课。
二、进入实验室必须遵守实验室的各项规章制度,保持室内安静、整洁,不准在室内打闹、喧哗、吸烟、吃食物、随地吐痰、乱扔杂物,不准做与实验内容无关的事,非实验用品一律不准带进实验室。
三、实验前必须做好预习(或按要求写好预习报告),未做预习者不准参加实验。
四、实验必须服从教师的安排和指导,认真按规程操作,未经教师允许不得擅自动用仪器设备,特别是与本实验无关的仪器设备和设施,如擅自动用或违反操作规程造成损坏,应按规定赔偿,严重者给予纪律处分。
五、实验中要节约水、电、气及其它消耗材料。
六、细心观察、如实记录实验现象和结果,不得抄袭或随意更改原始记录和数据,不得擅离操作岗位和干扰他人实验。
七、使用易燃、易爆、腐蚀性、有毒有害物品或接触带电设备进行实验,应特别注意规范操作,注意防护;若发生意外,要保持冷静,并及时向指导教师和管理人员报告,不得自行处理。仪器设备发生故障和损坏,应立即停止实验,并主动向指导教师报告,不得自行拆卸查看和拼装。
八、实验完毕,应清理好实验仪器设备并放回原位,清扫好实验现场,经指导教师检查认可并将实验记录交指导教师检查签字后方可离去。
九、无故不参加实验者,应写出检查,提出申请并缴纳相应的实验费及材料消耗费,经批准后,方可补做。
十、自选实验,应事先预约,拟订出实验方案,经实验室主任同意后,在指导教师或实验技术人员的指导下进行。
十一、实验室内一切物品未经允许严禁带出室外,确需带出,必须经过批准并办理手续。
1
学生所在学院: 专业: 班级: 姓 名 学 号 实验组 实验时间 指导教师 成 绩 实验项目名称 Lagrange插值公式
实验目的及要求:
通过L插值法的学习掌握如何根据已知函数表agrange,
?xxxx01n ?yyyy01n
nn,xxj,,构造L插值多项式用agrangexfxx()()()().y,,LLnni,,j0,i0xxij,ji
实验(或算法)原理:
1(算法设计。
2(编写相应的程序上机调试。
3(已知下列函数表
x0.320.340.364849
sin0.3145670.3334870.352274x
sin0.33670.330365用上述程序验证用线性插值计算的近似值为,用抛物插值
sin0.33670.330374计算的近似值为。
4(已知下列函数表
x111213 ln2.39792.48492.5649x
ln11.75用上述程序分别用线性插值与抛物插值计算的近似值。
实验硬件及软件平台:
PC机,vc++6.0,Internet网
2
实验步骤:
1(根据算法事先写出相应程序。 2(启动PC机,进入vc集成环境,输入代码。
3(编译调试。
4(调试通过,计算出正确结果。
实验内容(包括实验具体内容、算法分析、源代码等等):
#include #include #define N double lagrange(double x[N],double y[N],double xx) {double yy,t; int j,k; yy=0.0; for(j=0;j {t=1.0; for(k=0;k if(k!=j) t=t*(xx-x[k])/(x[j]-x[k]); yy=yy+t*y[j]; } return yy; } void main() {double xx,yy; double x[N]={ }; double y[N]={ }; xx= ; yy=lagrange(x,y,xx); printf("y=%f\n",yy); } 3 实验结果与讨论: 4 5 指导教师意见: 签名: 年 月 日 韩非子名言名句大全,韩非子寓言故事,不需要的朋友可以下载后编辑删除~~ 6 1、千里之堤,毁于蚁穴。——《韩非子?喻老》 2、华而不实,虚而无用。——《韩非子?难言》 3、欲速则不达。——《韩非子? 外储说左上》 4、不吹毛而求小疵。——《韩非子?大体》 5、胜而不骄,败而不怨。——《商君书?战法》 6、民之性,饥而求食,劳而求快,苦则求乐,辱则求荣,生则计利,死则虑名。 7、以子之矛,攻子之盾。——《韩非子?难一》 8、欲成其事,先败其事。 9、道私者乱,道法者治。 10、巧诈不如拙诚,惟诚可得人心。——《韩非子?说林上》 11、塞翁失马,焉知非福。——《韩非子?说难》 12、长袖善舞,多钱善贾。——《韩非子?五蠹》 13、明主之所导制其臣者,二柄而已矣。二柄者,刑德也。何谓刑德,曰:杀戮之谓刑,庆赏之谓德。 14、凡奸臣皆欲顺人主之心,以取亲幸之势也。是以主有所善,臣从而誉之;主有所憎,臣因而毁之。凡人之大体,取舍同者则相是也,取舍异者则相非也。 15、人主之患在于信人。信人,则制于人。 16、故为人臣者,窥觇其君心也无须臾之休,而人主怠傲处其上,此世所以有劫君弑主也。 17、夫妻者,非有骨肉之恩也,爱则亲,不爱则疏。 18、智术之士,必远见而明察,不明察不能烛私;能法之士,必强毅而劲直,不劲直不能矫奸。 19、与死人同病者,不可生也,与亡国同事者,不可存也。 20、主失其神,虎随其后;主上不知,虎将为狗。 21、偏借其权势,则上下易位矣。此言人臣之不可借权势也。 22、故人行事施予,以利之为心,则越人易和;以害之为心,则父子离且怨。 23、故明主之治国也,明赏,则民劝功;严刑,则民亲法。 7 24、夫民之性,恶劳而乐佚。佚则荒,荒则不治,不治则乱,而赏刑不行于天下者必塞。 25、故治民无常,唯法为治。法与时转则治,治与世宜则有功。 26、明君无为于上,群臣竦惧乎下。 27、探其怀,夺之威。主上用之,若电若雷。 28、小信成则大信立,故明主积于信。赏罚不信,则禁令不行。 29、以肉去蚁蚁愈多,以鱼驱蝇蝇愈至。 30、爱臣太亲,必危主身;人臣太贵,必易主位。 31、群臣为学,门子好辩,商贾外积,小民右丈者,可亡也。 32、天下之难事,必作于易;天下之大事,必作于细。 33、圣人之治民,先治者强,先战者胜。 34、道在不可见,用在不可知。 35、涵掩其迹,匿其端,下不能原;去其智,绝其能,下不能意。 36、千乘之君无备,必有百乘之臣在其侧,以徙其民而倾其国;万乘之君无备,必有千乘之家在其侧,以徙其民而倾其国。 37、黄帝有言曰:上下一日百战。 38、臣主之利相与异者也。何以明之哉,曰:主利在有能而任官,臣利在无能而得事;主利在有劳而爵禄,臣利在无功而富贵;主利在豪杰使能,臣利在朋党用私。 39、人主之道,静退以为宝。 40、故群臣陈其言,君以其言授其事,事以责其功。功当其事,事当其言,则赏;功不当其事,事不当其言,则诛。 41、自胜谓之强。(能够战胜自己的人才是强者) 42、自见之谓明。(能够认清自己的人才是明智的) 43、是以志之难也,不在胜人,在自胜也。故曰:自胜之谓强。(订下心愿,志向是难的,不在胜别人,而在战胜自己的懒怯疑。) 44、一手独拍,虽疾无声。(一只手击掌,即使再用力也不会有声音) 45、立志难也,不在胜人,在自胜。 8 46、举世有道,计入有计出。(做事情要有一定的原则,既要算计得道的,也要算计失去的) 47、故去喜去恶,虚心以为道舍。(所以应该将亲近好厌恶等情绪一并抛弃,才能成功地使用权谋之术) 48、君无见其所欲。(君主不应该表露自己的喜好) 49、去好去恶,臣乃见素;去旧去智,臣乃自备。(君主隐藏自己的好恶,才会得见臣下的本来面目;抛去旧有的成见,不显露自己的智慧,才会让臣下各守其职) 50、人主好贤,则群臣饰行以邀君欲,则是群臣之情不效。(君主喜欢任用贤能之士,那么臣下就会自我粉饰迎合来君主)(说明?还是让大家各司其职,别把希望寄托在个别的贤能之士身上,防止权利的偏移) 51、时有满虚,事有利害,物有生死。(时机的盈虚是并存的,世事的利弊是兼有的,事务的生死是一体的)(说明?君主不可因为这些不可避免的得失而怨怒) 52、见而不见,闻而不闻,知而不知。(看见就好像没看见,听到好像没听到,知道好像不知道) 53、世有不可得,事有不可成。(世间总有得不到的东西,也总有办不到的事) 54、法莫如显,而术不欲见。(法一定要让人明了,而术一定不能被人觉察) 55、虚则知实之情,静则知动者正。(置身事外,才会看清真相;保持冷静,才能制定出行动原则) 56、群臣见素,则大君不蔽矣。(群臣本来的面目显现出来,那么君主就不会收到蒙蔽了) 57、是故去智而有明,去贤而有功,去勇而有强。(不用智慧可以明察,不显贤能可以成就大业,不逞勇武依然强大) 58、虚静无事,以暗见疵。(保持虚静无为的状态,往往会从隐蔽的角度得知他人的行为漏洞) 59、制在己曰重,不离位曰静。重则能使轻,静则能使躁。(权柄在手就是所说的重,不离本位就 9 是所说的静。持重者能够控御轻浮者,宁静者能够克制急躁莽撞) 60、事在四方,要在中央。圣人执要,四方来效。(具体事务交由各级负责人去执行,而君主应保证中央权力的巩固。只要君主能在准确把握全局,那么四方的臣民就会效劳)--国家的大权,要集中在君主(“圣人”)一人手里,君主必须有权有势,才能治理天下。 61、烹小鲜而数挠之,则贼其泽;治大国而数变法,则民苦之。(烹调小鱼却屡次翻动,那就会令其破碎不全;治理大国却屡次更改法令,那就会使百姓不看其苦) 62、众人助之以力,近者结之以成,远者欲之以名,尊者载之以势。(众人会全力帮助 他,身边的人乐于结交他,远方的人真心赞誉他,权高位重的人也会推崇他) 63、君人者释其刑徳而使臣用之,则君反制于臣矣。(君主听凭臣下私自施予刑罚与恩德,这样一来就会反为臣下所控制) 64、君见恶,则群臣匿端;君见好,则群臣诬能。(如果是君主所厌恶的,那么群臣就会将其隐匿起来;如果是君主所喜好,那么群臣就会弄虚作假来迎合) 65、倒言反事以尝所疑。(故意正话反说或正事反做,来试探臣下 66、不为小害善,故有大名;不蚤见示,故有大功。(不被小事妨害自己的长处,所以能取得大名;不过早显示自己的才能,所以能成就大业) 67、行贤而去自贤之心,焉往而不美,(做贤德的事情却不以贤德自居,还有什么事是办不好的) 68、去其智,绝其能,下不能意。(君主隐藏智慧,不露才能,臣下就无法猜测他的意图) 69、虚则知实之情,静则知动者正。(置身事外,才会看清真相;保持冷静,才能制定出行动原则 70、爱臣太亲,必威其身;人臣太贵,必易主位。(过于宠信臣下,必然会危及君主自身;臣下权势过重,必然有篡位之心) 71、人主无威而重在左右。(君主维修丧失转而要仰仗臣下了) 72、佯爱人,不得复憎也;佯憎人,不得复爱也。(假装憎恶,就无法对其再加以憎恶;假装憎恶,就无法再对其施以恩惠) 73、树橘柚者,食之则甘,嗅之则香;树枳棘者,成而刺人。故君子慎所树。(种植橘柚,吃起来是甜的,闻起来是香的;而种植荆棘,长大了却会刺伤人。)(说明?栽培人时应个格外谨慎) 74、世有不可得,事有不可成。(世间总有得不到的东西,也总有办不到的事) 75、存亡在虚实,不在于众寡。(一国的存亡要看权柄是否掌握在君主手里,而不应看国家武力的强弱) 10 76、一手独拍,虽疾无声。(一只手击掌,即使再用力也不会有声音) 77、不以智累心,不以私累己;寄治乱于法术,托是非于赏罚。(不因过度思考使内心疲惫,不因个人私欲而令自身受害;依据法令和权谋来治理国家,通过赏罚来彰显是非。) 78、圣人之道,去智去巧。智巧不去,难以为常。(圣人处世,是不需要智虑与机巧的。因为不抛弃智虑机巧,就很难维持长久。) 79、巧为輗,拙为鸢。(做车輗是聪明的,做木鸢却是愚笨的)(说明?考虑成本与实际功效) 80、荡而失水,蝼蚁得意焉。(鱼游到岸边搁浅的是时候,就会被蝼蚁吃掉) 81、事有举之而有败,而贤其毋举之者。(事情有做了却不成功的,但这也胜过不去做的) 82、恬淡有趋舍之义,平安知祸福之计。(恬静淡泊之后才能把握取舍的原则,平稳安闲之后才能察知祸福的端倪)(说明?拒斥外界的诱惑) 83、太山不立好恶,故能成其高;江海不择小助,故能成其富。(泰山不以自己的好恶来选择土石,所以成就了它自身的高大;江海不分大小来容纳河流,所以成就了它的广博) 84、夫物者有所宜,才者有所施,各处其宜,故上下无为。(世间万物都各有特性,不同的才能有不同的施展方向,令有才干者各得其所,所以君主就可以无为而治。) 85、火形严,故人鲜灼;水形懦,人多溺。(火的形态看起来是严酷的,所以很少有人被灼伤;水的形态看起来是柔弱的,所以经常有人淹死) 86、故势不便,非所以逞能也。(所以,当形势不便时,是不应该逞强的) 87、使杀生之机,夺予之要在大臣,如是者侵。(生杀予夺之权落在臣下手中,如此一来君主就有失势的危机) 88、爱多者则法不立,威寡者则下侵上。(过于宠溺臣下,法令就难以确立。缺乏威严就会被臣下 11 欺凌) 89、私行胜,则少公功。(营私舞弊之风盛行,臣下就不能尽职为君效力了) 90、诱道争远,非先则后也,而先后心皆在于臣,上何以调于马,(在路上赛马,不是领先就是落后,而此时还总是关注对手的话,又怎么能得心应手地驾驭自己的马呢, 91、且夫物众而智寡,寡不胜众,智不足以遍知物,故因物以治物。(相对于复杂的世事来说,个人的智慧是很渺小的,个人的渺小智慧难以处理繁杂事务,所以应该利用工具来处理事务)(比如?法律制度及司法人员的设置等) 92、去甚去泰,身乃无害。(行为不过度,才不会危及己身) 93、夫有材而无势,虽贤不能治不肖。故立尺材于高山之上,则临千仞之溪(xi1),材非长也,位高也。(有才干而没有权势,即使是贤人也无法控御不肖之徒。一尺长的木材树立在高山之上,就能俯瞰万丈深渊。这并非是木头长,而是它所处的地位高。) 94、故视强,则目不明;听甚,则耳不聪;思虑过度,则智识乱。(用眼过度,则视力下降;用耳过度,就会听力下降;用脑过度,就会思虑混乱) 95、利莫长于简,福莫久于安。(最大的利益莫过于简朴,最大的福泽莫过于安稳) 96、因可势,求易道。(根据可以成功的形势,来寻求易于成功的方法) 97、和氏之璧,不饰以五采。(像和氏璧那样的美玉,不必用五色饰物来装饰) 98、凡德者,以无为集,以无欲成,以不思安,以不用固。(凡是德都是因为无为而聚集,因无欲而成就,因不思而安稳,因不用而牢固 韩非子寓言: 自相矛盾 郑人买履 讳疾忌医 杀猪教子 三人成虎 中饱私囊 子罕辞玉 守株待兔 滥竽充数 螳螂捕蝉 老马识途 宋人疑邻 和氏之璧 买椟还珠 揠苗助长 一鸣惊人 有的放矢 恶贯满盈 舍近求远 进退维谷 1、人生来就不是为了被打败的,人能够被毁灭,但是不能够被打败 12 2、胜利者一无所获。 3、没有失败,只有战死。 4、对一个作家最好的训练是—不快乐的童年。 5、二十世纪的丧钟为人类而鸣~ 6、最后我觉得他自题的墓志铭也能表现出他的思想和语言特色:恕我不起来啦~ 7、生活与斗牛差不多。不是你战胜牛,就是牛挑死你。 8、我多希望在我只爱她一个人时就死去。 9、所有的罪恶都始于清白。 10、只要不计较得失,人生便没有什么不能克服的~ 11、偏执是件古怪的东西。偏执的人必然绝对相信自己是正确的,而克制自己,保持正确思想,正是最能助长这种自以为正确和正直的看法。——海明威 12、每一个人都需要有人和他开诚布公地谈心。一个人尽管可以十分英勇,但他也可能十分孤独。——海明威 13、只向老人低头。 14、每个人都不是一座孤岛,一个人必须是这世界上最坚固的岛屿,然后才能成为大陆的一部分。 13 14 #include #include #include using namespace std; void main() { double x[21],y1[21],y2[21],L1=0.0,L2=0.0,l[21] ; double x0,temp1,temp2; int i,j,n=20; /*double f=0.0; double x0,temp1,temp2,l[3]; int x[3]={144,169,225},y[3]={12,13,15}; int i,j,n=2;*/ cout.setf(ios::fixed); //设置输 出为 4位小数 cout.setf(ios::showpoint); cout <> cout for(i=0;i<21;i++) 不="" 同="" x="">21;i++)> { x[i]=i*0.5-5; y1[i]=x[i]/(1+x[i]*x[i]); y2[i]=1/(1+25*x[i]*x[i]); if(x0==x[i]) //如果 输入数为已给值则直接输出 { cout cout exit(-1); } } for(j=0;j<> { for(i=0,temp1=1.0,temp2=1.0;i<=n;i+>=n;i+> { temp1*=(x0-x[i]); if(i!=j) temp2*=(x[j]-x[i]); } temp1=temp1/(x0-x[j]); l[j]=temp1/temp2; } for(i=0;i<> { L1+=y1[i]*l[i]; L2+=y2[i]*l[i]; } cout<> } #include #include #define M 20; int n=0; int p=1; int num=0; double *x; double *y; double Calculate(double tt) ; void Insert(int m); void Print( ); void NewTon(int m) { double tt; Insert(m); Print( ); printf( scanf( printf( while(p!=0) { if(p==1) { printf( scanf( NewTon(num); } else if(p==2) { printf( scanf( tt=Calculate(tt); printf( printf( printf( scanf( printf( } else break; } } void Print( ) { int k,j; printf( for(j=1;j<> { if(y[j]>=0) printf( printf( for(k=0;k<> } printf( } void Insert(int m) { int j,k,t,N;N=n; n+=m; double *x1; double *y1; x1=(double*)malloc(n*sizeof(double)); y1=(double*)malloc(n*sizeof(double)); for(j=0;j<> { x1[j]=x[j]; y1[j]=y[j]; } for(j=0;j<> { printf( printf( } x=x1; y=y1; printf( if(N>1) for(j=0;j<> { double ss=1; for(k=0;k<> ss*=x[N+j]-x[k]; for(k=0;k<> { double rr=y[k]; for(t=0;t<> rr*=x[N+j]-x[t]; y[N+j]-=rr; } y[N+j]/=ss; } else for(j=1;j<> { double ss=1; for(k=0;k<> ss*=x[N+j]-x[k]; for(k=0;k<> { double rr=y[k]; for(t=0;t<> rr*=x[N+j]-x[t]; y[N+j]-=rr; } y[N+j]/=ss; } } double Calculate(double tt) { int i,j; double yy=0; double xx;for(i=0;i<> { xx=y[i]; for(j=0;j<> { xx=xx*(tt-x[j]); } yy+=xx; } return yy; } void main() { printf( NewTon(num); printf( } 附 页 1. 源程序 #include "stdlib.h" outtextxy1(10,8,"x",14); #include "stdio.h" outtextxy1(10,28,"y",14); #include "conio.h" for(i=0;i #include "string.h" { #include "graphics.h" outtextxy2(36+i*80,8,Table[i].x,6,14); #include "math.h" outtextxy2(36+i*80,28,Table[i].y,6,14); typedef struct } { } float x; float GetMaximum_x(POINT Table[],int n) float y; { }POINT; int i; float Lagrange(POINT Table[],int n,float x); int Max_x; void InitGraph() Max_x=0.0; { for(i=0;i int gdriver = DETECT,gmode; if(Max_x initgraph(&gdriver,&gmode,""); Max_x=fabs(Table[i].x); } return(Max_x); void line1(int x1,int y1,int x2,int y2,int color) } { float GetMaximum_y(POINT Table[],int n) setcolor(color); { line(x1,y1,x2,y2); int i; } int Max_y; void outtextxy1(int x,int y,char text[],int color) Max_y = 0.0; { for(i=0;i setcolor(color); if(Max_y outtextxy(x,y,text); Max_y=fabs(Table[i].y); } return(Max_y); void outtextxy2(int x,int y,float RealNumber,int } Length,int color) void DrawCoordinate(int X1,int Y1,int X2,int Y2,float { x1,float y1,float x2,float y2) char String[20]; { setcolor(color); char String[20]; gcvt(RealNumber,Length,String); line1(X1,(Y1+Y2)/2,X2,(Y1+Y2)/2,7); outtextxy(x,y,String); line(X2,(Y1+Y2)/2,X2-10,(Y1+Y2)/2-2); } line(X2,(Y1+Y2)/2,X2-10,(Y1+Y2)/2+2); void ShowTable(POINT Table[],int n) line((X1+X2)/2,Y1,(X1+X2)/2,Y2); { line((X1+X2)/2,Y1,(X1+X2)/2-2,Y1+10); int i; line((X1+X2)/2,Y1,(X1+X2)/2+2,Y1+10); char String_x[20],String_y[20]; line((X1+X2)/2+(X2-X1)/4,(Y1+Y2)/2-4,(X1+X2)/ line1(0,20,639,20,7); 2+(X2-X1)/4,(Y1+Y2)/2); line(30,0,30,40); gcvt((x1+x2)/2+(x2-x1)/4,6,String); 1 outtextxy((X1+X2)/2+(X2-X1)/4-3,(Y1+Y2)/2+4,St{ ring); setcolor(color); line((X1+X2)/2-(X2-X1)/4,(Y1+Y2)/2-4,(X1+X2)/2 circle(x,y,2); -(X2-X1)/4,(Y1+Y2)/2); } gcvt(-((x1+x2)/2+(x2-x1)/4),6,String); void DrawPointsInTable(int X1,int Y1,int X2,int Y2,float outtextxy((X1+X2)/2-(X2-X1)/4-3,(Y1+Y2)/2+4,Strx1,float y1,float x2,float y2,POINT Table[],int n) ing); { line((X1+X2)/2+4,(Y1+Y2)/2-(Y2-Y1)/4,(X1+X2)/ int i; 2,(Y1+Y2)/2-(Y2-Y1)/4); for(i=0;i gcvt(-((y1+y2)/2+(y2-y1)/4),6,String); outtextxy((X1+X2)/2+8,(Y1+Y2)/2-(Y2-Y1)/4-2,Str PutBigDot(xToX(X1,X2,x1,x2,Table[i].x),yToY(Y1, ing); Y2,y1,y2,Table[i].y),14); line((X1+X2)/2+4,(Y1+Y2)/2+(Y2-Y1)/4,(X1+X2)/} 2,(Y1+Y2)/2+(Y2-Y1)/4); void DrawPoint_xy(int X1,int Y1,int X2,int Y2,float gcvt(((y1+y2)/2+(y2-y1)/4),6,String); x1,float y1,float x2,float y2,float x,float y) outtextxy((X1+X2)/2+8,(Y1+Y2)/2+(Y2-Y1)/4-2,St{ ring); char Digits[60]; } int X,Y,tmp; int xToX(int X1,int X2,float x1,float x2,float x) X=xToX(X1,X2,x1,x2,x); { Y=yToY(Y1,Y2,y1,y2,y); return((int)(X1+(X2-X1)*(x-x1)/(x2-x1))); PutBigDot(X,Y,13); } Digits[0]='('; int yToY(int Y1,int Y2,float y1,float y2,float y) gcvt(x,8,&Digits[1]); { tmp=strlen(Digits); return((int)(Y1+(Y2-Y1)*(y-y1)/(y2-y1))); Digits[tmp]=','; } Digits[tmp+1]=0; void DrawFunctionCurve(int X1,int Y1,int X2,int gcvt(y,8,&Digits[strlen(Digits)]); Y2,float x1,float y1,float x2,float y2,POINT Table[],int n) tmp=strlen(Digits); { Digits[tmp]=')'; int i; Digits[tmp+1]=0; float Real_x_step; outtextxy1(X+3,Y-3,Digits,13); if(X2<=x1) }="">=x1)> { void DrawCurve_And_ShowResult(POINT Table[],int printf("error screen window!"); n,float x,float y) return; { } float Max_x,Max_y; Real_x_step=(x2-x1)/(X2-X1); float x1,y1,x2,y2; for(i=0;i Table[n].x=x; line1(xToX(X1,X2,x1,x2,x1+i*Real_x_step),yToY( Table[n].y=y; Y1,Y2,y1,y2,Lagrange(Table,n,x1+i*Real_x_step)),xToX Max_x=GetMaximum_x(Table,n+1); (X1,X2,x1,x2,x1+(1+i)*Real_x_step),yToY(Y1,Y2,y1,y2 Max_y=GetMaximum_y(Table,n+1); ,Lagrange(Table,n,x1+(i+1)*Real_x_step)),3); x1=-Max_x*2; } y1=Max_y*2; void PutBigDot(int x,int y,int color) x2=Max_x*2; 2 y2=-Max_y*2; { X1=10; float Result,tmp; Y1=60; int i,j; X2=630; Result=0.0; Y2=450; for(i=0;i DrawCoordinate(X1,Y1,X2,Y2,x1,y1,x2,y2); { DrawFunctionCurve(X1,Y1,X2,Y2,x1,y1,x2,y2,Tabl tmp=1.0; e,n); for(j=0;j DrawPointsInTable(X1,Y1,X2,Y2,x1,y1,x2,y2,Table { ,n); if(j==i) continue; DrawPoint_xy(X1,Y1,X2,Y2,x1,y1,x2,y2,x,y); } tmp*=((x-Table[j].x)/(Table[i].x-Table[j].x)); int Check_x_is_same_as_former(POINT Table[],int i) } { Result+=(tmp * Table[i].y); int k; } for(k=0;k if(fabs(Table[k].x-Table[i].x)<0.000001) }="">0.000001)> return 1; void main() return 0; { } int n; void InputTable(POINT Table[],int *n) float x,y; { POINT Table[1000]; int i; InputTable(Table,&n); printf("\nNumber of Points n="); printf("\nInput x="); scanf("%d",n); scanf("%f",&x); for(i=0;i<*n;++i) y="Lagrange(Table,n,x);">*n;++i)> { printf("\nL(%f)=%f",x,y); printf("Input %dth point(x%d,y%d):",i,i,i); printf("\n\nPress any key to show Table,draw L(x) scanf("%f,%f",&Table[i].x,&Table[i].y); and point (x,y)\n"); if(Check_x_is_same_as_former(Table,i)) getch(); { InitGraph(); printf("\nThis x is the same as the ShowTable(Table,n); former,ReInput!\n",i); DrawCurve_And_ShowResult(Table,n,x,y); --i; outtextxy(1,468,"Press any key to quit!"); } getch(); } closegraph(); } } float Lagrange(POINT Table[],int n,float x) 3 2. 程序运行结果 2.1 运行程序后,出现如下图的窗口 2.2 输入数据(100,10),(121,11),(144,12),再输入要求的点x=115 2.3 按下Enter键,就会出现画图界面 4 转载请注明出处范文大全网 » 拉格朗日插值法c语言范文三:拉格朗日插值法c语言程序
范文四:拉格朗日插值方法C语言编程
范文五:拉格朗日插值--C语言实现