現(xiàn)實生活中哪些地方需要用到非線性方程不動點迭代
- 教育綜合
- 2024-10-08 17:44:26
非線性的不動點迭代在物理或工程上有哪些應(yīng)用
不動點迭代法是簡單迭代法,就是把方程進行移項使左邊只有X,其余的在右邊,然后進行迭代,條件是右邊的導數(shù)得小于1才能保證收斂。如下: 而牛頓法是由泰勒展開式近似得到的 并進行迭代。迭代的應(yīng)用實例
迭代法是用于求方程或方程組近似根的一種常用的算法設(shè)計方法。設(shè)方程為f(x)=0,用某種數(shù)學方法導出等價的形式x=g(x),然后按以下步驟執(zhí)行:
⑴ 選一個方程的近似根,賦給變量x0;
⑵ 將x0的值保存于變量x1,然后計算g(x1),并將結(jié)果存于變量x0;
⑶ 當x0與x1的差的絕對值還大于指定的精度要求時,重復步驟⑵的計算。
若方程有根,并且用上述方法計算出來的近似根序列收斂,則按上述方法求得的x0就認為是方程的根。上述算法用C程序的形式表示為:
【算法】迭代法求方程的根
以下是引用片段:
{ x0=初始近似根;
do {
x1=x0;
x0=g(x1); /*按特定的方程計算新的近似根*/
} while (fabs(x0-x1)>Epsilon);
printf(“方程的近似根是%f\n”,x0);
}
迭代算法也常用于求方程組的根,令
X=(x0,x1,…,xn-1)
設(shè)方程組為:
xi=gi(X) (I=0,1,…,n-1)
則求方程組根的迭代算法可描述如下:
【算法】迭代法求方程組的根
以下是引用片段:
{ for (i=0;i
x=初始近似根;
do {
for (i=0;i
y=x;
for (i=0;i
x=gi(X);
for (delta=0.0,i=0;i
if (fabs(y-x)>delta) delta=fabs(y-x);
} while (delta>Epsilon);
for (i=0;i
printf(“變量x[%d]的近似根是 %f”,I,x);
printf(“\n”);
}
具體使用迭代法求根時應(yīng)注意以下兩種可能發(fā)生的情況:
⑴ 如果方程無解,算法求出的近似根序列就不會收斂,迭代過程會變成死循環(huán),因此在使用迭代算法前應(yīng)先考察方程是否有解,并在程序中對迭代的次數(shù)給予限制;
⑵ 方程雖然有解,但迭代公式選擇不當,或迭代的初始近似根選擇不合理,也會導致迭代失敗。
① N 為兔子的個數(shù), M為月份 (N+N*1)^M-1=2N^M-1 (注解)
編程 利用不動點迭代法求非線性方程的根
此方程可化為e^x=-10x+2 畫一下圖,既可知道,這直線和這個曲線會有一個交點 假設(shè)解為X0 那么從圖中可以看出 當X拋物線法是特殊的不動點迭代嗎
是。拋物線法是特殊的不動點迭代,不動點迭代法,拋物線法,斯特芬森迭代法解非線性方程組,及其編程實現(xiàn),培養(yǎng)編程與上機調(diào)試能力。
matlab 不動點迭代
我報的錯不是這樣的... >> [k,p,err]=fixpt('x^5-3*x^3-2*x^2+2',3.8) ??? invalid function name 'x^5-3*x^3-2*x^2+2'. error in ==> fixpt at 7 p(k)=feval(g,p(k-1)); 這是因為不能把字符串作為一個函數(shù)句柄傳過去,把這一句:p(k)=feval(g,p(k-1));改為 x = p(k-1); p(k) = eval(g); 就可以了。不過這個迭代好像有問題,迭代兩步就溢出了~~ 用solve('x^5-3*x^3-2*x^2+2-x','x')可以算出你輸入的函數(shù)上一篇
一個百思不得其解的問題
下一篇
返回列表