MATLAB symbolic definite integration error while taking symbolic function as input arguments

54 ビュー (過去 30 日間)
The code is
syms v T;
int(@(x) x*v, 0, T)
int(@(tau) tau*v, 0, T)
I expect the answers to be T^2*v/2 but the second definite integration incorrectly contains τ.

採用された回答

Sameer
Sameer 2024 年 11 月 4 日 15:01
編集済み: Sameer 2024 年 11 月 4 日 15:45
In the code you have provided, you are trying to perform symbolic integration using anonymous functions, which isn't directly compatible with MATLAB's "symbolic math" capabilities.
Here's a revised version of your code:
syms v T x tau;
% First integral
integrand1 = x * v;
result1 = int(integrand1, x, 0, T);
% Second integral
integrand2 = tau * v;
result2 = int(integrand2, tau, 0, T);
disp('Result of the first integral:');
disp(result1);
disp('Result of the second integral:');
disp(result2);
Hope this helps!
  1 件のコメント
Noah Tang
Noah Tang 2024 年 11 月 4 日 15:13
Thanks for your quick response! I now understand the difference between a symbolic function, which can be used as an input argument for the int function, and an anonymous function that involves a symbolic expression. Thanks again!

サインインしてコメントする。

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2024 年 11 月 4 日 18:44
syms a v T
disp(int(@(tau) tau*v, 0, T))
disp(int(@(tau) tau*a, 0, T))
Notice that in the first case, it integrated with respect to v and kept tau constant, but in the second case it integrated with respect to tau and kept a constant.
What is happening is the anonymous function is being automatically converted to a symbolic expression (not a symfun !), and then the symbolic expression is being integrated with respect to the default variable. The default variable happens to be different between [tau, v] and [tau, a]
It is arguably a bug. On the other hand, no behaviour is documented for int() of anonymous functions.

カテゴリ

Help Center および File ExchangeCalculus についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by