❶ 用matlab编写拉格朗日插值算法的程序
做了一个测试,希望有所帮助。代码:% 用matlab编写拉格朗日插值算法的程序,并以下面给出的函数表为数据基础,
% 在整个插值区间上采用拉格朗日插值法计算f(0.6),写出程序源代码,输出计算结果
% x -2.15 -1.00 0.01 1.02 2.03 3.25
% y 17.03 7.24 1.05 2.03 17.06 23.05
function main()
clc;
x = [-2.15 -1.00 0.01 1.02 2.03 3.25];
y = [17.03 7.24 1.05 2.03 17.06 23.05 ];
x0 = 0.6;
f = Language(x,y,x0)function f = Language(x,y,x0)
%求已知数据点的拉格朗日插值多项式
%已知数据点的x坐标向量: x
%已知数据点的y坐标向量: y
%插值点的x坐标: x0
%求得的拉格朗日插值多项式或在x0处的插值: fsyms t l;
if(length(x) == length(y))
n = length(x);
else
disp('x和y的维数不相等!');
return; %检错
endh=sym(0);
for (i=1:n)
l=sym(y(i));
for(j=1:i-1)
l=l*(t-x(j))/(x(i)-x(j));
end;
for(j=i+1:n)
l=l*(t-x(j))/(x(i)-x(j));
end;
h=h+l;
end
simplify(h);if(nargin == 3)
f = subs (h,'t',x0); %计算插值点的函数值
else
f=collect(h);
f = vpa(f,6); %将插值多项式的系数化成6位精度的小数
end结果:
f = 0.0201>>
❷ 拉格朗日松弛算法里面什么叫难约束条件
1,松弛算法:就是求解下界的一种方法。
2,由于拉格朗日松弛算法的实现比较简单和有比较好的性质,它不仅可以用来评价算法的效果,同时可以用在其他算法中,以提高算法的效率。
3,拉格朗日松弛算法包含两部分内容:一方面是提供下界,另一方面则演变为拉格朗日松弛启发式算法。
❸ c++的求拉格朗日多项式的算法(要求出来的是多项式系数而不是具体哪点的值)
http://blog.163.com/zhao860216@126/blog/static/940549220085224411191/
1.拉格朗日插值多项式 ,用于离散数据的拟合
C/C++ code
#include <stdio.h> #include <conio.h> #include <alloc.h> float lagrange(float *x,float *y,float xx,int n) /*拉格朗日插值算法*/ { int i,j; float *a,yy=0.0; /*a作为临时变量,记录拉格朗日插值多项式*/ a=(float *)malloc(n*sizeof(float)); for(i=0;i<=n-1;i++) { a[i]=y[i]; for(j=0;j<=n-1;j++) if(j!=i) a[i]*=(xx-x[j])/(x[i]-x[j]); yy+=a[i]; } free(a); return yy;}main(){ int i,n; float x[20],y[20],xx,yy; printf("Input n:"); scanf("%d",&n); if(n>=20) {printf("Error!The value of n must in (0,20)."); getch();return 1;} if(n<=0) {printf("Error! The value of n must in (0,20)."); getch(); return 1;} for(i=0;i<=n-1;i++) { printf("x[%d]:",i); scanf("%f",&x[i]); } printf("\n"); for(i=0;i<=n-1;i++) { printf("y[%d]:",i);scanf("%f",&y[i]);} printf("\n"); printf("Input xx:"); scanf("%f",&xx); yy=lagrange(x,y,xx,n); printf("x=%f,y=%f\n",xx,yy); getch();}
❹ 求极限用拉格朗日方法做
这题不能用拉格朗日中值定理,因为拆成[cos(sinx)-cosx]/(sinx-x)*(sinx-x)/(1-cosx)sinx之后,分别计算每项极限.第一项用拉格朗日中值定理得极限是0,而第二项用等价无穷小替换得极限是∞,所以不能利用积的极限等于极限的积来拆开.
这题最简单就是分子用和差化积公式整理,然后等价替换
分子=-2sin[(sinx+x)/2]*sin[(sinx-x)/2]~(x+sinx)(x-sinx)/2~x^4/6
分母~x^4/2
因此原式=1/3
❺ abaqus求解方法默认的是完全的拉格朗日格式还是更新的拉格朗日
天体处于两个较大天体之间,受两个较大天体引力影响,会使小物体处于一种平衡状态,从而与两个大天体保持相对位置不变,这样的点总共有五个,由拉格朗日发现,所以称为拉格朗日点。 L1点在M1和M2两个大天体的连线上,且在它们之间。 例如:一个围绕太阳旋转的物体,它距太阳的距离越近,它的轨道周期就越短。但是这忽略了地球的万有引力对其产生的拉力的影响。如果这个物体在地球与太阳之间,地球引力的影响会减弱太阳对这物体的拉力,因此增加了这个物体的轨道周期。物体距地球越近,这种影响就越大。在L1点,物体的轨道周期恰好等于地球的轨道周期。太阳及日光层探测仪(SOHO)(NASA关于SOHO工程的网站 )即围绕日-地系统的L1点运行。 L2点 在两个大天体的连线上,且在较小的天体一侧。 例如:相似的影响发生在地球的另一侧。一个物体距太阳的距离越远,它的轨道周期通常就越长。地球引力对其的拉力减小了物体的轨道周期。在L2点,轨道周期变得与地球的相等。 L2通常用于放置空间天文台。因为L2的物体可以保持背向太阳和地球的方位,易于保护和校准。 威尔金森微波各向异性探测器已经围绕日-地系统的L2点运行。詹姆斯·韦伯太空望远镜将要被放置在日-地系统的L2点上。 L3点 在两个大天体的连线上,且在较大的天体一侧。 例如:第三个拉格朗日点,L3,位于太阳的另一侧,比地球距太阳略微远一些。地球与太阳的合拉力再次使物体的运行轨道周期与地球相等。 一些科幻小说和漫画经常会在L3点描述出一个“反地球” 。 L4点在以两天体连线为底的等边三角形的第三个顶点上,且在较小天体围绕较大天体运行轨道的前方。 L5点在以两天体连线为底的等边三角形的第三个顶点上,且在较小天体围绕较大天体运行轨道的后方。 L4和L5有时称为“三角拉格朗日点”或“特洛伊点”。
补充:
五个点的位置如图
❻ 拉格朗日方法
拉格朗日方法
刚体在重力作用下,绕旋转对称轴上的定点转动(拉格朗日陀螺)的欧拉动力学方程的解,对三体问题的求解方法有重要贡献,解决了限制性三体运动的定型问题。拉格朗日对流体运动的理论也有重要贡献,提出了描述流体运动的拉格朗日方法。
中文名
拉格朗日方法
方 法
拉格朗日陀螺
意 义
对流体运动的理论也有贡献
解 决
限制性三体运动的定型问题
拉格朗日生平
拉格朗日1736年1月25日生于意大利西北部的都灵。父亲是法国陆军骑兵里的一名军官,后由于经商破产,家道中落。据拉格朗日本人回忆,如果幼年是家境富裕,他也就不会作数学研究了,因为父亲一心想把他培养成为一名律师。拉格朗日个人却对法律毫无兴趣。
到了青年时代,在数学家雷维里的教导下,拉格朗日喜爱上了几何学。17岁时,他读了英国天文学家哈雷的介绍牛顿微积分成就的短文《论分析方法的优点》后,感觉到“分析才是自己最热爱的学科”,从此他迷上了数学分析,开始专攻当时迅速发展的数学分析。
18岁时,拉格朗日用意大利语写了第一篇论文,是用牛顿二项式定理处理两函数乘积的高阶微商,他又将论文用拉丁语写出寄给了当时在柏林科学院任职的数学家欧拉。不久后,他获知这一成果早在半个世纪前就被莱布尼兹取得了。这个并不幸运的开端并未使拉格朗日灰心,相反,更坚定了他投身数学分析领域的信心。
1755年拉格朗日19岁时,在探讨数学难题“等周问题”的过程中,他以欧拉的思路和结果为依据,用纯分析的方法求变分极值。第一篇论文“极大和极小的方法研究”,发展了欧拉所开创的变分法,为变分法奠定了理论基础。变分法的创立,使拉格朗日在都灵声名大震,并使他在19岁时就当上了都灵皇家炮兵学校的教授,成为当时欧洲公认的第一流数学家。1756年,受欧拉的举荐,拉格朗日被任命为普鲁士科学院通讯院士。
1764年,法国科学院悬赏征文,要求用万有引力解释月球天平动问题,他的研究获奖。接着又成功地运用微分方程理论和近似解法研究了科学院提出的一个复杂的六体问题(木星的四个卫星的运动问题),为此又一次于1766年获奖。
1766年德国的腓特烈大帝向拉格朗日发出邀请时说,在“欧洲最大的王”的宫廷中应有“欧洲最大的数学家”。于是他应邀前往柏林,任普鲁士科学院数学部主任,居住达20年之久,开始了他一生科学研究的鼎盛时期。在此期间,他完成了《分析力学》一书,这是牛顿之后的一部重要的经典力学着作。书中运用变分原理和分析的方法,建立起完整和谐的力学体系,使力学分析化了。他在序言中宣称:力学已经成为分析的一个分支。
1783年,拉格朗日的故乡建立了"都灵科学院",他被任命为名誉院长。1786年腓特烈大帝去世以后,他接受了法王路易十六的邀请,离开柏林,定居巴黎,直至去世。
这期间他参加了巴黎科学院成立的研究法国度量衡统一问题的委员会,并出任法国米制委员会主任。1799年,法国完成统一度量衡工作,制定了被世界公认的长度、面积、体积、质量的单位,拉格朗日为此做出了巨大的努力。
1791年,拉格朗日被选为英国皇家学会会员,又先后在巴黎高等师范学院和巴黎综合工科学校任数学教授。1795年建立了法国最高学术机构——法兰西研究院后,拉格朗日被选为科学院数理委员会主席。此后,他才重新进行研究工作,编写了一批重要着作:《论任意阶数值方程的解法》、《解析函数论》和《函数计算讲义》,总结了那一时期的特别是他自己的一系列研究工作。
1813年4月3日,拿破仑授予他帝国大十字勋章,但此时的拉格朗日已卧床不起,4月11日早晨,拉格朗日逝世
❼ c++编程问题 拉格朗日插值法
代码问题,改一句就好了:
#include<iostream>
#defineN3//插值节点数目
usingnamespacestd;
voidmain()
{
floatx[N];//差值节点横坐标
floaty[N];//差值节点纵坐标
floata;//所求点横坐标
floatfx=0,tmp=1;
inti,j;
cout<<"输入插值点的坐标:"<<endl;
for(i=0;i<N;i++)
{
cin>>x[i];
cin>>y[i];
}
cout<<"输入所求点的横坐标:"<<endl;
cin>>a;
for(i=0;i<N;i++)
{
tmp=1;//加上这句,开始前还原tmp
{
for(j=0;j<N;j++)
if(i!=j)
tmp=tmp*(a-x[j])/(x[i]-x[j]);
}
fx=fx+tmp*y[i];
}
cout<<"所求值为:"<<endl;
cout<<fx<<endl;
}
❽ 拉格朗日插值算法 源程序代码
ForTran写的,要不?
subroutine LInsertValue(X,Y,n,InsertX,InsertV)
dimension x(n),y(n)
real InsertX,InsertV,temp
temp=1.0
InsertV=0.0
do i=0,n-1,2
temp=1.0
do j=0,n-1,2
if (j.ne.i) then
temp=temp*(InsertX-X(j))/(x(i)-X(j))
end if
end do
InsertV=InsertV+y(i)*temp
end do
end subroutine
program Main
character*32 nodes
real InV
real,allocatable::x(:),y(:)
nodes="NODES.DAT"
open(11,file=nodes,status='old',form='formatted')
n=0
do while(.not.eof(11))
read(11,*,end=102)
n=n+1
102 end do
write(*,*) n
rewind(11)
allocate(x(0:(n-1)),y(0:(n-1)))
do i=0,n-1
read(11,100) x(i),y(i)
end do
100 format(2e16.6)
close(11)
do i=0,n,2
call LInsertValue(x,y,n,x(i+1),InV)
write(*,'(2e16.6)') x(i),y(i)
write(*,'(2e16.6)') x(i+1),InV
end do
end program
把数据放在nodes.dat下
❾ 流体力学中拉格朗日法和欧拉法有什么不同
1、含义上的区别
拉格朗日法,又称随体法,跟随流体质点运动,记录该质点在运动过程中物理量随时间变化规律。
欧拉法,又称流场法,是以流体质点流经流场中各空间点的运动即以流场作为描述对象研究流动的方法。
2、特性上的区别
拉格朗日法基本特点是追踪流体质点,以某一起始时刻每个质点的坐标位置,作为该质点的标志。
欧拉法的特点是单步,显式,一阶求导精度,截断误差为二阶。基本思想是迭代,逐次替代,最后求出所要求的解,并达到一定的精度。
3、作用上的区别
拉格朗日法可直接运用固体力学中质点动力学进行分析,综合所有质点的运动,构成整个流体的运动。
欧拉法简单地取切线的端点作为下一步的起点进行计算,当步数增多时,误差会因积累而越来越大。因此欧拉格式一般不用于实际计算。采用区间两端的函数值的平均值作为直线方程的斜率,改进欧拉法的精度。