如何用MATLAB求積分的數值解對于你問題,可以這樣解決 。即x=double(solve(f2))根據你提供圖片算式,發現你編寫的算式代碼有點問題 。正確方式為B=10^6;Tf=2*10^(-3);theta=10^(-3);beta=theta*Tf*B/log(2); syms y xeq0=(1/(x^(1/(beta+1))))*(1/(y^(beta/(beta+1))))*exp(-y/10);f=int(eq0,y,x,+inf)-10;x=double(solve(f))運行結果
matlab中怎樣對二元函數中的一個變量做數值積分?不行的,數值積分必須給定其它參數 。
matlab中數值積分和符號積分的區別MATLAB中主要用int進行符號積分,用trapz,dblquad,quad,quad8等進行數值積分 。
int(s) 符號表達式s的不定積分
int(s,x) 符號表達式s關于變量x的不定積分
int(s,a,b) 符號表達式s的定積分,a,b分別為積分的上、下限
int(s,x,a,b) 符號表達式s關于變量x的定積分,a,b分別為積分的上、下限
trapz(x,y) 梯形積分法,x時表示積分區間的離散化向量,y是與x同維數的向量,表示被積函數,z返回積分值 。
quad8(‘fun’,a,b,tol) 變步長數值積分,fun表示被積函數的M函數名,a,b分別為積分上、下限,tol為精度,缺省至為1e-3.
fblquad(‘fun’,a,b,c,d)矩形區域二重數值積分,fun表示被積函數的M函數名,a,b分別為x的上、下限,c,d分別為y的上、下限.
怎樣用Matlab求符號表達式的數值積分?f=@(x)sin(x)+cos(x);%定義被積函數
Intf=quad(f,0,1)%對f進行積分,下限為0,上限為1
如何用matlab 數值法算這個積分程序: fun=sin(0.5*pi*x./y);%% a=int(int(fun,y,sqrt(x),x),x,1,2); b=simple(a) %化簡 I=vpa(b,4) %得到4位近似解,也可以任意N位解 結果: I = 0.2719
matlab 符號積分和數值積分MATLAB中主要用int進行符號積分,用trapz,dblquad,quad,quad8等進行數值積分 。
int(s) 符號表達式s的不定積分
int(s,x) 符號表達式s關于變量x的不定積分
int(s,a,b) 符號表達式s的定積分,a,b分別為積分的上、下限
int(s,x,a,b) 符號表達式s關于變量x的定積分,a,b分別為積分的上、下限
trapz(x,y) 梯形積分法,x時表示積分區間的離散化向量,y是與x同維數的向量,表示被積函數,z返回積分值 。
quad8(‘fun’,a,b,tol) 變步長數值積分,fun表示被積函數的M函數名,a,b分別為積分上、下限,tol為精度,缺省至為1e-3.
fblquad(‘fun’,a,b,c,d)矩形區域二重數值積分,fun表示被積函數的M函數名,a,b分別為x的上、下限,c,d分別為y的上、下限.
例1 計算二重積分
先編寫四個M函數文件,
%二重積分算法文件dblquad2.m
function S=dblquad2(f_name,a,b,c_lo,d_hi,m,n)
%其中f_name為被積函數字符串,'c_lo'和'd_hi'是y的下限和上限函數 ,都是x的標量函數;a,b分別為x的下限和上限;m,n分別為x和y方向上的等分數(缺省值為100).
if nargin<7, n=100; end
if nargin<6, m=100; end
if m<2|n<2
error('Numner of intervals invalid');
end
mpt=m+1; hx=(b-a)/m; x=a+(0:m)*hx;
for i=1:mpt
ylo=feval_r(c_lo,x(i)); yhi=feval_r(d_hi,x(i));
hy=(yhi-ylo)/n;
for k=1:n+1 y(i,k)=ylo+(k-1)*hy; f(i,k)=feval_r(f_name,x(i),y(i,k)); end
G(i)=trapz(y(i,:),f(i,:));
end
S=trapz(x,G);
%被積函數eg3_fun.m
function z=eg3_fun(x,y)
z=1+x+y;
%積分下限函數eg3_low.m
function y=eg3_low(x)
y=-sqrt(1-x^2);
%積分上限函數eg3_up.m
function y=eg3_up(x)
y=sqrt(1-x^2);
保存后,在命令窗口用MATLAB代碼:
>>clear;
>>dblquad2('eg3_fun',-1,1,'eg3_low','eg3_up')
結果為
ans =3.1383
為了得到更精確的數值解,需將區間更細化,比如x和y方向等分為1000分,MATLAB代碼:
>>clear;dblquad2('eg3_fun',-1,1,'eg3_low','eg3_up',1000,1000)
結果為ans =3.1415 。
此題也可用int符號計算求解,MATLAB代碼為:
>>clear; syms x y;
>>iy=int(1+x+y,y,-sqrt(1-x^2),sqrt(1-x^2));
>>int(iy,x,-1,1)
結果為
ans =pi
例2 quad8計算定積分
%M函數fun1.m
function y=fun1(x)
y=x.^4;
保存后,在命令窗口用MATLAB代碼:
>>clear;
>>quad8('fun1',-2,2)
>>vpa(quad8('fun1',-2,2),10)%以10位有效數字顯示結果
結果為
ans =12.8000
ans =12.80000000
對于變步長數值積分,常用的有quad,quad8兩種命令,quad使用自適應步長Simpson法, quad8使用自適應步長8階Newton-Cotes法,我們建議用quad8,它不但精度較高,且對假收斂和假奇異積分具有一定的適應性,而quad較差..
龍貝格積分法MATLAB程序代碼
function [I,step]=Roberg(f,a,b,eps)
if(nargin==3)
eps=1.0e-4;
end;
M=1;
tol=10;
k=0;
T=zeros(1,1);
h=b-a;
T(1,1)=(h/2)*(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b));
while tol>eps
k=k+1;
h=h/2;
Q=0;
for i=1:M
x=a+h*(2*i-1);
Q=Q+subs(sym(f),findsym(sym(f)),x);
end
T(k+1,1)=T(k,1)/2+h*Q;
M=2*M;
for j=1:k
T(k+1,j+1)=T(k+1,j)+(T(k+1,j)-T(k,j))/(4^j-1);
end
tol=abs(T(k+1,j+1)-T(k,j));
end
I=T(k+1,k+1);
step=k;
自適應法求積分MATLAB程序代碼
function I=SmartSimpson(f,a,b,eps)
if(nargin==3)
eps=1.0e-4;
end;
e=5*eps;
I=SubSmartSimpson(f,a,b,e);
function q=SubSmartSimpson(f,a,b,eps)
QA=IntSimpson(f,a,b,1,eps);
QLeft=IntSimpson(f,a,(a+b)/2,1,eps);
QRight=IntSimpson(f,(a+b)/2,b,1,eps);
if(abs(QLeft+QRight-QA)<=eps)
q=QA;
else
q=SubSmartSimpson(f,a,(a+b)/2,eps)+SubSmartSimpson(f,(a+b)/2,b,eps);
end
線性振動響應分析的wilson θ積分法MATLAB代碼
% see also http://www.matlabsky.com
% contact me matlabsky@gmail.com
% 2010-02-26 16:52:12
%
clc
clear
% 結構運動方程參數
M=1500000;
K=3700000;
C=470000;
% 威爾遜參數θ
theta=1.4;
dt=0.02; % 時間間隔
tau=dt*theta;
% 數據處理
eqd=load('acc_ElCentro_0.34g_0.02s.txt'); % 加速激勵,第一列是時間,第二列是加速度
n=size(eqd,1);
t=0:dt:(n-1)*dt;
xg=eqd(:,2)*9.8; % 對加速度進行處理
dxg=diff(xg)*theta; %
F=-M*xg;
% D2x 加速度; Dx 速度; x 位移
D2x=zeros(n,1);
Dx=zeros(n,1);
x=zeros(n,1);
for i=1:n-1
K_ba=K+3/tau*C+6/tau^2*M;
dF_ba=-M*dxg(i)+(M*6/tau+3*C)*Dx(i)+(3*M+tau/2*C)*D2x(i);
dx=dF_ba/K_ba;
dD2x=(dx*6/tau^2-Dx(i)*6/tau-3*D2x(i))/theta;
D2x(i+1)=D2x(i)+dD2x;
Dx(i+1)=Dx(i)+D2x(i)*dt+dD2x/2*dt;
x(i+1)=x(i)+Dx(i)*dt+D2x(i)*dt^2/2+dD2x/6*dt^2;
end
subplot(311)
plot(t,x) % 位移
subplot(312)
plot(t,Dx) % 速度
subplot(313)
plot(t,D2x)% 加速度
常微分方程求解方法之四階龍格-庫塔算法matlab程序代碼
function [x,y] = MyRunge_Kutta(fun,x0,xt,y0,PointNum,varargin)
%Runge-Kutta 方法解微分方程形為 y’(t) = f(x,y(x))
%此程序可解高階的微分方程 。只要將其形式寫為上述微分方程的向量形式
% x范圍為[x0,xt],初值為 y0, PointNum為離散點數,varargin為可選輸入項可傳適當參數給函數f(x,y)
if nargin < 4 | PointNum <= 0
PointNum= 100;
end
if nargin < 3
y0 = 0;
end
y(1,:) = y0(:)’; %初值存為行向量形式
h = (xt-x0)/(PointNum-1); %計算步長
x = x0+[0:PointNum]‘*h; %得x向量值
for k = 1:PointNum%迭代計算
f1 = h*feval_r(fun,x(k),y(k,:),varargin {:});
f1 = f1(:)’; %得公式中k1
f2 = h*feval_r(fun,x(k) + h/2,y(k,:) + f1/2,varargin{:});
f2 = f2(:)’; %得公式中k2
f3 = h*feval_r(fun,x(k) + h/2,y(k,:) + f2/2,varargin{:});
f3 = f3(:)’; %得公式中k3
f4 = h*feval_r(fun,x(k) + h,y(k,:) + f3,varargin{:});
f4 = f4(:)’; %得公式中k4
y(k + 1,:) = y(k,:) + (f1 + 2*(f2 + f3) + f4)/6; %
Matlab中幾個數值積分函數的比較和優缺點積分精度由低到高分別為:1矩形數值法積分cumsum,2梯形法數值積分trapz,3辛普森數值積分quad,4科滋數值積分quadl,1
2求離散積分值,3
4求解析式 。
matlab 求解積分函數∫(0,1)e²x dx求解函數 的數值積分和符號積分并比較結果符號
syms
x;
int(exp(2*x),x,0,1)
ans
=
exp(2)/2
-
1/2
數值
f=@(x)exp(2*x);quad(f,0,1)
ans
=
3.1945
符號積分精確度高但速度慢,有時候有些函數沒有解析解,就得用數值積分,并且數值積分速度快,但精確度不高
MATLAB求定積分時,int()和integral()的區別在哪?

文章插圖
MATLAB求定積分時,int()和integral()的區別在:1、在精度上是一樣的;2、在書寫上有區別,一個代碼比較多,另一個代碼比較簡潔;例如:求被積函數為1./(x.^3-2*x-5)的定積分1、用int()求:syms xf = 1./(x.^3-2*x-5);Q = int(f,0,2);Q =vpa(Q,5)2、用integral()求: f = @(x) 1./(x.^3-2*x-5)Q = integral(@(x)f(x),0,2)擴展資料:1、int是符號積分 。2、integral是數值積分,在R2012版本以上才支持 。3、int()適用于低版本,但高版本也可以用 。4、integral()適用于高版本
matlab中M文件中積分怎么表示MATLAB中主要用int進行符號積分,用trapz,dblquad,quad,quad8等進行數值積分 。
int(s) 符號表達式s的不定積分
int(s,x) 符號表達式s關于變量x的不定積分
int(s,a,b) 符號表達式s的定積分,a,b分別為積分的上、下限
int(s,x,a,b) 符號表達式s關于變量x的定積分,a,b分別為積分的上、下限
trapz(x,y) 梯形積分法,x時表示積分區間的離散化向量,y是與x同維數的向量,表示被積函數,z返回積分值 。
MATLAB中怎么定義積分函數int(s,v,a,b):以v為自變量,對被積函數s在區間[a,b]上的定積分 。
a和b可以是兩個具體的數,也可以是一個符號表達式,還可以是無窮(inf) 。
例:
syms x%定義符號變量
f=int(x^3,x,1,2)% 求x^3在區間[1,2]上的定積分
如何用matlab對這個函數進行積分 。

文章插圖
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如何積分出來表達式syms r
R=int(1/(6*r+3*r+2*r^2));
F=simple(R);
F
運行結果為:
F =
log(r)/9 - log(r + 9/2)/9
你的 問題,將x(r)等三個函數都給它賦上函數式 。也就是:
syms r;a=6*r;
b=3*r;
c=2*r^2;R=int(1/(a+b+c));
F=simple(R);
F
運行結果為:
F =
log(r)/9 - log(r + 9/2)/9
定積分:
>> L=int(F,10,r)
L =
(29*log(29/2))/18 - (10*log(10))/9 + (r*(log(r) - 1))/9 - ((log(r + 9/2) - 1)*(r + 9/2))/9 - 1/2
如何用matlab如何實現數值積分CenaTP 發表于 2013-8-26 18:16
登錄/注冊后可看大圖
感覺用trapz和用sum直接求和差不多~
trapz
和 cumtrapz
函數都是基于梯形積分的函數,其本質是將積分區間劃分為一定數量的等間距的子區間,然后將每段子區間上的函數曲線用一段直線近似,該直線經過由小區間端點對應的原曲線上的兩個端點 。所以,從本質上講,梯形積分只不過是一種
“分段線性近似” 。所以,對于高次函數(次數>=2)時,梯形積分在劃分區間數目一定的情況下可能會很變得不精確(尤其是當被積函數不連續或震蕩性很大時),而且,在子區間數固定的情況下,被積函數次數越高,梯形積分精度就越差 。所以,為了使得梯形積分變得更加精確,你需要用更小的間隔來劃分更多的子區間,即用更多的子區間來近似 。
但是,對于已知離散數據的情況下,數據量是固定的,即無法進一步劃分子區間,所以,用梯形積分可能造成很大的誤差 。如果已知被積函數可能的次數的話,可以考慮用大于等于該次數的多項式擬合,將被積函數表達式擬合出來,一旦有了函數表達式,用符號積分
int 或數值積分 quadgk 或 integral
都可以 。即使不知道被積函數的次數,也可以用高次函數你和出被積函數,再做積分
如何用matlab進行積分運算在生活或研究中可能會遇到需要積分運算的情況,比如計算一個不規則圖形的面積等等 。matlab有很強的數據處理能力,只要給出任意可積的函數和積分上下線,用它可以進行積分運算 。具體操作如下:
工具/原料
matlab軟件
方法/步驟
以f(x)=e^2x+sin(x+π/3),積分下限:a=0,積分上限:b=π/4為例 。
首先,建立被積函數M文件 。
點擊New,選擇Function.
在編輯器中輸入指令:
function f=f(x)
f=exp(2*x).*sin(x+pi/3);
(注意,用.* )
保存函數文件到自己的工作路徑,比如G:\matlab\work 。
輸入指令:
cd G:\matlab\work
是該路徑成為當前路徑 。
matlab中計算積分的兩種指令:
1.
F=quad('fname',a,b,tol,trace)Simpson數值積分法
2.
F=quad8('fname',a,b,tol,trace)Newton-Cotes數值積分法
其中:
fname是被積函數表達式或函數名,a,b分別是上下限,tol可以控制積分精度,省略則取0.001;trace=1則用圖形表示積分過程,trace=0,沒有圖形 。
兩者 比較,quad8精度更高 。
調用積分函數squad進行計算 。輸入指令:
F=quad('f(x)',0,pi/4)
如圖,回車后可得到計算結果1.8612 。
其他函數,只要修改函數文件中的表達式即可 。
大家幫忙用matlab進行數值積分,并列出命令行用matlab可以如下數值積分法,來求解定積分、二重積分、三重積分的數值解問題 。
1、梯形數值積分計算 trapz()
X = 0:pi/100:pi;
Y = sin(X);
Z = pi/100*trapz(Y)
2、自適應辛普森數值積分計算 quad()
F = @(x)1./(x.^3-2*x-5);
Q = quad(F,0,2);
3、自適應Lobatto積分計算 quadl()
function y = myfun(x)
y = 1./(x.^3-2*x-5);
end
Q = quadl(@myfun,0,2);
4、自適應Gauss Kronrod quadrature積分計算 quadgk()
function y = myfun(x)
y = exp(-x.^2).*log(x).^2;
end
Q = quadgk(@myfun,0,Inf)
5、平面區域的二重積分的數值計算 quad2d()
fun = @(x,y) 1./( sqrt(x + y) .* (1 + x + y).^2 )
ymax = @(x) 1 - x
Q = quad2d(fun,0,1,0,ymax)
6、矩形區域的的二重積分數值計算dblquad()
function z = integrnd(x, y)
z = y*sin(x)+x*cos(y);
end
Q = dblquad(@integrnd, pi, 2*pi, 0, pi)
7、三重積分數值計算triplequad()
function f = integrnd(x, y, z)
f = y*sin(x)+z*cos(x);
end
Q = triplequad(@integrnd, 0, pi, 0, 1, -1, 1)
以上是最基本的求解數值積分方法 。
利用matlab 進行計算復雜函數積分像這種復雜函數用int求出解析結果的可能性微乎其微,可以考慮求數值積分,但需要給出所有的參數 。
matlab計算數值積分(復雜,希望給出關鍵語句)關鍵是寫出正確被積函數,對其進行采樣 。
x0 = 0;
b = 1;
f = @(x) sqrt(1+(exp((x-x0).^2/(-2*b^2))).^2); % 被積函數
xs = (x0:0.01:x0+sqrt(log(8*b))).'; % 采樣點
fs = f(xs);
bl = trapz(xs, fs)/3; % 積分
如何用matlab求積分?于無法求得exp(x^2)的原函數,我們只能用數值算法來求解,可以用復化梯形公式、Romberg公式、Gauss公式等,有好多種 。我用Matlab編了一個用Gauss公式求解積分的函數 。
function S=GaussIntegrate()
%運用Gauss求積公式計算數值積分
%f為被積函數,Rho為權函數,二者均為符號函數
x=sym('x');
f=exp(x^2);
Rho=1;
%a,b分別為求積區間的左界和右界
a=1;
b=2;
%n表示求積結點的個數,是一正整數
n=8;
%本程序利用線性變換將區間[a,b]變換到[-1.1],
%同時令g=f*Rho為被積函數,然后利用
%古典的Gauss求積公式進行計算,此時直交多項式即為Legendre多項式
if n=0||n~=floor(n)
error('錯誤,n必須是一個非負整數!');
end;
if a>b
error('錯誤,區間的左界a一定不大于右界b!');
end;
%計算n次Legendre多項式
syms x;
P=1/(2^n*factorial(n))*diff((x^2-1)^n,n);
w=roots(sym2poly(P));
%計算數值積分
A=zeros(1,n);
S=0;
for k=1:n
A(k)=2/((1-w(k)^2)*(subs(diff(P),w(k))^2));
t=a+(b-a)/2*(w(k)+1);
g=(b-a)/2*subs(f*Rho,t);
S=S+A(k)*g;
end;
--------------------------------
我取了8個結點,計算精度就已經達到了小數點后8位,效率還是很高的 。
注意:由于Matlab調用Maple的符號計算工具箱,第一次運行時會加載一小會,耐心等待 。
以后再運行速度就很快了 。
怎么用Matlab編程計算積分!!!int
Integrate symbolic expression
Syntax
int(expr)
int(expr, v)
int(expr, a, b)
int(expr, v, a, b)
算了,給你舉兩個例子吧
x^2 積分:
>> syms x;
>> int(x^2,x)
ans =
x^3/3
x^2 從 1 積分到 5:
>> int(x^2,x,1,5)
ans =
124/3
注意前面一句話,syms表示定義變量
自己遇到問題多看手冊或者自己谷歌,百度知道上面專業人士不多的
怎么用matlab求含字母的定積分?int(s,v,a,b):以v為自變量,對被積函數s在區間[a,b]上的定積分 。
a和b可以是兩個具體的數,也可以是一個符號表達式,還可以是無窮(inf) 。
例:
syms
x
%定義符號變量
f=int(x^3,x,1,2)
%
求x^3在區間[1,2]上的定積分
matlab中的積分運算如何進行int函數
比如求y=x^2+2*x+1的幾分可以這樣寫:
y=x^2+2*x+1
int(y)
如果是定積分,就寫成int(y,a,b),期中a,b分別是幾分的上下限
如何用matlab求積分?

文章插圖
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、通過上面這個方法,就能夠求得任意一個函數在給定區間的積分,如果想看到書寫的格式,可以用pretty命令,這樣顯示更接近平常的表示方法 。1、在matlab中,積分運算有多種方式,為了便于查看不同方式處理異同,以下面這個積分為例:2、梯形積分法第一種,采用最簡單的方式,以函數trapz為例,z = trapz(x,y) 其中x表示積分區間的離散化向量,y是與x同維數的向量,表示被積函數,z是返回的積分近似值 。clc,clear 。% 梯形積分法x = -1:0.001:1,y = exp(-x.^2),s = trapz(x,y)% 計算結果: s =1.49363、高精度數值積分(1)為了克服梯形積分法精度低的問題,可以采用高精度積分方式,第一種可以采用 z = quad(Fun,a,b) 該方式是自適應步長Simpson計分法求得函數Fun在區間[a,b]上定積分,如下:clc;clear;% 梯形積分法s = quad(inline('exp(-x.^2)'),-1,1)% 計算結果: s =1.49364、高精度數據積分(2)采用高精度Lobatto積分法,格式: z = quadl(Fun,a,b)clc;clear;% 梯形積分法s = quadl(inline('exp(-x.^2)'),-1,1)% 計算結果: s =1.4936
MATLAB求積分的數值解用double()化為數值型就可以了
>> syms x
y=inline('0.579/((2*pi*0.3176)^0.5*x^1.5)*exp(-(x-0.579)^2/(2*0.3176*x))','x');
A=int(x*exp(-3*x)*y(x),x,0,inf)
double(A)
Warning: Explicit integral could not be found.
A =
int(81487005757734912/(198810802005279125*x^(1/2)*exp(3*x)*exp((625*(x - 579/1000)^2)/(397*x))), x = 0..Inf)
ans =
0.0940
>>
怎樣用matlab求以下積分方程的數值解,謝謝!編程觀察了下F1(t)/F0(t) - t函數,圖像如下:也就是說a / K需要是個正數才行 。你給的數據a是正的,K是負的,無解 。給定a,K,計算yita的程序是:%% 示例a = 1; K = 2;Fn = @(n, yita)quadgk(@(x)x.^n./(1+exp(x-yita)), 0, inf);f = @(yita)2*Fn(1,yita)/Fn(0,yita) - yita - a/K;yita = fsolve(f, 0)
matlab求大神編求積分數值解的程序int是用來求符號積分的,求數值解的方法如下:
12Q = @(x)quadgk(@(t)exp(-t.^2/2)/sqrt(2*pi), x, inf)Q(0)
求教大神用matlab數值解積分方程這個方程無解 。如果 |x| < 1,積分項會出現復數,而另一項為實數,無解 。而當 |x| >= 1時,積分項的值大于0.5,另一項最大為0.5,仍然無解 。可以很容易畫出方程左端的函數圖像:syms x e realezplot(int(sqrt(x^2-e^2),e,0,1)-1/(x^2+1),[-2 2])由圖可見,函數值始終為正(其中-1~1區間為復數的實部),所以方程無解 。
MATLAB 求積分時無法輸出數值解,一直是積分表達式syms t x0=1753000;y0=0;z0=0;vx0=0;vy0=1700;vz0=0;x1=1738000*cosd(10);y1=1738000*sind(10);z1=0;vx1=0;vy1=0;vz1=0;u=4.9*10^12 ;r0=1753000;a0=1.6243;b0=0;c0=0;a1=(-6*(a0*t^2+(vx1+3*vx0)*t-4*(x1-x0)))/t^3;b1=(-6*(b0*t^2+(vy1+3*vy0)*t-4*(x1-x0)))/t^3;c1=(-6*(c0*t^2+(vz1+3*vz0)*t-4*(x1-x0)))/t^3;a2=(6*(a0*t^2+2*(vx1+2*vx0)*t-6*(x1-x0)))/t^4;b2=(6*(b0*t^2+2*(vy1+2*vy0)*t-6*(y1-y0)))/t^4;c2=(6*(c0*t^2+2*(vz1+2*vz0)*t-6*(z1-z0)))/t^4;ax=a0+a1*t+a2*t^2;ay=b0+b1*t+b2*t^2;az=c0+c1*t+c2*t^2;x=x0+vx0*t+a0*t^2/2+a1*t^3/6+a2*t^4/12;y=y0+vy0*t+b0*t^2/2+b1*t^3/6+b2*t^4/12;z=z0+vz0*t+c0*t^2/2+c1*t^3/6+c2*t^4/12;r=sqrt(x^2+y^2+z^2);gx=(-u*x)/r^3;gy=(-u*y)/r^3;gz=(-u*z)/r^3;apx=ax-gx;apy=ay-gy;apz=az-gz;ap=sqrt(apx^2+apy^2+apz^2);fun=inline(vectorize(char(eval(ap))),'t');tt=0:200;yy=fun(tt);plot(tt,yy);V=quad(fun,1,200);由于函數太復雜,不能得到精確的解析積分這里可以完全用數值辦法fun=inline(vectorize(char(eval(ap))),'t');將原來ap的內容轉為inline函數fun(t)我們可以畫出其在0~200范圍內的圖像當tt趨向于0時,yy趨向于無窮大,所以函數的0點奇點[0 200]區間內的積分是發散的所以這里計算了[1 200]區間內的積分V=quad(fun,1,200);
用matlab求解指數積分限函數方程,數值解即可如按題主給定的等式,是呼得不到δ的解 。請題主再審視一下等式的正負號 。如將-28.5改為28.5,可以得到δ的解 。求解結果,δ≈0.53841
matlab如何計算定積分int(S,v,a,b)S~被積表達式v~積分變量a,b~積分下限,積分上限
Matlab怎么計算定積分求f在區間[a,b]上對t的定積分 。
符號解:例如f=t^2*exp(-t);a=0,b=1
>> clear
>> syms t%定義符號變量
>> f=t^2*exp(-t);
>> int(f,t,0,1)
ans =
2 - 5*exp(-1)
數值解:例如例如f=t^2*exp(-t^3);a=0,b=1
>> clear
>> t=0:0.0001:1;%中間的0.0001是步長
>> f=t.^2.*exp(-t.^3);%求節點處的函數值 。這一句的"^"和"*"前面的"."表示對應元素乘方、相乘 。因為t是向量,只有方陣才可以乘方,矩陣乘法也必須滿足相應的維數關系
>> sum(f*0.0001)%節點處的函數值相當于矩形的高,步長相當于矩形的寬,乘積再求和就得到總面積的近似值 。
ans =
0.2107
請問怎么用“matlab”軟件算定積分?

文章插圖
以f(x)=e^2x+sin(x+π/3),積分下限:a=0,積分上限:b=π/4為例 。1.首先,建立被積函數M文件 。點擊New,選擇Function.2.在編輯器中輸入指令:function f=f(x)f=exp(2*x).*sin(x+pi/3);(注意,用.* )3.保存函數文件到自己的工作路徑,比如G:\matlab\work 。輸入指令:cd G:\matlab\work是該路徑成為當前路徑 。4.調用積分函數squad進行計算 。輸入指令:F=quad('f(x)',0,pi/4)如圖,回車后可得到計算結果1.8612 。其他函數,只要修改函數文件中的表達式即可 。
matlab 怎么快速算定積分用matlab的int()函數可以快速算相對簡單的定積分 。
使用格式:
int(S,v,a,b)
S——被積函數
v——積分變量
a,b——積分區間
syms x
F = int(cos(x)/sqrt(1 + x^2), x, 0, 10);
vpa(F, 5)
ans =
0.37571
怎么用matlab算含字母的定積分? 比如:

文章插圖
方法和詳細的操作步驟如下:1、第一步,創建一個M文件,單擊“New”,然后選擇“Function”,如下圖所示 。2、第二步,完成上述步驟后,在編輯器中輸入命令,代碼見下圖 。3、第三步,完成上述步驟后,將函數文件保存到相關工作路徑,例如G:\ matlab \ work,如下圖所示 。4、第四步,完成上述步驟后,調用積分函數squad進行計算,代碼如下,按“ Enter”鍵后,可以得到計算結果1.8612 。如下圖所示 。這樣,以上的問題就解決了 。
MATLAB數值積分quad(@(x)3/20/sqrt(2*pi)*exp(-9*(x-170).^2/800), 165, 175, 1e-4)ans =0.5467
利用matlab進行數值積分計算#include #include #define pi 3.1415926#define eps 0.0001#define g pi/2double f(double x){return sqrt(400*cos(x)*cos(x)+100*sin(x)*sin(x));}void main(){ float T[20][4];int k,m,i;double t=0;T[0][0]=23.5619445; T[1][0]=38.98796225;for(k=1;k=4)if(fabs(T[k-3][3]-T[k-4][3])<eps)break;}printf("%lf\n",4*T[k-3][3]);}
matlab多參數數值積分【matlab數值積分】你要是只對x做一維積分,只需要給出x的范圍就行,就是只需要給出積分限
可以改成
z=quadl(@(x)myfun(x,t1,t2,t3),0,1);
當然t1,t2,t3前面也需要給出定值
我說的定值,就是代入參數,就是子函數mufunction的輸入參數,就是說t1,t2,t3不要也是積分變量就可以
另外,你的子函數是mufunction
而你quadl調用時,用的是myfun
你看我的例子
子函數是:
function Exf = Exfun(theta,k,rp,thetap )
Exf=sqrt(cos(theta)).*sin(theta).*(1+cos(theta)).*exp(-1i*k*rp.*cos(thetap).*cos(theta)).*besselj(0,-k*rp.*sin(theta).*sin(thetap))...
+sqrt(cos(theta)).*sin(theta).*(1-cos(theta)).*exp(-1i*k*rp.*cos(thetap).*cos(theta)).*besselj(2,-k*rp.*sin(theta).*sin(thetap));
end
調用時:
>> x=quadl(@(theta)Exfun(theta,5,7,pi),0,pi)
x =
-0.0256 + 0.0517i
- 申請退款天貓積分會退么 退貨天貓積分會退我嗎
- 曲面積分跟二重積分意義有啥不同
- 郵儲信用卡積分怎么兌換
- 平安信用卡積分怎么查
- 圣元金幣多
- 如何查看聯通積分有沒有快過期
- 微信積分有什么用 你知道嗎
- 經管類微積分跟高等數學有何區別
- 紅色cmyk數值是多少 紅色的cmyk值是多少
- 有限元分析基礎 有限元分析基礎篇ANSYS與Matlab
