⑴ 數值計算方法
占個位,明天下午再看看。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
一題:(你的題目中精度沒有說清楚,應當是公式復制過,丟失信息了)
你改一下精度和初始值吧(自己設計的迭代法的收斂與初值關系比較大)
f=inline('(x^2+2-exp(x))/3'); %注意這里是x(n+1)=**的迭代公式
acc=1e-8; %精度
x0=1.5;
%(1)迭代法
x1=x0;
for i_iter=1:10000 %迭代最大次數
x2=f(x1);
if (abs(x1-x2)<acc)
break;
end
x1=x2;
end
x2,i_iter
%(2)斯蒂芬森
x1_s=x0;
for i_steff=1:10000 %迭代最大次數
y=f(x1_s);
z=f(y);
x2_s=x1_s-(y-x1_s)^2/(z-2*y+x1_s);
if (abs(x1_s-x2_s)<acc)
break;
end
x1_s=x2_s;
end
x2_s,i_steff
%(3)牛頓法
syms x
fNew=x^2-3*x+2-exp(x);
df=diff(fNew); %導數
f_df=fNew/df;
x1_n=x0;
for i_New=1:10000 %迭代最大次數
x2_n=x1_n-subs(f_df,x1_n);
if (abs(x1_n-x2_n)<acc)
break;
end
x1_n=x2_n;
end
x2_n,i_New
============
二題、
syms x1 x2
f(1)=3*x1^2-x2^2;
f(2)=3*x1*x2^2-x1^3-1;
df=jacobian(f);
f_df=(df\f')';
acc=1e-6;
x0=[1,1];
xold=x0;
for i_New=1:1000 %迭代最大次數
xnew=xold-subs(subs(f_df,x1,xold(1)),x2,xold(2));
if (norm(xnew-xold)<acc)
break;
end
xold=xnew;
end
xnew,i_New
⑵ 求數值計算方法實驗報告格式(C語言)
自己去下吧
http://download.csdn.net/source/771208
數值計算方法上機實驗報告完全版(親手完成,含報告+含源代碼+實驗截圖)
⑶ 微分幾何,運籌學,數學實驗,數值分析,計算方法,這幾門課從難到易排下序,謝謝!
就我個人觀點,微分幾何是最難的。
運籌學主要是邏輯和觀念的建立比較難一點,運算不算復雜。
其它的都是應用,前面基礎不好也是難,但前面基礎好就談不上難了。
⑷ 數值計算方法上機題編程,,,用c語言編程序,用牛頓迭代法求18的倒數,精度為0.0005,求大神解
用牛頓迭代法求方程(2*(X-4)+3)X-6=0的根。
其迭代公式為X2=X1-F(X1)/F'(X1)
F'(X1)為對方程求導。本題中P'(X1)=(6*x1-8)*x1-3;
編譯顯示正確,但一運行就死機,我已經死了3次了。(一開始還以為電腦的問題)
#include<iostream.h>
#include<math.h>
void main(void)
{float x1,x2=100;
do
{x1=x2;
x2=(float)x1-(((2*x1-4)*x1+3)*x1-6)/((6*x1-8)*x1-3);
}while(fabs(x2-x1)>pow(10,-5));
cout<<x2;
}
⑸ 數值計算方法實驗課題目(求定積分方面)
只會第一個牛頓萊布尼茲公式的做法:
4提出積分號,1/(1+X^2)的原函數為arctanX,故積分出來為4*arctanX 帶入上下限為4*arctan1-4*arctan0=π
其他的不會做了
⑹ 求一篇數值分析實驗報告
數值分析實驗報告
姓名: 學號:
實驗1:
1. 實驗項目的性質和任務
通過上機實驗,對病態問題、線性方程組求解和函數的數值逼近方法有一個初步理解。
2.教學內容和要求
1)對高階多多項式
編程求下面方程的解
並繪圖演示方程的解與擾動量 的關系。(實驗2.6)
2)對 ,生成對應的Hilbert矩陣,計算矩陣的條件數;通過先確定解獲得常向量b的方法,確定方程組
最後,用矩陣分解方法求解方程組,並分析計算結果。(第三章,實驗題4)
3)對函數
的Chebyshev點
編程進行Lagrange插值,並分析插值結果。(第四章 實驗1)
項目涉及核心知識點
病態方程求解、矩陣分解和方程組求解、Lagrange插值。
重點與難點
演算法設計和matlab編程。
1)a.實驗方案:
先創建一個20*50的零矩陣X,然後利用Matlab中的roots()和poly()函數將50個不同的ess擾動值所產生的50個解向量分別存入X矩陣中。然後再將ess向量分別和X的20個行向量繪圖。即可直觀的看出充分小的擾動值會產生非常大的偏差。即證明了這個問題的病態性。
b.編寫程序:
>> X=zeros(20,50);
>> ve=zeros(1,21);
>> ess=linspace(0,0.00001,50);k=1;
>> while k<=50
ve(2)=ess(k);
X(1:20,k)=roots(poly(1:20)+ve);
k=k+1;
end
>> m=1;
>> while m<=20
figure(m),plot(ess,X(m,:));
m=m+1;
end
C.實驗結果分析和拓展
由上面的實驗結果可以看出一個充分小的擾動值可以讓方程的解產生非常大的偏差,而且這個偏差隨著ess的變大偏差也隨即變大。但可以看出在相對小的根處根比較穩定,也就是說這些根關於ess並不敏感,而在較大根處時,根很不穩定,即這些解關於ess的變化是敏感的。這就說明了這個問題本身就是一個病態問題,與演算法好壞無關。
若擾動在x^18處,只要把程序中的ve(2)改為ve(3)即可,其圖形和此類似。
d.實驗結論:
高次多項式擾動求方程解問題是一個病態問題。
2)a.實驗方案:
先創建一個20*20的零矩陣A,再通過給定解x和Hilbert矩陣求出列向量b,然後通過LU分解法求出方程HX=b的解X,然後將x-X』這一行向量存入A矩陣中,形成一循環,最後,如果Hilbert矩陣非病態的話,則可輸出一個20*20的對角矩陣。
b.編寫程序:
>> n=2;
>> A=zeros(20,20);
>> while n<=20
x=1:n;
H=hilb(n);
b=H*x';
[L U]=lu(H);
y=L\b;X=U\y;
A(n,1:n)=x-X';
n=n+1;
end
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 4.455948e-017.
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 7.948463e-017.
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 1.798429e-016.
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 7.626119e-018.
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 6.040620e-017.
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 5.444860e-017.
>> A
A =
1.0e+003 *
Columns 1 through 10
0 0 0 0 0 0 0 0 0 0
-0.0000 0.0000 0 0 0 0 0 0 0 0
-0.0000 0.0000 -0.0000 0 0 0 0 0 0 0
-0.0000 0.0000 -0.0000 0.0000 0 0 0 0 0 0
0.0000 -0.0000 0.0000 -0.0000 0.0000 0 0 0 0 0
0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0 0 0 0
0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0 0 0
-0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0 0
-0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0
-0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000
-0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000
-0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0001 -0.0003 0.0006 -0.0007 0.0005
0.0000 -0.0000 0.0000 -0.0001 0.0005 -0.0027 0.0096 -0.0223 0.0348 -0.0361
0.0000 -0.0000 0.0000 -0.0004 0.0030 -0.0098 0.0080 0.0593 -0.2570 0.5154
0.0000 -0.0000 0.0000 -0.0001 0.0005 -0.0029 0.0095 -0.0171 0.0086 0.0347
0.0000 -0.0000 0.0000 -0.0000 0.0003 -0.0016 0.0059 -0.0133 0.0145 0.0094
0.0000 -0.0000 0.0000 -0.0001 0.0009 -0.0042 0.0118 -0.0182 0.0082 0.0185
0.0000 0.0000 -0.0000 0.0002 -0.0027 0.0187 -0.0762 0.1806 -0.2249 0.0813
0.0000 0.0000 -0.0000 0.0001 -0.0017 0.0120 -0.0497 0.1224 -0.1699 0.1064
0.0000 -0.0000 0.0000 -0.0003 0.0028 -0.0137 0.0371 -0.0464 -0.0164 0.1243
Columns 11 through 20
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
-0.0000 0 0 0 0 0 0 0 0 0
-0.0002 0.0000 0 0 0 0 0 0 0 0
0.0238 -0.0091 0.0015 0 0 0 0 0 0 0
-0.6091 0.4336 -0.1727 0.0296 0 0 0 0 0 0
-0.0944 0.1170 -0.0824 0.0318 -0.0053 0 0 0 0 0
-0.0624 0.1107 -0.1110 0.0674 -0.0232 0.0035 0 0 0 0
-0.0289 0.0059 0.0103 0.0082 -0.0263 0.0181 -0.0042 0 0 0
0.0524 0.1690 -0.3743 -0.1862 1.0944 -1.2171 0.6004 -0.1156 0 0
-0.0327 0.1652 -0.3051 -0.0485 0.7195 -0.9387 0.5714 -0.1699 0.0191 0
-0.1120 -0.0421 0.0883 0.0222 -0.0628 0.1013 -0.2902 0.3783 -0.2173 0.0469
C.實驗結果分析和拓展:
當Hilbert矩陣的階數比較小時,其解X和給定解x偏差不大;但當Hilbert矩陣的階數變大時,偏差就會變大。這就說明了Hilbert矩陣是一組病態矩陣,從Matlab運行中的Warning可以看出,其條件數相當大。
d.實驗結論:
Hilbert矩陣是一組病態矩陣,用它來做線性方程的系數矩陣時,往往會得出與精確解相差較大的解。
3)a.實驗方案:
在區間【-1,1】上取點,先按Chebyshev取點,即xk=cos((2k-1)pi/2/(n+1))取點,然後再進行拉格朗日插值,繪出圖和插值點。而後再進行均勻取點再拉格朗日插值。將兩種插值結果進行比較。
b.編程實現:
for a=1:10
b=a+1;
for c=1:b
X(c)=cos((2*c-1)*pi/2/(a+1));
Y(c)=1/(1+25*X(c)^2);
x=-1:0.05:1;
end
m=length(x);
for i=1:m
z=x(i);s=0;
for k=1:b
L=1;
for j=1:b
if j~=k
L=L*(z-X(j))/(X(k)-X(j));
end
end
s=s+L*Y(k);
end
y(i)=s;
end
figure(1)
plot(x,y,'r');
hold on;
figure(2)
plot(X,Y,'b*')
hold on
end
for a=2:2:10
b=a+1;
X=linspace(-1,1,b);
Y=1./(1+25*X.^2);
x=-1:0.05:1;
m=length(x);
for i=1:m
z=x(i);s=0;
for k=1:b
L=1;
for j=1:b
if j~=k
L=L*(z-X(j))/(X(k)-X(j));
end
end
s=s+L*Y(k);
end
y(i)=s;
end
figure(1)
plot(x,y,'r');
hold on;
figure(2)
plot(X,Y,'b*')
hold on
end
C.實驗結果分析及拓展:
均勻插值時,當n比較大時,就會出現多項式插值的Runge現象,即當插值節點的個數n增加時,Lagrange插值多項式對原來函數的近似並非越來越好。當進行非等距節點插值時,其近似效果明顯要比均勻插值是要好。原因是非均勻插值時,在遠離原點處的插值節點比較密集,所以其插值近似效果要比均勻插值時的效果要好。
d.實驗結論:
利用Chebyshev點進行非等距節點插值的對原函數的近似效果要比均勻節點插值的好。
⑺ 數值計算方法的正文
隨著計算機和計算方法的飛速發展,幾乎所有學科都走向定量化和精確化,從而產生了一系列計算性的學科分支,如計算物理、計算化學、計算生物學、計算地質學、計算氣象學和計算材料學等,計算數學中的數值計算方法則是解決「計算」問題的橋梁和工具。我們知道,計算能力是計算工具和計算方法的效率的乘積,提高計算方法的效率與提高計算機硬體的效率同樣重要。科學計算已用到科學技術和社會生活的各個領域中。
數值計算方法是微分方程,常微分方程,線性方程組的求解。
數值計算方法,是一種研究並解決數學問題的數值近似解方法, 是在計算機上使用的解數學問題的方法,簡稱計算方法。
在科學研究和工程技術中都要用到各種計算方法。 例如,在航天航空、地質勘探、汽車製造、橋梁設計、 天氣預報和漢字字樣設計中都有計算方法的蹤影。
計算方法既有數學類課程中理論上的抽象性和嚴謹性,又有實用性和實驗性的技術特徵, 計算方法是一門理論性和實踐性都很強的學科。 在70年代,大多數學校僅在數學系的計算數學專業和計算機系開設計算方法這門課程。 隨著計算機技術的迅速發展和普及, 現在計算方法課程幾乎已成為所有理工科學生的必修課程。
計算方法的計算對象是微積分,線性代數,常微分方程中的數學問題。 內容包括:插值和擬合、數值微分和數值積分、求解線性方程組的直接法和迭代法、 計算矩陣特徵值和特徵向量和常微分方程數值解等問題。
⑻ 數值計算方法概述
在采礦工程中,數值模擬方法不僅能模擬岩體復雜的力學和結構特徵,還能很方便地解決現場監測過程中需要大量人力、物力而無法完成的、現有力學理論不能求解的復雜形體問題,並對礦山岩體穩定性進行預測與預報。
關於岩土工程的數值分析方法,很多學者都作過系統綜述[53,68,72],筆者只擬簡單介紹。岩土工程數值分析方法,主要分為三大類,如圖7-1所示。
圖7-1 邊坡工程數值分析方法
(1)連續介質數值分析方法
連續介質數值分析方法的理論基礎是彈(塑)性力學。因此,在該類數值分析方法公式的推導過程中,需要滿足基本方程和邊界條件。只是在求解手段上,採用了不同於彈性力學的各種近似解法。這類數值分析方法包括有限差分法、有限單元法和邊界單元法等,它適用於連續介質體的地下工程圍岩與結構的應力分析和位移求解。
(2)非連續介質數值分析方法
非連續介質數值分析方法的理論基礎是牛頓運動定律,它並不滿足結構的位移連續條件,但是可以求出結構在平衡狀態下的位移或者在不可能處於平衡狀態時的破壞模式。此外,盡管結構不受位移連續的約束,但應滿足給定的單元和交界面的本構定律。這類數值分析方法主要有離散單元法和不連續變形分析(DDA)。這些數值分析方法可用於分析節理岩體可能發生的不連續變形,如洞室圍岩附近岩塊的分離與滑落等。
(3)混合介質數值分析方法
混合介質數值分析方法是連續和不連續分析方法的耦合。在地下結構的某些區域(如洞室附近),圍岩體由於開挖影響而發生塊體的分離而不連續,在另外區域(如遠離洞室),則岩體一般仍相互聯系而處於連續狀態。因此,考慮兩種不同力學介質的耦合分析很必要。目前常見的耦合方法有有限元與離散元的耦合、邊界元與離散元的耦合等。混合介質吸取連續介質和非連續介質兩種數值分析方法中的優點,在可能發生不連續變形的岩體,採用非連續介質方法模擬,而遠離洞室的岩體一般仍處於連續狀態,可採用連續介質模型分析。
本章分別採用有限元強度折減法、有限元和離散元相結合的CDEM法、FLAC差分法,開展安家嶺露天礦露天井工聯合開採的數值模擬分析,研究露天開采和井工開採的相互作用及影響規律。