Vectorization and plotting user-defined function
11 ビュー (過去 30 日間)
古いコメントを表示
I am new to MATLAB and am having trouble understanding how to plot userdefined functions.
I have defined a function f via
fun=@(t,r)(t.^2-t.^4).*exp(r.*t.^2);
fun1=@(t,r)exp(r.*t.^2);
f=@(r)integral(@(t)fun(t,r),0,1)./integral(@(t)fun1(t,r),0,1);
Now if I specify say
r=linspace(-10,10);
and type
x=f(r);
I get errors such as
Matrix dimensions must agree.
Error in @(t,r)(t.^2-t.^4).*exp(r.*t.^2)
whereas
x=sin(r);
is accepted. I seem to have been careful to use .* etc. What is the difference between my f and sin, and how do I plot a parametrized graph (f(r),g(r))?
0 件のコメント
採用された回答
Adam Danz
2020 年 9 月 4 日
編集済み: Adam Danz
2020 年 9 月 4 日
To evaluate the integrals at each value in r,
x = arrayfun(f,r);
2 件のコメント
Adam Danz
2020 年 9 月 4 日
I don't get that error when I apply this solution to the function in you question (I doubt you get that error with those functions, either). So, something is different between T and g compared to f.
What line is producing the error? Could you provide a new minimal working example that reproduces the error?
その他の回答 (1 件)
Steven Lord
2020 年 9 月 4 日
By default integral calls the integrand function with a vector of values at which the integrand should be evaluated. There's no guarantee that this vector will have a size compatible with the size of your r vector.
If you tell integral that your function is array-valued by passing the name-value pair 'ArrayValued', true then integral will call your integrand with a scalar and expect an array as output. Try running the "Vector-Valued Function" example on the documentation page for the integral function with and without the name-value pair and compare the results.
2 件のコメント
Adam Danz
2020 年 9 月 5 日
@John, voting (thumbs up icon) is another way to show support/appreciation. Glad to hear that you found the forum useful!
参考
カテゴリ
Help Center および File Exchange で Loops and Conditional Statements についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!