无法在以下代码中绘制ff=2的图形: 将numpy导入为np 输入数学 将matplotlib.pyplot作为plt导入 %matplotlib内联 #类来计算外倾角和厚度分布 naca类:#定义naca类 def ___;初始(自,翼型): 自翼型=翼型 打印('NACA翼型为',翼型'\n') 自拱度=int(翼型[0:1])/100 打印(“翼面最大拱度为弦长的百分比,”,self.\u maxcumber*100) 自身位置=int(翼型[1:2])/10 打印('从前缘开始的最大弧度位置为弦长的百分比',self.\u pos*100) 自身厚度=int(翼型[2:4])/100 打印('机翼的最大厚度,作为弦长的百分比,'自身。\厚度*100,'\n') #用于计算外倾角的函数 def外倾角(自,x):#定义外倾角功能 如果x=0: z=(自身最大外倾角/(自身位置**2))*((2*自身位置*x)-x**2) 返回z 如果x>=self.\uu pos和x

无法在以下代码中绘制ff=2的图形: 将numpy导入为np 输入数学 将matplotlib.pyplot作为plt导入 %matplotlib内联 #类来计算外倾角和厚度分布 naca类:#定义naca类 def ___;初始(自,翼型): 自翼型=翼型 打印('NACA翼型为',翼型'\n') 自拱度=int(翼型[0:1])/100 打印(“翼面最大拱度为弦长的百分比,”,self.\u maxcumber*100) 自身位置=int(翼型[1:2])/10 打印('从前缘开始的最大弧度位置为弦长的百分比',self.\u pos*100) 自身厚度=int(翼型[2:4])/100 打印('机翼的最大厚度,作为弦长的百分比,'自身。\厚度*100,'\n') #用于计算外倾角的函数 def外倾角(自,x):#定义外倾角功能 如果x=0: z=(自身最大外倾角/(自身位置**2))*((2*自身位置*x)-x**2) 返回z 如果x>=self.\uu pos和x,matplotlib,plot,python-3.7,valueerror,Matplotlib,Plot,Python 3.7,Valueerror,您的错误在这行代码中cmc=-(np.pi/4)*(a1-a2),对于ff=2,您的section()函数将返回cmc,这是一个常量。我想你的公式一定缺少alphar来计算不同角度的力矩系数。a=thinairfoiltheory(“3306”)a.plot(2)4帧/usr/local/lib/python3.6/dist-packages/matplotlib/axes//u base.py in_plot_args(self,tup,kwargs)340 341如果x.shape[0]!=

您的错误在这行代码中
cmc=-(np.pi/4)*(a1-a2)
,对于ff=2,您的section()函数将返回cmc,这是一个常量。我想你的公式一定缺少alphar来计算不同角度的力矩系数。

a=thinairfoiltheory(“3306”)a.plot(2)4帧/usr/local/lib/python3.6/dist-packages/matplotlib/axes//u base.py in_plot_args(self,tup,kwargs)340 341如果x.shape[0]!=y、 形状[0]:-->342提升值错误(f“x和y必须具有相同的第一维度,但“343 f”具有形状{x.shape}和{y.shape}”)344如果x.ndim>2或y.ndim>2:值错误:x和y必须具有相同的第一维度,但具有形状(50,)和(1,)请添加一些解释代码应该做什么以及您尝试过的事情。另外,尽量缩短代码以创建问题的最小演示。还请添加示例代码以调用函数。您可以单击“编辑”来编辑和更改问题的内容。谢谢。这是正确的,解决了我的问题。
import numpy as np
import math
import matplotlib.pyplot as plt
%matplotlib inline

#Class to calculate Camber and Thickness Distribution

class naca:                                                    # defining class naca
    def __init__(self,airfoil):
        self.airfoil = airfoil
        print ('NACA Airfoil is',airfoil ,'\n')
        self.__maxcamber=int(airfoil[0:1])/100 
        print ('Maximum Camber of airfoil as a %age of chord is' ,self.__maxcamber *100)
        self.__pos=int(airfoil[1:2])/10 
        print ('Position of maximum camber from leading edge as a %age of chord is' ,self.__pos*100)
        self.__thick=int(airfoil[2:4])/100 
        print ('Maximum Thickness of airfoil as a %age of chord is' ,self.__thick * 100 ,'\n')


    #Function to calculate Camber  
    def camber(self,x):                                        # defining camber function               
        if x < self.__pos and x>=0:
            z=(self.__maxcamber/(self.__pos**2))*((2*self.__pos*x)-x**2) 
            return z
        elif x>=self.__pos and x<=1:
            z=(self.__maxcamber/((1-self.__pos)**2))*(1-(2*self.__pos)+(2*self.__pos*x)-x**2)
            return z
        else:
            raise Exception ('Entered value of x/c should be between 0 to 1')
  
    #Function to calculate Thickness 
    def thickness (self,x):                                    # defining thickness function        
        if 0<=x<=1:
            t= 5*self.__thick*(0.2969*math.sqrt(x) - 0.1260*x - 0.3516*x**2 + 0.2843*x**3 - 0.1036*x**4)
            return t
        else:
            raise Exception ('Entered value of x/c should be between 0 to 1')
    
#Class to calculate x-derivative of Camber and Thickness distribution function 
class derivative(naca):                                        # parent class naca mentioned in the bracket
        def __init__(self,airfoil):
            super().__init__(airfoil)                          # calling the previous class attributes

        # Finding x-derivative of camber 
        def d_camber(self,xa):   
            h=0.01
            if xa==0:
                dx=(super().camber(xa+h)-super().camber(xa))/h         # forward differencing
                return dx
            elif xa==1:
                dx=(super().camber(xa)-super().camber(xa-h))/h         # backward differencing
                return dx
            else:
                dx=(super().camber(xa+h)-super().camber(xa-h))/(2*h)   # central differencing
                return dx

        # Finding x-derivative of thickness
        def d_thick(self,xa):  
            h=0.01
            if xa==0:
                dt=(super().thickness(xa+h)-super().thickness(xa))/h         # forward differencing
                return dt
            elif xa==1:
                dt=(super().thickness(xa)-super().thickness(xa-h))/h         # backward differencing
                return dt
            else:
                dt=(super().thickness(xa+h)-super().thickness(xa-h))/(2*h)   # central differencing
                return dt
                   
#Class to calculate flow around an arbitary airfoil using thin-airfoil theory
class thinairfoiltheory(derivative):    #parent class mentioned in the bracket
        def __init__(self, airfoil):
            super().__init__(airfoil)    #calling the previous class attributes   
        
        def sectional(self,alphad,f):
            n=15                             ### it is not taking value more than 15. n is actually related to the number of division used in intergration
                                             ##check how to give n=100.For n>15 it is giving error???
                #we have to increase thye value of n for accuracy
            alphar=alphad*(np.pi/180)
            thetal=0
            thetah=np.pi
            h=(np.pi-0)/n
            th=0
            sum1=0
            sum2=0
            sum3=0
            for i in range(1, n): #composite trapezoidal rule used for integration
                th=th+h
                x=0.5*(1-np.cos(th))
                sum1=sum1+super().d_camber(x)
                sum2=sum2+(super().d_camber(x)*np.cos(th))
                sum3=sum3+(super().d_camber(x)*np.cos(2*th))
                               
            xl=0.5*(1-np.cos(thetal))
            xh=0.5*(1-np.cos(thetah))
            
            finalsum1=(h/2)*(super().d_camber(xl)+super().d_camber(xh))+(h*sum1)
            a0=(1/np.pi)*finalsum1
            
            finalsum2=(h/2)*(((super().d_camber(xl))*np.cos(thetal))+((super().d_camber(xh))*np.cos(thetah)))+(h*sum2)
            a1=(2/np.pi)*finalsum2
            
            finalsum3=(h/2)*(((super().d_camber(xl))*np.cos(2*thetal))+((super().d_camber(xh))*np.cos(2*thetah)))+(h*sum3)
            a2=(2/np.pi)*finalsum3
            
            
            cl=2*(np.pi*(alphar-a0)+(np.pi/2)*a1)
            cmc=-(np.pi/4)*(a1-a2)
            
            #print("sectional lift coefficient", cl)
            #print("quatercord point moment",cmc)
            
            if f==1:
                return cl
            elif f==2:
                return cmc

        def plot(self,ff):
                     
            deg=np.linspace(0,30,50) 
            liftcoff=self.sectional(deg,1)
            momcoff=self.sectional(deg,2)
               
                               
            if ff==1:         #graph for lift coefficient
                plt.plot(deg,liftcoff)  
                plt.rcParams['figure.figsize'] = (10, 6)           #This fixes the size of plot displayed below
                plt.rcParams.update({'font.size': 15})            #This fixes the font size of parameters in the plot below
                plt.xlabel('Angle of attack in degress')        #This labels the x-axis
                plt.ylabel('Liff coeff')         #This labels the y-axis
                plt.grid(b=True, color='black', alpha=0.3,linewidth=1)
                
            elif ff==2:    #graph for moment coefficient
                ##the moment coeff graph is not plotting.I cannot figure out the problem???
                
                plt.plot(deg,momcoff)  
                plt.rcParams['figure.figsize'] = (10, 6)           #This fixes the size of plot displayed
                plt.rcParams.update({'font.size': 15})            #This fixes the font size of parameters
                plt.xlabel('Angle of attack in degress')        #This labels the x-axis
                plt.ylabel('mom coeff')         #This labels the y-axis
                plt.grid(b=True, color='black', alpha=0.3,linewidth=1)