24小时热门版块排行榜    

查看: 370  |  回复: 2
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

legend85

银虫 (小有名气)

[交流] 【求助】隐函数求解问题 已有2人参与

各位大虾,我现在有三组实验数据 x=[3.2034 2.5439 2.2442 2.1043 1.9245 1.7846];y=[0.5989 0.4912 0.4593 0.4137 0.3844 0.3573];z=[0.0201 0.0192 0.0191 0.0188 0.0184 0.0180];
现在我想根据x和z的值用公式x-(y/(y+z))*((1.6504*y+1.4592*z)/1.6504/0.2969)^1.6504=0对y值进行求解并与实验值进行比较,应该如何操作并画出计算值y的趋势图???图以x轴为横坐标,y为纵坐标!用matlab或origin能行吗?
回复此楼

» 猜你喜欢

不要人夸颜色好,只留清气满乾坤。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zjliu1265

至尊木虫 (正式写手)

★ ★
legend85(金币+2):非常感谢! 2010-04-28 13:36
adu886886(金币+2):谢谢应助 2010-04-28 14:27
我用二分法写了个程序,不知是否满足你的需要:

% 隐函数求解问题
clc;clear;close all;
xt=[3.2034 2.5439 2.2442 2.1043 1.9245 1.7846];
zt=[0.0201 0.0192 0.0191 0.0188 0.0184 0.0180];
y=1;
for k=1:length(xt);
    x=xt(k);z=zt(k);
    y1=0;
    y2=1;
    f1=x-(y1/(y1+z))*((1.6504*y1+1.4592*z)/1.6504/0.2969)^1.6504;
    f2=x-(y2/(y2+z))*((1.6504*y2+1.4592*z)/1.6504/0.2969)^1.6504;
    while max(abs(f1),abs(f2))>1e-6;
        f1=x-(y1/(y1+z))*((1.6504*y1+1.4592*z)/1.6504/0.2969)^1.6504;
        f2=x-(y2/(y2+z))*((1.6504*y2+1.4592*z)/1.6504/0.2969)^1.6504;
        y=[y1+y2]/2;
        f=x-(y/(y+z))*((1.6504*y+1.4592*z)/1.6504/0.2969)^1.6504;
        if f>0;
            y1=y;
        else
            y2=y;
        end
    end
    yt(k)=y;
    k
end
yt0=[0.5989 0.4912 0.4593 0.4137 0.3844 0.3573]
plot(yt0,'k+');hold on;
plot(yt,'rx');hold on;
%%%%%%%%%%% 图解确定根的个数 %
figure;
for k=1:6;
    x=xt(1);y=yt(k);
    ys=linspace(0,1,101);
    f=x-(ys./(ys+z)).*((1.6504*ys+1.4592*z)/1.6504/0.2969).^1.6504;
    subplot(2,3,k);plot(ys,f);
end
%%% over %%
3楼2010-04-28 11:03:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 3 个回答

xiegangmai

版主 (职业作家)

我没头衔

优秀版主优秀版主优秀版主


anyuezhiji(金币+1):谢谢提供意见 2010-04-25 18:00
legend85(金币+1):谢谢帮忙 2010-04-25 23:19
我用solve命令试了试,没有求解出来。

syms x y z;
z=solve('x-(y/(y+z))*((1.6504*y+1.4592*z)/1.6504/0.2969)^1.6504=0',y);

然后用x,z的值替换进去,得到y的值。
明德厚学、求是创新
2楼2010-04-25 10:49:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见