Решить нелинейное уравнение численно на MATLAB - PullRequest
0 голосов
/ 30 января 2020

Я должен решить это уравнение

(tan(qh))/(tan(ph))=-(4k^2 pq)/(q^2-k^2)^2 

здесь

d = 6.35;
h = d/2;
ct = 3076.4;
cl = 6207.7;

Я хочу дать k значений, и каждое значение k я получаю много значений омега (w). Точно так же, как sin (x) = 0 означает, что значения x равны nπ, я пробовал таким образом.

syms w
d = 0.0065;
h = d/2;
ct = 3.0764;
cl = 6.2077;
k = 1:50:1000;
for i=1:length(k)
    p = sqrt((w/cl)^2-k(i)^2);  % p
    q = sqrt((w/ct)^2-k(i)^2);  % q

    f = (tan(q*h)*(q^2-k(i)^2)^2)==-(4*k(i)^2*p*q*tan(p*h));

z = zeros(1,30);
    for j=1:30
        z(j) = vpasolve(f,w,[0 1000],'Random',true);
    end
    z=z(z>=0);
    b = double(z);
    c = unique(b);
    cp = c/k(i);  %phase velocity
    f = c/(2*pi); %frequency
    plot(f,cp,'bo')
    hold on
end

В моем случае ответы не совпадают с этим изображением. Мои ответы в 10 ^ -18, что слишком мало.

enter image description here

цитата для этого изображения. стр. 7-9

https://smartech.gatech.edu/handle/1853/37158

...