❶ 用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、作用上的區別
拉格朗日法可直接運用固體力學中質點動力學進行分析,綜合所有質點的運動,構成整個流體的運動。
歐拉法簡單地取切線的端點作為下一步的起點進行計算,當步數增多時,誤差會因積累而越來越大。因此歐拉格式一般不用於實際計算。採用區間兩端的函數值的平均值作為直線方程的斜率,改進歐拉法的精度。