Я хочу найти только действительные корни уравнения, которое есть;
4*sqrt((1-(z^2/f1^2))*(1-z^2))-(2-z^2)^2-(m*z^4*sqrt(1-z^2/f1^2)/ ...
sqrt(1-((z^2/f1^2)/y^2)))
Я знаю, что это уравнение включает комплексные корни, но я не хочу их видеть. Более того, мой код не работает и говорит, что;
Ошибка при использовании fzero (строка 242) Значения функции в конечных точках интервала должны быть конечными и действительными.
Ошибка в схолте (строка 21) x = fzero (fun, x0)
Вот мой код;
rho2 = 1000; %kg/m3
rho1 = 2700; %kg/m3
cl2 = 1481; %m/s
cl1 = 5919; %m/s
m = rho2/rho1;
y = cl2/cl1;
poi = 0.25;
f1 = (sqrt((1-2*poi)/(2*(1-poi))))^-1;
fun = @(z) 4*sqrt((1-(z^2/f1^2))*(1-z^2))-(2-z^2)^2- ...
(m*z^4*sqrt(1-z^2/f1^2)/sqrt(1-((z^2/f1^2)/y^2)));
x0 = [1 10];
x = fzero(fun, x0)
Я много раз менял интервал x0, но он показывал ту же ошибку. Как я могу исправить свой код?
abs
/real
и т. Д. Могут помочь. - person Stewie Griffin   schedule 22.01.2015[0, 2.5]
. Вы увидите, что это, возможно, три корня в{0, ~0.9, ~1.7}
. Затем вы можете использоватьfminsearch
дляabs(fun(x))
или newtzero из обмена файлами дляf(x)
с три начальных значения{0, 0.9, 1.7}
и посмотрите, что даст итерация. - person knedlsepp   schedule 22.01.2015