24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1167  |  回复: 5

无尘茶

木虫 (小有名气)

[求助] 求助matlab解非线性方程。求代码

x1-(x2/81.54-1)*x3*log(1-81.54/x2)+8.80/81.54=0;

x1-(x2/84.46-1)*x3*log(1-84.46/x2)+9.55/84.46=0;

x1-(x2/86.76-1)*x3*log(1-86.76/x2)+9.90/86.76=0;


求解此方程组的代码,谢谢
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

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

dbb627

荣誉版主 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
无尘茶: 金币+20, ★★★很有帮助 2012-07-10 16:21:43
牛顿法
CODE:
function [r,n]=mulVNewton(x0,A,eps)
if nargin==1
    A=eye(length(x0));
    eps=1.0e-4;
else
    if nargin==2
        eps=1.0e-4;
    end
end

r=x0-myf(x0)/A;
n=1;
tol=1;
while tol>eps
    x0=r;
    r=x0-myf(x0)/A;
    y=r-x0;
    z=myf(r)-myf(x0);
    A1=A+(z-y*A)'*y/norm(y);
    A=A1;
    n=n+1;
    if(n>100000)
        disp(' 迭代步数太多,可能不收敛!');
        return;
    end
    tol=norm(r-x0);
end                                       
%------------------
function f=myf(x)

x1=x(1);x2=x(2);x3=x(3);
f=[x1-(x2/81.54-1)*x3*log(1-81.54/x2)+8.80/81.54,    x1-(x2/84.46-1)*x3*log(1-84.46/x2)+9.55/84.46,    x1-(x2/86.76-1)*x3*log(1-86.76/x2)+9.90/86.76];

不过初值不好确定
[r,n]=mulVNewton([ -1.3508   -10    1.9601])
迭代步数太多,可能不收敛!

r =

  1.0e+014 *

   -0.5414   -3.6681    4.2094


n =

      100001
The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
2楼2012-07-10 16:09:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

无尘茶

木虫 (小有名气)

引用回帖:
2楼: Originally posted by dbb627 at 2012-07-10 16:09:14
牛顿法

function =mulVNewton(x0,A,eps)
if nargin==1
    A=eye(length(x0));
    eps=1.0e-4;
else
    if nargin==2
        eps=1.0e-4;
    end
end

r=x0-myf(x0)/A;
n=1;
tol=1;
while to ...

你能帮我讲一下如何操作吗?我是一个菜鸟,谢谢
3楼2012-07-10 16:28:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dbb627

荣誉版主 (著名写手)

★ ★ ★ ★
cenwanglai: 金币+4, 辛苦了~ 2012-07-10 19:48:45
引用回帖:
3楼: Originally posted by 无尘茶 at 2012-07-10 16:28:18
你能帮我讲一下如何操作吗?我是一个菜鸟,谢谢...

上面的代码复制之后,打开editor,粘贴后保存为mulVNewton.m文件在当前目录
然后在命令窗口输入[r,n]=mulVNewton([ -1.3508   -10    1.9601])%x1-x3的三个初值

r为迭代后的值,如果收敛就是解
n迭代次数
The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
4楼2012-07-10 16:32:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

无尘茶

木虫 (小有名气)

引用回帖:
4楼: Originally posted by dbb627 at 2012-07-10 16:32:23
上面的代码复制之后,打开editor,粘贴后保存为mulVNewton.m文件在当前目录
然后在命令窗口输入=mulVNewton()%x1-x3的三个初值

r为迭代后的值,如果收敛就是解
n迭代次数...

谢谢,我先试试
5楼2012-07-10 16:33:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mataohk

银虫 (初入文坛)

上述方法可行?
6楼2012-09-29 15:22:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 无尘茶 的主题更新
信息提示
请填处理意见