что-то не так с нелинейным дифференциальным уравнением. результат очень большой. я хочу решить это численными методами - PullRequest
0 голосов
/ 05 августа 2011

Я хочу решить нелинейное дифференциальное уравнение, и я пробовал много методов, таких как ode45, ode15s, но потерпел неудачу. Не могли бы вы помочь мне. Уравнение x''+0.01x'+x+2(x'-0.55x)^3=sin(0.1t)% (я буду расширять его в моей программе).
Я написал метод Оде в Matlab, пожалуйста, посмотрите.

%system governing function
function xdot=ForcedOscillator1(t,x,dummy,zeta,a,b,c,d,Omega,Xo) 
xdot=[x(2);-zeta*x(2)-x(1)-a*x(2)^3-b*x(2)^2*x(1)-c*x(2)*x(1)^2-d*x(1)^3+Xo*sin(Omega*t)];
    %ode program
    clear all
    clc
    zeta=0.01; 
    a=2; 
    b=-3.3; 
    c=1.815; 
    d=-0.3328;
    Omega=0.1; Xo=1;
    tspan=[0 100]
    options=odeset('RelTol',1e-8,'AbsTol',[1e-8 1e-8]);
    for m=1:1
    [t,x]=ode15s('ForcedOscillator1',tspan,[0 0]',options,zeta,a(m),b(m),c(m),d    (m),Omega,Xo);
        plot(t,zeta.*x(:,2)+x(:,1)+a.*x(:,2).^3+b.*x(:,2).^2.*x(:,1)+c.*x(:,2).*x(:,1).^2+d.*x(:,1).^3); 
        grid on
        xlabel('t(s)');
        ylabel('F_t(N)');
        title('Response of a nonlinear system');
    hold on
end

Как вы можете видеть, когда я запускаю этот файл, вывод будет необычайно большим, он достигнет примерно 10 ^ 49. Я думаю, что-то не так в моей программе, или система нестабильна. Не могли бы вы помочь решить этот вопрос с помощью численных методов. Или докажите, что это уравнение неустойчиво.

1 Ответ

0 голосов
/ 05 августа 2011

ваша система просто нестабильна ... enter image description here

Если вам нужны доказательства, я предлагаю найти хороший оду учебник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...