-
前提是 a 和 b 介於 0 和 n 之間。
x=1:256;
y=rand(256,1);我在這裡使用隨機數,你用你的矩陣替換它們。
a=;b=;%a,b 我想要什麼我就拿什麼,只要它在 0 到 256 之間。
xi=sort([a,b]);保證 ayi=interp1(y, 習);
插值,求y(a),y(b),等價於yi=interp1(x,y,習,'linear')
x 正好是 1:n,因此可以省略。
相鄰點由直線連線,因此使用預設的線性插值,也可以省略它。
m=ceil(xi(1)):floor(xi(2))xt=[xi(1) ,m, xi(2)];
a和b之間是否有重複的橫坐標點並不重要,因為在計算面積時,它相當於梯形高度為0,面積為0。
yt=[yi(1), y(m)', yi(2)];你給出的 y 是乙個列向量,所以讓我們與 yi 保持一致。
s=trapz(xt,yt) %trapz() 是梯形的累積面積。
-
將曲線上每個點的值乘以橫坐標區間並相加以滿足精度,即求出每個小矩形的面積並加起來,畢竟MATLAB處理的資料都是離散的。 如果你想準確地找到它,你必須借一本關於MATLAB中數值運算的書。
-
如果我沒記錯的話,雖然正態分佈可以積分,但不能用初等函式表示,那麼MATLAB只會認為f(x)=int(f(x),x)無法解析找到,以標準正分布為例
syms m n m x p t t
m=exp(-x^2/2)/sqrt(2*pi)
m=int(m,x,0,t)% 對於 x 積分,下限為 0,上限為 t
p=int(m n,t,0,t)% 對 t 積分,下限為 0,上限為 t
m =2251799813685248/(5644425081792261*exp(x^2/2))
m =(1125899906842624*2^(1/2)*pi^(1/2)*erf((2^(1/2)*t)/2))/5644425081792261
warning: explicit integral could not be found.
在64%的人找不到原來的功能。
p =int(((1125899906842624*2^(1/2)*pi^(1/2)*erf((2^(1/2)*t)/2))/5644425081792261)^n, t = 0..t),可以看出它不是由初等函式表示的。
-
1.使用int函式,縮寫為integrate、int函式表示式、變數、積分上限、積分下限。
2. 例如,要找到 fx = a*x 2,要在區間 (m, n) 中對 x 進行積分,首先將四個變數 m、x、a、b 定義為符號變數。
syms m x a b;
fx = a*x^2;
int(fx,x,m,n)
3.通過上述方法,可以找到給定區間內任意函式的積分,如果要檢視書寫格式,可以使用漂亮的命令,使顯示更接近通常的表示。
1.在MATLAB中,整合操作的方式有很多種,為了方便以不同的方式處理異同,下面以集成為例:
2.梯形積分法。
首先,以最簡單的方式,以函式trapz為例,z = trapz(x,y),其中x是積分區間的離散化向量,y是與x同維的向量,表示被積數,z是返回積分近似。
clc,clear。
梯形積分法。
x = :1,y = exp(-x.^2),s = trapz(x,y)
結果:s =
3.高精度數值積分(1)。
為了克服梯形積分法精度低的問題,可以採用高精度積分法,第一種方法可以是z = quad(fun,a,b)該方法是自適應步長Simpson評分法,得到區間[a,b]定積分上的函式趣味,如下:
clc;clear;
梯形積分法。
s = quad(inline('exp(-x.^2)')1,1)
結果:s =
4.高精度資料整合(2)。
高精度 Lobatto 積分方法的格式為:z = quadl(fun, a, b)。
clc;clear;
梯形積分法。
s = quadl(inline('exp(-x.^2)')1,1)
結果:s =
-
1. 雙擊MATLAB圖示,開啟MATLAB軟體,如下圖所示。
2. 使用 syms 命令建立七個符號變數 a、b、c、d、x、y、z,如下圖所示。
3. 這裡是乙個比較複雜的積分示例,使用符號變數 a、b、x、y、z 建立乙個多變數函式 a,其中 a=32*a+b 5+sin(7*z)+x*y,如下圖所示。
4. 使用函式 int(a,'a'),求解多元函式 A 相對於變數 a 的積分,得到答案,如下圖所示。
5. 使用函式 int(a,'b'),求解多變數函式 A 相對於變數 b 的積分,得到答案,如下圖所示。
6. 使用函式 int(a,'z'),求解多元函式 A 相對於變數 z 的積分,得到答案,如下圖所示。
7. 使用函式 int(a,'x'),求解多元函式 A 相對於變數 x 的積分,得到答案,如下圖所示。
-
在MATLAB中求積分的唯一解析解是int(f,v,a,b),f是被積,v是被積,a,b是積分區間,對於一些簡單的函式,int()函式非常準確,可以執行定積分和不定積分,但是對於復積分,執行時間很長, 而且在很多情況下不是很適合使用(所以在實踐中,經常使用積分來求近似積分,經常使用以下三種方法。
1. 是使用 sum() 函式根據積分的定義求積分。
2.就是使用trapz()函式,用梯形法求積分。
3. 設定引數時,使用 filter(b,a,x) 函式進行 filter([0,1],[1,-1],x)
eg.求sinx dx的值(積分區間為0-2)(各種方法的比較)。
1,d=pi/10;t=0:d:pi/2;y=sin(t);sum(y)*d
ans=2,d=pi 10; t=0:d:pi/2;y=sin(t);trapz(y)*d
ans=3 ,int('sin(x)',0,pi/2)
答=1
4,syms x;int(‘sin(x)’,x)
ans = -cos(x)。
5 ,d=pi/10;t=0:d:pi/2;y=sin(t);t=filter([0,1],[1,-1],y); t(end)*d
ans =
對比:(1) int() 函式在精度方面是最好的,但執行時間最多。
2)與Trapz方法和濾波方法相比,Trapz方法的精度更高,執行時間很短。求和法的精度與濾波法的精度相同。
3)濾波函式的優點是它得到的結果是乙個序列,每個序列都是它的先積分,可以在做gmsk和msk等累積階段時使用。
所以你找不到這個問題的解析解,你只能用上面的方法,根據其他具體引數的值求積分,以為我不知道你其他引數的值,所以你可以自己動手,如果你什麼都不懂,你可以找我。
-
我可以肯定地告訴你,你找不到這個積分的解析解,你只能通過數值積分來求解它,所以你需要先得到其中所有引數的值。
然後,您可以使用四邊形來表示積分。
-
你的問題在這句話中是錯誤的:t=b。^2*pi^2*10^(-3)*r^4*;
b.2*pi 2*10 (-3)*r 4* 是乙個向量,對吧? “r^2+p.2“也是乙個向量,對吧?
這應該用“......“啊,你以前用過,怎麼在這裡大意。
只需更改它:t=b^2*pi^2*10^(-3)*r^4*;
你之所以在下乙個操作中沒有得到錯誤,是因為你可以用“ ”來計算t的值,相當於除以兩個向量,而t的值只是乙個值,而不是乙個向量,你以後用t=t*p;該操作等價於人為地將 t 轉換為向量,但不是 t 的原始值。 雖然沒有誤差,但結果應該不是很準確,有可能當 are 取到某個值時,結果比較接近。
反正我試了一下,兩種積分的結果相差不大,主要是因為我不知道你對b的定義。
-
% 向量乘法和除法問題的表示 t=b^2*pi^2*10^(-3)*r^4*;相反。
t=b.^2.*pi^2.*10^(-3).*r^4.*;
-
syms x a;
b=int(1/(,x,20,40)
基本上,無論公式多麼複雜,MATLAB都可以解決,只要輸入正確,解決它只是時間問題,我會給你乙個解決問題的參考格式。 讓 f 成為你的積分,你只能自己輸,不要犯錯; x 是積分變數,a 和 b 分別是積分的下限和上限。 在MATLAB中計算函式f的不定積分的格式如下:
syms x;int(f,x)
計算定積分的格式如下:
syms a b x;int(f,x,a,b)。
示例:syms x a;
b=int(a*exp(-a*x),x,0,10) 結果 b =
1 - 1/exp(10*a)
int() 函式和 vpa() 函式用於獲取 k 值(數值解),然後使用 polt() 函式繪製 b 和 k 之間的關係。 >>>More