作业帮 > 数学 > 作业

MATLAB复杂隐函数求解!求大神指导!

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/05/21 11:47:33
MATLAB复杂隐函数求解!求大神指导!
syms D1 D2 G1 G2 al E1 E2 Km w6
G1=10^(-5);G2=10^(-5); E1=2*(10^11);E2=2*(10^11);Km=1.2;w6=2*(10^9);for D1=1.3:0.1:1.8;
for D2=1.3:0.1:1.8;
ac1=(G1^2)/((Km*0.01/2)^(2/(D1-1)));
ac2=(G2^2)/((Km*0.01/2)^(2/(D2-1)));
w=2*(pi^(1/2))*E1*(G1^(D1-1))*D1*(al^(D1/2))/3;
r=(2/(3-2D1))*(al^((3-2D1)/2)-ac1^((3-2D1)/2))-((al^((2-D2)/2))*2/(5-2D1-D2)*(al^((5-2D1-D2)/2)-ac1^((5-2D1-D2)/2)));
t=Km*w6*D1*(al^(D1/2))/2;
u=(2/(2-D1)*(ac1^((2-D1)/2))-((al^((2-D2)/2)))*2/(4-D2-D1)*(ac1^((4-D2-D1)/2)));
P2=w*r+t*u;
w1=2*(pi^(1/2))*E2*(G2^(D2-1))*D1*(al^((D1+D2-2)/2))/3;
r1=2/(5-2D1-D2)*(al^((5-2D1-D2)/2)-ac2^((5-2D1-D2)/2));
t1=Km*w6*D1*(al^((D1+D2-2)/2))/2;
u1=2/(4-D2-D1)*(ac2^((4-D2-D1)/2));
P1=w1*r1+t1*u1;
P=P1+P2;P=3*10^4;
%想在已知P和D1,D2的情况下求解al,D1和D2是一组数据,最后画出三维图
题目写的比较乱.明确几点:1、是不是说对于D1=1.3:0.1:1.8,D2=1.3:0.1:1.8的每一种组合,按照P=P1+P2=3*10^4来求解a1?2、对于这样的复杂方程,求解析解是不太现实的,应该求数值解.3、方程可能存在多个解,怎么处理?例如,取D1=D2=1.5,画出P-3E4的曲线如下:显然,在0-30范围内有两个解.
再问: 你好,谢谢你的回答。以上函数中的al在我的设定中是有一定物理意义的,应该是个小于1大于0的正数。是否能够给出:在已知P的值时,得出D1,D2,al的三维关系图。麻烦大神把程序传上来!我快被这事弄崩溃了!
再答: 参考代码:syms D1 D2 G1 G2 al E1 E2 Km w6
G1=10^(-5);G2=10^(-5); E1=2*(10^11);E2=2*(10^11);Km=1.2;w6=2*(10^9);
[DD1,DD2] = meshgrid(1.3:0.1:1.8);
A1 = DD1*NaN;
for ii=1:size(DD1,1)
    for jj=1:size(DD2,2)
        D1 = DD1(ii,jj);
        D2 = DD2(ii,jj);
        ac1=(G1^2)/((Km*0.01/2)^(2/(D1-1)));
        ac2=(G2^2)/((Km*0.01/2)^(2/(D2-1)));        (因字数限制,此部分代码不变,删除)
        t1=Km*w6*D1*(al^((D1+D2-2)/2))/2;
        u1=2/(4-D2-D1)*(ac2^((4-D2-D1)/2));
        P1=w1*r1+t1*u1;
        P=P1+P2;
        try
            A1(ii,jj)=fzero(@(a1)subs(P-3E4,a1),[eps 1]);
        catch
            fprintf('Error: D1=%g, D2=%g, %s\n',D1,D2,lasterr)
        end
    end
end
mesh(DD1,DD2,A1)
view(3)
‍‍其中,当D1=1.3, D2=1.4时,无解(用ezplot(P-3E4,[0 1])容易看到,曲线始终位于实轴之下)。
再答: 参考代码:syms D1 D2 G1 G2 al E1 E2 Km w6
G1=10^(-5);G2=10^(-5); E1=2*(10^11);E2=2*(10^11);Km=1.2;w6=2*(10^9);
[DD1,DD2] = meshgrid(1.3:0.1:1.8);
A1 = DD1*NaN;
for ii=1:size(DD1,1)
    for jj=1:size(DD2,2)
        D1 = DD1(ii,jj);
        D2 = DD2(ii,jj);
        ac1=(G1^2)/((Km*0.01/2)^(2/(D1-1)));        (此处有部分代码无改动,因字数限制省略)
        u1=2/(4-D2-D1)*(ac2^((4-D2-D1)/2));
        P1=w1*r1+t1*u1;
        P=P1+P2;
        try
            A1(ii,jj)=fzero(@(a1)subs(P-3E4,a1),[eps 1]);
        catch
            fprintf('Error: D1=%g, D2=%g, %s\n',D1,D2,lasterr)
        end
    end
end
mesh(DD1,DD2,A1)
view(3)
 注意,有些情况下(例如D1=1.3, D2=1.4)方程无解。