parallel computing apply to my problem
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Mallesh
le 9 Jan 2025
Réponse apportée : Walter Roberson
le 9 Jan 2025
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 commentaires
Réponse acceptée
Walter Roberson
le 9 Jan 2025
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 commentaires
Plus de réponses (1)
Matt J
le 9 Jan 2025
Modifié(e) : Matt J
le 9 Jan 2025
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 commentaires
Voir également
Catégories
En savoir plus sur Linear Algebra dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
