Matlab怎麼用梯形公式和Simpson公式求積分近似還要控制精度?

時間 2021-07-13 21:35:33

1樓:赫爾公尺特的假面

啊上學期好像學了simpson公式啥的數值積分解法,都差不多忘了。 (擔心寫錯啊哈哈哈哈)

但是感覺就對著公式一步步來就完了。

比如梯形公式

就把端點a和b帶進去嘛,然後如果你只取乙個梯形,那麼精度肯定不怎麼樣,劃分的梯形越多越好,就是復化梯形公式了,咱們把這堆梯形面積加起來就是結果。

function

[s] =

trap

(f,n,a,b)

% 梯形公式:\int L dx= [f(a)+f(b)](b-a)/2

% n為分為n段h=

(b-a

)/n;

s=0;

trape=@(

x)(f

(x-h

)+f(

x))*h

/2;fori=

a+h:

h:bs

=s+trape(i

);end

end不過直接加好像很浪費運算嗷,因為很多項相加起來都消掉了了,所以可以修改一波

function

[s] =

trap

(f,n,a,b)

%梯形公式:\int L dx= [f(a)+f(b)](b-a)/2

% %n為分為n段h=

(b-a

)/n;

s=h/

2*(f

(a)+

f(b)

+2*sum(f

(a+h

:h:b

-h)));

end同樣simpson公式也是,他就換了個樣子,這樣式的。

所以就應該有

function

[s] =

simpson

(f,n,a,b)

%Simpson公式:\int L dx= (b-a)/6[f(a) + 4f((a+b)/2) + f(b)]

%n為分為n段h=

(b-a

)/n;

s=0;

sim=@(x

)l/6

*(f(

x-h)

+4*f

(x-h

/2)+

f(x)

);fori=

a+h:

h:bs

=s+sim(i

);end

end然後也和梯形一樣,有好多白算的都消掉了,給它換個馬甲就完事了,和剛才一樣的。

俺就不寫了。

當然了matlab中也有自帶的梯形公式求積分trapz()

而quad()函式用的就是simpson方法

(欸突然發現好像1e-6和你們要求的精度一樣?莫非你們其實是打算直接用自帶函式算麼)

然後來說說誤差以及區間逐次分半

誤差

emmm這個書上應該有推吧,復合梯形公式誤差

復合simpson公式誤差

區間逐次分半

就拿梯形公式距離吧,如果說在區間[a,b]上, 是f分n段得到的梯形公式計算出的積分值,那麼其可以改寫為

然後如果把每個區間都分半的話,再去用梯形公式計算,得到的就是

顯然的點一定是 的分點。只要把

上的函式值新增,即可得到新的積分結果,即

所以區間逐次分半的每次迭代其實就是用這個迭代格式來更新T的數值,直到你達到要求,然後記下你的迭代次數就可以了。

用matlab怎麼畫出這個矩陣?

M31415926 heatmap toeplitz 1 n fliplr toeplitz 1 n 1 小同事提供另外的寫法,應當也算最簡潔了 f n abs n 1 2 1 n 1 heatmap max f 21 f 21 heatmap max f 10 f 10 野生學渣 function...

影象處理(matlab和c )用macbook pro可以嗎?

愚人S 先說結論 如果只打算在機器上使用小資料集對演算法做簡單驗證,那可以。以下是具體說明 但凡是涉及計算機視覺的,任何單機都可以不夠用。如果你只是在小的資料集上進行一些很基礎的驗證,那只要是散熱合格的i5 7th以上的配置的筆記本都行。題主你希望知道選擇17年款的13寸mbp是否可以,那我印象裡面...

用」熵值法確定權重「怎麼用MATLAB軟體實現?

若許閑乘月 MATLAB沒用到,自己用R語言寫了乙個。標準化方法用的是極值標準化 1 喬家君.改進的熵值法在河南省可持續發展能力評估中的應用 J 資源科學,2004 01 113 119. 戲法師 function s,w shang x n,m size x X,ps mapminmax x ps...