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