Increase precision of vpasolve method?
조회 수: 2 (최근 30일)
이전 댓글 표시
I am using vpasolve method to find solution of equation. It is necessary to compare solution with vpasolve for y with numerical solution of some other equation with ode45, where components of numerical solution with ode45bare stored in pv, variable for comparing is p4uk.
My goal is to get same plot, but there exist some difference. I have tried to find some mistake in my equations, but everything seems ok, I checked on different ways. So is there some solution to increase solution of vpasolve, where I can get good solution?
beta=1;
ri=2;
kn=0.1;
m=1;
a1=1;
a2=0.5;
sig=1;
[zv,pv]=ode45(@fun_z,[1 0],[1; 0; 0; 0]);
R=ri-zv*(ri-1);
p4uk=pv(:,1)+kn*pv(:,2)+kn^2*pv(:,3)+kn^3*pv(:,4);
warning('off','all');
syms y;
Pp = zeros(1,length(zv));
for j=1:length(zv)
Pp(j)=double(vpasolve(32.*beta.*m.*((ri-zv(j).*(ri-1)).^3-1)./(3.*(ri-1).*(ri-zv(j).*(ri-1)).^3)+(1-y.^2)./2+8.*a1.*kn.*(1-y)+16.*a2.*kn.*kn.*log(1./y)==0,y,1));
end
p_knjiga=Pp;
plot(zv,p4uk,zv,p_knjiga,'x');
Where this is fun_z.m file:
function f=fun_z(z,p)
beta=1;
f=zeros(4,1);
ri=2;
sig=1;
R=ri-z*(ri-1);
f(1)=-32.*beta./(R.^4.*p(1));
f(2)=(-8*f(1)./R-f(1)*p(2))./p(1);
f(3)=(-p(2).*f(2)-8.*f(2)./R-8.*f(1)./(R.^2.*p(1))-f(1).*p(3))./p(1);
f(4)=(-f(2)*p(3)-f(3)*p(2)+8*(-f(3)/R- (f(2)./p(1)-p(2)*f(1)/(p(1).*p(1)))/(R.*R)) -f(1)*p(4))/p(1);
댓글 수: 0
답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Ordinary Differential Equations에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!