當前位置:編程學習大全網 - 編程軟體 - matlab 二元復雜 隱函數的求法

matlab 二元復雜 隱函數的求法

將方程移項並取平方:

(r-z)^2-(-b+sqrt(R*R-z*z))^2 = (a-x)^2

移項並展開:

b^2 + (R^2-z^2) - 2*b*sqrt(R*R-z*z) = (r-z)^2 - (a-x)^2

再移項,取平方:

(b^2 + (R^2-z^2) -?(r-z)^2?+ (a-x)^2)^2?= 4*b^2*(R*R-z*z)

由此得到的是壹個關於z的四次代數方程

>> collect(sym('(b^2 + (R^2-z^2) - (r-z)^2 + (a-x)^2)^2 - 4*b^2*(R*R-z*z)'),sym('z'))?

ans =?

4*z^4-8*r*z^3+(-4*R^2-4*(a-x)^2+8*r^2)*z^2+4*(b^2+R^2+(a-x)^2-r^2)*r*z+(b^2+R^2+(a-x)^2-r^2)^2-4*R^2*b^2

可以用solve函數求解:

>> solve('(b^2 + (R^2-z^2) - (r-z)^2 + (a-x)^2)^2 - 4*b^2*(R*R-z*z)','z')

但得到的四個根表達式都非常復雜,以至於在命令窗口中無法完整顯示。如果已知參數給出具體值來,表達式可以加以簡化(可考慮使用vpa函數)。

另,對於使用Maple作為符號運算內核的MATLAB版本(2008a或更早),按照樓主的做法可以得到相同的結果(前面那句 syms定義不需要):

>> solve('a-x-sqrt((r-z)^2-(-b+sqrt(R*R-z*z))^2)','z')

但對於MuPad內核的版本可能存在問題。

  • 上一篇:註塑機機械手的分類類型有哪些?
  • 下一篇:在家可做的兼職有哪些,兼職收入最高的三大方式
  • copyright 2024編程學習大全網