Dec-11-2018, 03:26 PM
(This post was last modified: Dec-11-2018, 03:26 PM by pianistseb.)
This code solves a differential equation by the method of 4nd Runge-Kutta. It works fine, but I want to save the diagram for each loop with high resolution. What can I do?
from sympy.solvers import solve from sympy import Symbol from sympy import solve, Poly, Eq, Function, exp from sympy.abc import x, y, z, a, b import matplotlib.pyplot as plt import numpy as np import math as mt def coef0(k0,c,N): return k0**2*c**2*N**2 def coef1(k0,q,a): return -(k0**2+q**2+0.25*a**2)*c**2 def coef2(k0): return 1 def sols(a0,a1,a2): omg2=Symbol('omg2') c=solve(Poly(a2*omg2**2+a1*omg2+a0),omg2) return c def co1(a,k0,omg2,N,c): c=a return c def co2(a,k0,omg2,N,c): c=-(omg2**2-k0**2*c**2*omg2+k0**2*c**2*N**2)/(c**2*omg2) return c def deriv(t,y,c1,c2): # Αυτή εδώ xi_dev=y[1] psi_dev=c1*y[1]+c2*y[0] return xi_dev,psi_dev loop=(1,2,3) for j in loop: a=20.42 k0=2 c=2 N=10 q=j*np.pi print('q=',q) cof0=coef0(k0,c,N) cof1=coef1(k0,q,a) cof2=coef2(k0) omg2=sols(cof0,cof1,cof2)[1] print('omg2=',omg2) c1=co1(a,k0,omg2,N,c) c2=co2(a,k0,omg2,N,c) tmin=0 tmax=5 h=0.05 t=np.arange(tmin,tmax,h) y=np.zeros((2,len(t)), dtype=float) k1=np.zeros((2,len(t)), dtype=float) k2=np.zeros((2,len(t)), dtype=float) k3=np.zeros((2,len(t)), dtype=float) k4=np.zeros((2,len(t)), dtype=float) y[0,0]=0.1 y[1,0]=0.2 plt.figure(j) plt.rc('text', usetex=True) plt.rc('font', family='serif') for i in range(len(t)): if i==len(t)-1: # Αν δεν το κάνω αυτό υπάρχει πρόβλημα με τις διαστάσεις break k1[:,i]=deriv(t[i],y[:,i],c1,c2) k2[:,i]=deriv(t[i]+0.5*h,y[:,i]+k1[:,i]*0.5*h,c1,c2) k3[:,i]=deriv(t[i]+0.5*h,y[:,i]+k2[:,i]*0.5*h,c1,c2) k4[:,i]=deriv(t[i]+h,y[:,i]+k3[:,i]*h,c1,c2) y[0,i+1]=y[0,i]+1/6*(k1[0,i]+2*k2[0,i]+2*k3[0,i]+k4[0,i])*h y[1,i+1]=y[1,i]+1/6*(k1[1,i]+2*k2[1,i]+2*k3[1,i]+k4[1,i])*h col1=(1,0,0) plt.scatter(t[i], y[0,i], s=7, c=col1, marker='*') plt.xlabel(r'$x$',fontsize=16) plt.ylabel(r'$\log\xi_{x}$',fontsize=16) plt.title(r"Dependence of $\log\xi_{x}$ from $x$",fontsize=16, color='Black') plt.yscale('log') plt.savefig('x_dependence') plt.show()I am asking sorry because the code is very large.