parallel computing apply to my problem
1 回表示 (過去 30 日間)
古いコメントを表示
clc;
clear all;
close all;
tic;
N=10;
a=zeros(1,N+1);
b=zeros(1,N+1);
syms t a b
a(1)=2;b(1)=-3;
for i=1:7
v1=(a(i)*t+5*a(i)*t^2+30*b(i)*t);
v2=(b(i)*t-20*b(i)*t^3+30*a(i)*b(i)*t);
a(i+1)=diff(v1,t);
b(i+1)=diff(v2,t);
end
toc
fplot(v1,[0 0.1],'b');
;;;i want to go for loop till 250 for above kind of problem when there are 8 equations means v1,v2...v8.it is taking so much of time and sometimes matlab is not responding.Please help me how can i wrote that proble with parallel computing or any some other simple programmimg
0 件のコメント
採用された回答
Walter Roberson
2025 年 1 月 9 日
Change
a(i+1)=diff(v1,t);
b(i+1)=diff(v2,t);
to
a(i+1) = expand(diff(v1,t));
b(i+1) = expand(diff(v2,t));
Although the expand() operation takes some time, it reduces the complexity of the expressions significantly, leading to much much faster diff() in the following steps.
0 件のコメント
その他の回答 (1 件)
Matt J
2025 年 1 月 9 日
編集済み: Matt J
2025 年 1 月 9 日
Skipping the symbolic operations will speed things up,
tic;
t=linspace(0,0.1,1000)';
tsquared=t.^2;
[a,b]=deal(nan(numel(t), 251 ));
a(:,1)=2;b(:,1)=-3;
for i=1:250
ai=a(:,i); bi=b(:,i);
a(:,i+1) = ai.*(1 + 10*t) + 30*bi;
b(:,i+1) = bi.*(1 - 60*tsquared) + 30*ai.*bi;
end
v1=a(:,7);
toc
plot(t,v1,'b');
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Linear Algebra についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!