當前位置:首頁 » 操作系統 » matlab龍貝格演算法

matlab龍貝格演算法

發布時間: 2022-02-11 19:07:51

1. MATLAB用龍貝格積分演算法計算f=x^2在0到1上的積分

f = @(x) x.*x % f是被積函數
a = 0;b = 1; % a,b分別是積分的上下限
n = 5; % n+1是T數表的列數
delta = 10^(-8); % 允許誤差

M=1;
h=b-a;
err=1;
J=0;
R=zeros(4,4);
R(1,1)=h*(feval(f,a)+feval(f,b))/2;
while ((err>delta)&&(J<n))||(J<4)
J=J+1;
h=h/2;
s=0;
for p=1:M
x=a+h*(2*p-1);
s=s+feval(f,x);
end
R(J+1,1)=R(J,1)/2+h*s;
M=2*M;
for K=1:J
R(J+1,K+1)=R(J+1,K)+(R(J+1,K)-R(J,K))/(4^K-1);
end
err=abs(R(J,J)-R(J+1,K+1));
end

quad11=R(J+1,J+1);

quad11 % 所求積分值
R % R是T數表

2. matlab編程 使用龍貝格積分公式 計算定積分 從0-1上的 ln(x)/x 的積分。

因為函數 ln(1+x)/x在[0,1]上是反常積分。

3. 用matlab龍貝格演算法

主程序
clc;
clear;
format long e;%精確顯示
y=18;
T=zeros(y,y);%定義長度為y的矩陣T
for i=0:y-1
T(i+1)=i;%對矩陣T的第一行賦初值
end
a=0;
b=1;
T(1,2)=(b-a)*(1+f(b))/2;%算出T1
for l=2:y
sum=0;
for j=1:2^(l-1)
sum=sum+f(a+(2*j-1)*(b-a)/2^l);
end
T(l,2)=T(l-1,2)/2+((b-a)/2^l)*sum; %算出梯形序列
if (T(l,2)-T(l-1,2))<0.0000005; %判斷是否符合精度
break;
end
end
h=1;
for m=1:y-2
for k=h:(y+h-m-1)
T(k+1,m+2)=((4^m)*T(k+1,m+1)-T(k,m+1))/(4^m-1);
%按公式算出接下去的序列
if (T(k+1,m+2)-T(k,m+2))<0.0000005;
break;
end
end
h=h+1;
end

4. Matlab/simulink中,什麼叫Oder45和Ode23bt演算法

ode45是基於四點法和五點法的解微分方程數值解的方法,ode23等也一樣,都是基於已知點「預測」下一個點的函數值的方法,不同的演算法「預測」的方法不一樣。比較著名的「預測」方法有歐拉法,改進的歐拉法,龍格庫塔法,多點法等。在matlab一般使用中這些方法的差別不大,可以不予理會,會用一個即可,推薦ODE4。

5. 用matlab 龍貝格求積分

我試了下 把你的程序保存為Romberg.m
在工作區輸入f=@(x) 1/(x+1)
a=0
b=1
eps=10^(-4)
Romberg(f,a,b,eps)
錯誤提示是你程序第13行的變數 s沒有定義 應該是大寫吧

6. 用matlab程序實現:用romberg方法計算積分sinx/x上限為1下限為0的近似值,要求誤差不超過0.5*10……-6

a=0;
b=1;
n=1;
k=1;
e=0.5*10^(-6);
T=zeros(10,10);
h=(b-a)/2;
t=h*(1+sin(1));
T(1,1)=t;
for j=1:9
F=0;
for i=1:n
F=F+sin(a+(2*i-1)*h)/(a+(2*i-1)*h);
end
for i=1:k
if T(1,i+1)==0
T(1,i+1)=T(1,i)/2+h*F;
end
end
for m=1:k
if T(m+1,k-m+1)==0
T(m+1,k-m+1)=(4^m*T(m,k-m+2)-T(m,k-m+1))/(4^m-1);
end
end
if abs(T(m+1,1)-T(m,1))<e
I=T(m+1,1);
break
else
h=h/2;
n=2*n;
k=k+1;
end
end

最後的 I 就是函數值,K就是滿足精度時的M值

7. 將區間[0 1]等分,並將每一個等分區間進行積分的matlab程序

下面是使用龍貝格演算法求積分的matlab程序代碼

clear
clc
format long

f='4/(1+x^2)'; %這是被積函數
x='x'; %這是被積自變數
a=0; %這是積分下限
b=1; %這是積分上限
e=1e-5; %這是積分誤差限制

%以下是龍貝格積分演算法,是目前最為成熟的積分演算法,具有收斂速度快,精度可以自定義的優點
% I為積分的估計值
% n為迭代次數,2^(n-1)是等分區間的份數
T(1,1)=(b-a)/2*(subs(f,x,a)+subs(f,x,b));
T=double(T);
n=2;
h=b-a;
T(2,1)=T(1,1)/2+h/2*double(subs(f,x,a+h/2));
T(2,2)=4/3*T(2,1)-1/3*T(1,1);
d=T(2,2)-T(1,1);
while d>e
n=n+1;
h=h/2;
T(n,1)=T(n-1,1)/2;
for i=1:2^(n-2)
T(n,1)=T(n,1)+h/2*double(subs(f,x,a+(i-1/2)*h));
end
for i=2:n
k=4^(i-1);
T(n,i)=k/(k-1)*T(n,i-1)-1/(k-1)*T(n-1,i-1);
end
d=abs(T(n,n)-T(n-1,n-1));
end
I=T(n,n) %輸出計算值

望採納!謝謝!

8. 已知橢圓的方程是x^2+y^2/4=1,要在matlab用積分的方法求其周長,應該怎麼做啊急啊,謝謝了

曲線長度積分l=∫√[φ'(t)^2+ψ'(t)^2] dt 橢圓參數方程為x=φ(t)=a sint y=ψ(t)=b cost
或l=∫√(1+y『^2)dx 在(0,pi/2) 內 橢圓y=b*(1-x^2/a^2)^0.5
sin²x=(sinx)^2

9. 用matlab,龍貝格演算法計算∫(0到1)[x/(4+x²)]dx的近似值。 求程序代碼!!!

%龍貝格求積演算法function I=romberg(a,b)h=b-a;T(1)=h/2*(fun(a)+fun(b));m=1;while 1 h=h/2; S(1)=1/2*T(1)+h*sumf(2^(m-1),a,h); for j=1:m S(j+1)=S(j)+(S(j)-T(j))/(4^j-1); end if abs(S(m+1)-T(m))<1e-6 break; end T=S;m=m+1;endI=S(m+1);end
function f=sumf(m,a,h)for j=1:m y(j)=fun(a+(2*j-1)*h);endf=sum(y);end
function f=fun(x)f=x/(4+x^2);end結果:
>> I=romberg(0,1)
I =
0.111571775646293
>>

熱點內容
jspoa源碼 發布:2024-11-14 12:21:31 瀏覽:420
不記得了密碼怎麼辦 發布:2024-11-14 12:18:58 瀏覽:442
python字元串的大小 發布:2024-11-14 12:17:24 瀏覽:222
源碼編輯軟體 發布:2024-11-14 12:15:00 瀏覽:386
java中object 發布:2024-11-14 12:11:48 瀏覽:636
買車時哪些配置需要另外加錢 發布:2024-11-14 12:10:19 瀏覽:534
在哪裡修改密碼和手機號 發布:2024-11-14 12:10:08 瀏覽:932
c語言雙軌加密演算法 發布:2024-11-14 12:08:41 瀏覽:689
java母 發布:2024-11-14 12:08:36 瀏覽:456
微信如何評論圖片安卓 發布:2024-11-14 11:56:34 瀏覽:849