matlab簡單的超越方程求解近似值


超越方程(英語:transcendental equation)是包含超越函數的方程,也就是方程中有無法用自變數的多項式或開方表示的函數,與超越方程相對的是代數方程。超越方程的求解無法利用代數幾何來進行。大部分的超越方程求解沒有一般的公式,也很難求得解析解。

超越方程簡單的計算可以用折線法計算,既先用matlab畫出圖像找出解的大致范圍,之后用折線法算出大致的解。

例:x^2=e^(x/2)-1;   %此題有3個解,一個小於1,一個大於8小於9,一個是負數。下面解釋之針對8~9之間的解;

 

函數圖像:

 

 

(1)無法直接求解,但可以分成兩個函數,兩邊同時開方,現只討論右側為正數的情況。要用折線法計算。

兩個方程:y=x;

     y=sqrt(exp(x/2)-1);

(2)在matlab中畫出兩個圖像,找出交點所在的范圍。程序如下:

x=1:100;

y1=x;

y2=sqrt(exp(x./2)-1);

plot(x,y1);

hold on;    //此命令可以使兩個函數圖像出現在一張圖上,意思是將第一個圖像加到第二個圖像上

plot(x,y2);

(3)此時查看圖像,發現解所在的范圍在8~9直間,接下來就是折算法求解了。兩個方法:

方法一:

(1)   首先令x=8(左范圍);

       因為存在y=x這個式子,所以y=8;

  因為y=sqrt(exp(x./2)-1),所以x1=x=2*ln(y^2+1);

  再令y=x1;

  再執行x1=2*ln(y^2+1);

  再令y=x1;

  再執行x1=2*ln(y^2+1);

  依此循環 直到x1不變時,x1即為此方程的近似解為8.6625。

(2)下圖是折線法的原理圖,目的是無限接近於正解,可參考此圖理解第(1)步。

方法二:程序法

(1)新建腳本,輸入程序:

x(1)=8;
y=x;
for n=1:149
x(n+1)=2*log(x(n)^2+1);
end
n=1:150;
plot(n,x(n))
x(150)            %  x(150)就趨近於最終解

運行結果:x(150)=8.6625;

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM