24小时热门版块排行榜    

查看: 932  |  回复: 5

815292578

木虫 (著名写手)

[求助] MATLAB求解方程后没有报错,但无法绘制出曲线,求高手帮忙解决... 已有1人参与

最近利用MATLAB求解方程后没有报错,但无法绘制出曲线,求高手帮忙解决...
方程不是很复杂,具体方程如下:
clear;clc;
P=29.6; D=8245; R=0.021;  LL=0.021; x0=0.010;  pp=8960;  a=0.002;  b=0.002;  erfa=30*pi/180;  angle=atan(LL/R);  
n=10;  
h=a/n;  
N=x0/h;  %步长总数
k=1.2;  
t=1/(2*k);
Y=zeros(N,1);
L=zeros(N,1);
H=zeros(N,1);
L(1)=R*tan(angle);
H(1)=0;
x(1)=h;
y(1)=h*tan(erfa);
for i=1:1:N-1;
    x(i+1)=(i+1)*h;  %离散后xi横坐标
    y(i+1)=x(i+1)*tan(erfa);  %离散后yi纵坐标
    psaiI=atan((LL+(i+1)*h)/R);
    z=fsolve(@(z)tan(psaiI)*sqrt((1-(2*z-1)/z^2)*(1-1/((2*z-1)^t)^2))-1/((2*z-1)^t)-sqrt((2*z-1)/z^2),1);
    Dm=D*sqrt(z^2/(2*z-1));
    xx=fsolve(@(x)cos(x)/sin(psaiI-x)-sqrt(z^2/(2*z-1)),0);   
    X=[x,xx];
    L(i+1)=(L(i)*tan(X(i))*tan(psaiI)+tan(psaiI)*(R-H(i)))/(1+tan(X(i))*tan(psaiI));
    H(i+1)=(R*tan(X(i))*tan(psaiI)-L(i)*tan(X(i))+H(i))/(1+tan(X(i))*tan(psaiI));     
if H(i)>Y(i)
    Pm=z*P;
    else
    Pm=P;
    end
    if i==1
        vv(1)=(1/3)*pi*(h*tan(erfa))^2*h;  
        m(1)=pp*vv(1);
        v=Pm/m(1);
    elseif i>n
            vv(i)=(1/3)*pi*(i*h*tan(erfa))^2*i*h-vv(n)-(1/3)*pi*((i-n)*h*tan(erfa))^2*(i-n)*h;
            m(i)=pp*vv(i);
            v(i)=Pm/m(i);
    else
        vv(i)=(1/3)*pi*(i*h*tan(erfa))^2*i*h-vv(i-1);
        m(i)=pp*vv(i);
        v(i)=Pm/m(i);
    end
end
plot(x(i),v(i))
想绘制横坐标为x, 纵坐标为v的曲线。请熟悉MATLAB的高手给点建议,谢谢...
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

FMStation

至尊木虫 (知名作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
815292578: 金币+10, 有帮助 2016-08-15 06:45:41
plot(x(i),v(i))  => plot(x',v')

whos x v
  Name      Size            Bytes  Class     Attributes

  v         1x49              392  double              
  x         1x50              400  double              

維度不同
2楼2016-08-13 20:47:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

815292578

木虫 (著名写手)

引用回帖:
2楼: Originally posted by FMStation at 2016-08-13 20:47:14
plot(x(i),v(i))  => plot(x',v')

whos x v
  Name      Size            Bytes  Class     Attributes

  v         1x49              392  double              
  x         1x50              400   ...

谢谢您的回复。现在我将程序拆分出来分别计算求得x,z值; H值;Pm值;和微元质量m。最后绘制plot(x,v)。发现还是不行!
发现:这样可以得到离散的x(i)值,y(i)值,X(i)值。但是离散的z(i)值得不到!所以最后无法得到Pm=z*p值。请问给出意见如何修改?谢谢...

clear;clc;
P=29.6; D=8245; R=0.021;  LL=0.021; x0=0.010;  pp=8960;  a=0.002;  b=0.002;  erfa=30*pi/180;  angle=atan(LL/R);  
n=10;  
h=a/n;  
N=x0/h;  %步长总数
k=1.2;  
t=1/(2*k);
%求X值和z值
for i=1:N
    x(i)=i*h;
    y(i)=x(i)*tan(erfa);
    psaiI=atan((LL+i*h)/R);
    z=fsolve(@(z)tan(psaiI)*sqrt((1-(2*z-1)/z^2)*(1-1/((2*z-1)^t)^2))-1/((2*z-1)^t)-sqrt((2*z-1)/z^2),1);  
    xx=fsolve(@(x)cos(x)/sin(psaiI-x)-sqrt(z^2/(2*z-1)),0);   
    X(i)=xx;   
end
%求H值
L=zeros(N,1);
H=zeros(N,1);
L(1)=R*tan(angle);
H(1)=0;
for i=1:N-1
    L(i+1)=(L(i)*tan(X(i))*((LL+i*h)/R)+((LL+i*h)/R)*(R-H(i)))/(1+tan(X(i))*((LL+i*h)/R));
    H(i+1)=(R*tan(X(i))*((LL+i*h)/R)-L(i)*tan(X(i))+H(i))/(1+tan(X(i))*((LL+i*h)/R));   
end
%比较上面计算出的H和y值的大小后,求Pm值
if H(i)>y(i)
    Pm=z*P;
else Pm=P;
end
%求各个微元的质量
for i=1:N
    if i==1
        vv(1)=(1/3)*pi*(h*tan(erfa))^2*h;  %第一个微元体积
        m(1)=pp*vv(1);
        v(1)=Pm/m(1);
    elseif i>n
        vv(i)=(1/3)*pi*((i)*h*tan(erfa))^2*(i)*h-vv(n)-(1/3)*pi*((i-n)*h*tan(erfa))^2*(i-n)*h;
        m(i)=pp*vv(i);
        v(i)=Pm/m(i);
    else
        vv(i)=(1/3)*pi*((i)*h*tan(erfa))^2*(i)*h-vv(i);
        m(i)=pp*vv(i);
        v(i)=Pm/m(i);
    end
end
plot(x,v)
3楼2016-08-15 06:44:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

FMStation

至尊木虫 (知名作家)

【答案】应助回帖

>> vv(i)=(1/3)*pi*((i)*h*tan(erfa))^2*(i)*h-vv(i);
>> whos vv
  Name      Size            Bytes  Class     Attributes
  vv        1x1                 8  double              

??? Index exceeds matrix dimensions.
i =  2 => No vv(2)
4楼2016-08-15 09:56:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

815292578

木虫 (著名写手)

引用回帖:
4楼: Originally posted by FMStation at 2016-08-15 09:56:39
>> vv(i)=(1/3)*pi*((i)*h*tan(erfa))^2*(i)*h-vv(i);
>> whos vv
  Name      Size            Bytes  Class     Attributes
  vv        1x1                 8  double              

??? Ind ...

谢谢您的回复。vv(i)是指离散后各个微元的体积。由于求解公式不同,当i=1;1<i<=n;n<i<=N.三个不同公式求解的。
接下来该如何求解?能给点建议吗...谢谢
5楼2016-08-16 03:36:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

FMStation

至尊木虫 (知名作家)

【答案】应助回帖

當 i =  2 時
欲執行
vv(i)=(1/3)*pi*((i)*h*tan(erfa))^2*(i)*h-vv(i);
可是沒有已產生的 vv(2) ?

公式錯 or  vv(2)須先產生?
6楼2016-08-16 08:22:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 815292578 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 278求调剂 +7 烟火先于春 2026-03-17 7/350 2026-03-21 15:22 by lature00
[考研] 【考研调剂】化学专业 281分,一志愿四川大学,诚心求调剂 +9 吃吃吃才有意义 2026-03-19 9/450 2026-03-21 13:28 by 邹gv
[考研] 332求调剂 +3 凤凰院丁真 2026-03-20 3/150 2026-03-21 10:27 by luoyongfeng
[考研] 0856材料专硕353求调剂 +3 NIFFFfff 2026-03-20 3/150 2026-03-21 10:23 by luoyongfeng
[考研] 301求调剂 +10 yy要上岸呀 2026-03-17 10/500 2026-03-21 03:14 by JourneyLucky
[考研] 085700资源与环境308求调剂 +12 墨墨漠 2026-03-18 13/650 2026-03-21 01:42 by JourneyLucky
[考研] 一志愿武理材料305分求调剂 +6 想上岸的鲤鱼 2026-03-18 7/350 2026-03-21 01:03 by JourneyLucky
[考研] 一志愿重庆大学085700资源与环境专硕,总分308求调剂 +3 墨墨漠 2026-03-18 3/150 2026-03-21 00:39 by JourneyLucky
[考研] 药学383 求调剂 +3 药学chy 2026-03-15 5/250 2026-03-20 22:11 by 云游重阳
[考研] 求调剂一志愿南京航空航天大学289分 +3 @taotao 2026-03-19 3/150 2026-03-20 21:34 by JourneyLucky
[考研] 一志愿华中农业071010,总分320求调剂 +3 困困困困坤坤 2026-03-20 3/150 2026-03-20 20:38 by 学员8dgXkO
[考研] 一志愿北京化工大学0703化学318分,有科研经历,求调剂 +4 一瓶苯甲酸 2026-03-14 4/200 2026-03-20 20:36 by fen_rao
[考研] 353求调剂 +3 拉钩不许变 2026-03-20 3/150 2026-03-20 19:56 by JourneyLucky
[考研] 0703化学调剂 ,六级已过,有科研经历 +13 曦熙兮 2026-03-15 13/650 2026-03-20 19:35 by Dream007008
[考研] 求调剂 +3 eation27 2026-03-20 3/150 2026-03-20 19:32 by JourneyLucky
[基金申请] 学校已经提交到NSFC,还能修改吗? 40+4 babangida 2026-03-19 8/400 2026-03-20 15:58 by babero
[考研] 286求调剂 +6 lemonzzn 2026-03-16 10/500 2026-03-19 14:31 by lemonzzn
[考研] 本科郑州大学物理学院,一志愿华科070200学硕,346求调剂 +4 我不是一根葱 2026-03-18 4/200 2026-03-19 09:11 by 浮云166
[考研] 275求调剂 +4 太阳花天天开心 2026-03-16 4/200 2026-03-17 10:53 by 功夫疯狂
[考研] 302求调剂 +4 小贾同学123 2026-03-15 8/400 2026-03-17 10:33 by 小贾同学123
信息提示
请填处理意见