error Conversion to double from function_handle is not possible.

t = 0:0.01:10;
nt = length(t);
% Inicialización de u y u'
u = zeros(size(t));
p = zeros(1,nt);
for i = 1:nt
p(i) = @(t) (10./(t(i)+1));
u(i) = integral(@(tau) p(t(i)-tau)*h(tau),0,t(i));
end
me aparece el error Conversion to double from function_handle is not possible.
p(i) = @(t) (10./(t(i)+1));
como solucionarlo?

 採用された回答

Star Strider
Star Strider 2023 年 10 月 24 日
The ‘p’ function was incorrect, and the ‘h’ funciton is completely missing (so I created it).
Try this (with the correct ‘h’ function) —
t = 0:0.01:10;
nt = length(t);
% Inicialización de u y u'
u = zeros(size(t));
p = zeros(1,nt);
p = @(t) (10./(t+1));
h = @(x) x; % Create Function
for i = 1:nt
u(i) = integral(@(tau) p(t(i)-tau).*h(tau),0,t(i));
end
u
u = 1×1001
0 0.0005 0.0020 0.0045 0.0079 0.0123 0.0177 0.0239 0.0312 0.0393 0.0484 0.0584 0.0693 0.0811 0.0937 0.1073 0.1217 0.1369 0.1531 0.1700 0.1879 0.2065 0.2260 0.2463 0.2674 0.2893 0.3120 0.3355 0.3598 0.3849
.

2 件のコメント

Walter Roberson
Walter Roberson 2023 年 10 月 24 日
p = zeros(1,nt);
p = @(t) (10./(t+1));
Why bother to initialize p with zeros there?
Star Strider
Star Strider 2023 年 10 月 25 日
It was initially written as:
p(i) = @(t) (10./(t(i)+1));
and I didn’t catch the preallocation when I corrected the ‘p’ function. (I was concentrating on it and the absent ‘h’ function.)

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

その他の回答 (1 件)

Sulaymon Eshkabilov
Sulaymon Eshkabilov 2023 年 10 月 24 日

0 投票

Here is the corrected solution:
t = 0:0.01:10;
nt = length(t);
% Inicialización de u y u'
u = zeros(size(t));
p = zeros(1,nt);
p = @(t) (10./(t+1));
Pval=p(t);
% Note that your include h() is unknown. Thus it is removed from the
% formulation. Predefine it if it is to be included.
for i = 1:nt
u(i) = integral(@(tau) Pval(i)*(t(i)-tau).*(tau),0,t(i));
end

カテゴリ

ヘルプ センター および File ExchangeProgramming についてさらに検索

製品

リリース

R2023a

質問済み:

2023 年 10 月 24 日

コメント済み:

2023 年 10 月 25 日

Community Treasure Hunt

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

Start Hunting!

Translated by