Как мне найти значение параметра, когда даны другие, и интеграл равен нулю, используя Matlab? - PullRequest
0 голосов
/ 26 марта 2012

у меня есть функция

function y = testf(x,F,phi,M,beta,alpha)
y = -((F+(1 + phi.*cos(2.*pi.*x))).*M.^3.*(cosh((1 + phi.*cos(2.*pi.*x)).*M)+M.*beta.*sinh((1 + phi.*cos(2.*pi.*x)).*M)))./((1 + phi.*cos(2.*pi.*x)).*M.*cosh((1 + phi.*cos(2.*pi.*x)).*M)+(-1+(1 + phi.*cos(2.*pi.*x)).*M.^2.*beta).*sinh((1 + phi.*cos(2.*pi.*x)).*M))- (alpha.*(M.^2.*(F+(1 + phi.*cos(2.*pi.*x))).*(-1+2.*(1 + phi.*cos(2.*pi.*x)).^2.*M.^2+ cosh(2.*(1 + phi.*cos(2.*pi.*x)).*M)-2.*(1 + phi.*cos(2.*pi.*x)).*M.*sinh(2.*(1 + phi.*cos(2.*pi.*x)).*M)))./(8.*((1 + phi.*cos(2.*pi.*x)).*M.*cosh((1 + phi.*cos(2.*pi.*x)).*M)+(-1+(1 + phi.*cos(2.*pi.*x)).*M.^2.*beta).*sinh((1 + phi.*cos(2.*pi.*x)).*M)).^2));

интегрируется с

q = quad(@(x) testf (x, F, phi,M, beta, alpha), 0, h);

когда q = 0 и x, F, phi, M, beta, как мне найти альфу и нарисовать линию тока?

1 Ответ

0 голосов
/ 27 марта 2012

Было бы замечательно, если бы вы дали несколько цифр, но вот как вы могли бы начать это.Предполагается, что вы используете версию Matlab с MuPad в качестве символического движка.

Прежде всего, я бы не стал использовать quad, потому что будут задействованы символические выражения, вместо этого используйте int.

Если я вас правильно понял, установите значения x, F, phi, M, beta, и вы хотели бы решить для alpha, когда q = 0

%define the known variables first

syms alpha %defining symbolic object

Теперь, следующее может не сработать, потому что этоогромная функция:

q = int(y,x,0,h)

Если это так, все, что вам нужно сделать, это решить и оценить результаты для альфа (это может не сработать):

alpha = eval( solve( 'q' , alpha ) )

Если вышеничего не добился, вы можете что посмотреть на 'IgnoreAnalyticConstraints' вариант.

...