matlab求積分的數值解,MATLAB求積分的數值解

2022-01-03 09:25:58 字數 3165 閱讀 8229

1樓:劉賀

可以積分出來的,只是好像你的r和β怎麼是反的:

clear all;clc;

syms x

r=0.3136;

beta=0.579;

y=r/((2*pi*beta)^0.5*x^1.5)*exp(-(x-r)^2/(2*beta*x));

s=int(x*exp(-3*x)*y,x,0,inf);

s=double(s)

s =0.0810

2樓:書宬

用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數值解積分方程

3樓:匿名使用者

這個方程無解。

如果 |x| < 1,積分項會出現複數,而另一項為實數,無解。

而當 |x| >= 1時,積分項的值大於0.5,另一項最大為0.5,仍然無解。

可以很容易畫出方程左端的函式影象:

syms x e real

ezplot(int(sqrt(x^2-e^2),e,0,1)-1/(x^2+1),[-2 2])

由圖可見,函式值始終為正(其中-1~1區間為複數的實部),所以方程無解。

matlab 求積分時無法輸出數值解,一直是積分表示式

4樓:匿名使用者

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求以下積分方程的數值解,謝謝!

5樓:兔子和小強

程式設計觀察了下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)

mathematica/matlab 積分方程,求數值解。

6樓:

給一個r計算p更容易些,精度夠。否則給一個p,理論上r有多個解,如果遇到超越方程,則沒有顯式表示式解。

不建議用mathematica,因為這麼複雜的表示式,積分結果難以用初等函式表示。而mathematica擅長符號運算,用它計算數值解不是很好。

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關...

matlab求定積分解析解,matlab求一個定積分解析解

這個求不出來的。warning explicit integral could not be found.e的表示式的積分找不到。只能通過數值計算的方法求出近似值,這個近似值也保持了足夠的精度 dx 0.01 x 0 dx 2 y exp exp x x s dx cumtrapz y 計算區間內曲...

跪求大神解答matlab數值計算的問題

我也不知道你為什麼寫成那樣,solve函式定義不是那樣定義的吧。你可以寫成這樣 e 7000 a 1000 v 160 d 0.02 c 0.12 b 300 l 50 t 6 syms n m 2 e d 2 t n 3 a b 2 n 2 v 2 b l t c d n l 2 t 2 c 2 ...