前提・実現したいこと
所定の計算を行い、h1=0~50000の間を1000刻みで増加させながらfor文による繰り返し計算によって各h1の値におけるvexitやF1,F1intを得ることが目的です。
コードはvexit,F1,F1intを求めるための数式群です。
F1intは、F1をrで定積分したものです。
この計算を回そうとしたのですが、
「左辺のインデックスが右辺とサイズが適合しないため、代入は実行できません」
と表示され、計算が行えない状態になっており困っています。
発生している問題・エラーメッセージ
左辺のインデックスが右辺とサイズが適合しないため、代入は実行できません。 エラー: sym/privsubsasgn (line 1116) L_tilde2 = builtin('subsasgn',L_tilde,struct('type','()','subs',{varargin}),R_tilde); エラー: sym/subsasgn (line 953) C = privsubsasgn(L,R,inds{:}); エラー: needed_cicle_vs_needed_velocity (line 39) F1(h1)=vexit1*mdot;
該当のソースコード
clear close all %nd=[0.0018,0.0036,0.0039] A=1 nd1=0.0039 h1=0:1000:50000 vini=1530 syms r %r=0.3*10^-3~4.96*10^-3 assume(r > 0) row=3000; ips=8.854*10^-12 e=1.602*10^-19 k=1.38*10^-23 fai=[-100,-10,5,10,18] Vg=5000 d=0.08 E=Vg/d for h1=1:50000 around1=(h1+(10921*10^3))*pi t_around= around1/vini tin1=t_around Vin=A*vini*tin1 nin=Vin.'*nd1 m=(4/3)*pi*(r^3)*row mdot=nin*m C=4*pi*ips*r q=fai*C FE=E*q del_VE=sqrt((2*abs(q)*E*d)/m) vexit1=del_VE F1(h1)=vexit1*mdot; F1int=int(F1(h1),[0.3*10^-3 4.96*10^-3],'IgnoreAnalyticConstraints', true); end
試したこと
for~endの中の式全てに(h1)を入れてみましたが、駄目でした。
for h1=1:50000
around1(h1)=(h1+(1092110^3))pi
t_around(h1)= around1/vini
tin1(h1)=t_around
Vin(h1)=Avinitin1
nin(h1)=Vin.'nd1
m(h1)=(4/3)pi(r^3)row
mdot(h1)=ninm
C(h1)=4piipsr
q(h1)=faiC
FE(h1)=Eq
del_VE(h1)=sqrt((2abs(q)Ed)/m)
vexit1(h1)=del_VE
F1(h1)=vexit1mdot;
F1int=int(F1(h1),[0.310^-3 4.9610^-3],'IgnoreAnalyticConstraints', true);
end
補足情報(FW/ツールのバージョンなど)
使用バージョンはR2019aです。
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/24 08:33