超越方程(英語: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;