大家好,
請(qǐng)教大家一個(gè)在循環(huán)中計(jì)算橢圓積分的問(wèn)題。我要計(jì)算的基本方程如附圖。方程有三個(gè)變量,y,f,v. 我想畫(huà)出y跟f之間的函數(shù)圖像。
我的code如下:
syms fi;v = [0:0.001:pi/2];
L = length(v);
y = zeros(1,L);
k = zeros(1,L);
for i = 1:L
t1 = 1./sqrt(sin(v(i))-sin(fi));
m1 = int(t1,0,v(i));
k(i) = vpa(m1)
t2 = sin(fi)/(sin(v(i))-sin(fi));
m2 = 1/k(i)*int(t1,0,v(i));
y(i) = vpa(m2)
f(i) = k(i)^2./2;
end
plot(f,y,'b');
系統(tǒng)提示錯(cuò)誤如下:
The following error occurred converting from sym to double: Error using mupadmex Error in MuPAD command: DOUBLE cannot convert the input expression into a double array.
If the input expression contains a symbolic variable, use the VPA function instead.
Error in NonlinearStiffness (line 10) k(i) = vpa(m1)
但是我將積分范圍換成具體數(shù)值而不是數(shù)組元素時(shí),是可以得到一個(gè)結(jié)果:
>> t1 = 1./sqrt(sin(0.2)-sin(fi));
m1 = int(t1,0,0.2);
>> m1
m1 =
(7217745006463825^(1/2)*9007199254740992^(1/2)*ellipticF(pi/4, 18014398509481984/7217745006463825)*2*i)/7217745006463825 - (2*7217745006463825^(1/2)*ellipticF(pi/4 - 1/10, 18014398509481984/7217745006463825)*(9007199254740992*sin(1/5) - 1789454248277167)^(1/2))/(7217745006463825*(1789454248277167/9007199254740992 - sin(1/5))^(1/2))
>> vpa(m1)
ans =
0.901 + 1.145e-36*i
我有兩個(gè)疑問(wèn):
1. 為什么語(yǔ)句在循環(huán)中就運(yùn)行不通呢?
2. 為什么積分結(jié)果會(huì)有虛部呢?
![求助:用matlab 循環(huán)計(jì)算橢圓積分]()
橢圓積分.png |