Страница сетевой поддержки учеников Тимура Юрьевича Альпина

27.02.2011

Замена переменных — не руками

Filed under: Maxima — Shine @ 2:01 пп

Чтобы группе 606 не было так грустно делать д/з, выкладываю примеры скриптов, выполняющих эту работу в системе компьютерной алгебры Maxima для номеров 3460 и 3464.

3460:

В самом начале решения мы подразумеваем замену z(x,y)=z(xi,eta). Её мы делаем в уме и ничего по поводу неё не пишем, но компьютеру о ней нужно сказать явно. В частности, введя два разных z:

(%i1) depends(z,[x,y]);

Result

(%i2) depends(z1,[xi,eta]);

Result



Новые переменные зависят от старых, о чём тоже нужно сказать:

(%i3) depends([xi,eta],[x,y]);

Result



Самое важное. Уравнение, в котором нужно сделать замену:

(%i4) eqn:a*diff(z,x)+b*diff(z,y)=1;

Result



Функции перехода от старых переменных к новым:

(%i5) zam:[xi=x,eta=y-b*z];

Result



Вышеупомянутая замена z(x,y)=z(xi,eta):

(%i6) zz:z=z1;

Result

(%i7) eqn,z=z1;

Result

(%i8) %,diff;

Result



Во что превращаются z prime_x и z prime_y по формуле дифференцирования сложной функции многих переменных:

(%i9) [diff(zz,x),diff(zz,y)];

Result



Чему равны производные новых переменных:

(%i10) diff(zam,x);

Result

(%i11) diff(zam,y);

Result



Теперь объединим три последних группы уравнений в систему:

(%i12) append(%th(3),%th(2),%);

Result



И решим её относительно производных z prime_x и z prime_y, избавив их от xi prime_x, xi prime_y, eta prime_x и eta prime_y:

(%i13) solve(%,[diff(z,x),diff(z,y),diff(xi,x),diff(xi,y),diff(eta,x),diff(eta,y)]);

Result



Подставим полученное в преобразуемое уравнение

(%i14) eqn,%;

Result

(%i15) eqn1:%$



и упростим его:

(%i16) radcan(eqn1*part(eqn1,1,1,2));

Result

(%i17) lhs(%)-rhs(%)=0;

Result

(%i18) %+1;

Result

3464:

Осторожно, этот пример не является полной копипастой предыдущего, есть изменения:

(%i1) depends(z,[x,y]);

Result

(%i2) depends(z1,[u,v]);

Result

(%i3) depends([u,v],[x,y]);

Result

(%i4) eqn:x*diff(z,x)+y*diff(z,y)=z+sqrt(x^2+y^2+z^2);

Result

(%i5) zam:[u=y/x,v=z+sqrt(x^2+y^2+z^2)];

Result

(%i6) zz:z=z1;

Result

(%i21) diff(zz,x);

Result

(%i22) %,diff(zam,x);

Result

(%i23) zx:solve(%,diff(z,x));

Result

(%i27) diff(zz,y);

Result

(%i28) %,diff(zam,y);

Result

(%i29) zy:solve(%,diff(z,y));

Result

(%i46) eqn,zx,zy;

Result

(%i47) %,rhs(zam[2]-z)=lhs(zam[2]-z);

Result

(%i48) %,solve(zam[1],y);

Result

(%i49) radcan(%);

Result

(%i50) eqn1:solve(%,diff(z1,v));

Result

(%i60) zam[2]-z;

Result

(%i61) expand(%^2);

Result

(%i62) %-rhs(%),solve(zam[1],y);

Result

(%i63) solve(%,x^2);

Result

(%i64) eqn1,%;

Result

(%i65) radcan(%);

Result

Комментариев нет »

No comments yet.

RSS feed for comments on this post.

Leave a comment

Для отправки комментария вам необходимо авторизоваться.

Хостингом угостил Вадим "Moose" Калинников