用matlab解非线性函数,刚入门的如题,我第一次用matlab,新建了个m文件编辑:function [f,g]=mengte(x);f=x(1)^2+2*x(2)+3*x(3)^3+x(4)^2-8g=[-x(1)^2+x(2)-x(3)^2 x(1)+x(2)^2+x(4)-28 x(1)+x(3)+x(4)^2-40 x(3)^2+x(4)^2-64 -x(

来源:学生作业帮助网 编辑:作业帮 时间:2024/06/17 06:31:43
用matlab解非线性函数,刚入门的如题,我第一次用matlab,新建了个m文件编辑:function [f,g]=mengte(x);f=x(1)^2+2*x(2)+3*x(3)^3+x(4)^2-8g=[-x(1)^2+x(2)-x(3)^2    x(1)+x(2)^2+x(4)-28    x(1)+x(3)+x(4)^2-40    x(3)^2+x(4)^2-64    -x(
xW[OG+(U"lq6}ԼUCT|)v+O xM0| _ҝSB]nJFU 9s߹H:vߐ-X1HȠh>2OT{g’XUZUΈ>ko\zWxaowÌ޳Ѱ?zl~jߤ]aШu\WM}Gv=ȬntfnsBس0qL>|XFPv7/~/4] 7 ~ !u=;>10<}oa˦C,kyG6<Yk9-fctrkvkfvcv!btۇ\yUܟyb s3v,tarէ">htu`tc\(JUݧhTӤ:A E)}uGk@ Arsq 7l abB}󁎊6:Tfad[<`y 1ٜnx7p)֨Ioxjcu6V|Y "Fb~y5c0]f>ٝ)ZI,/'*UnQLgK;q.ޞA3Q[TKn,)2 ߷Nl[T)U`Ju.]YhO.C+xnNn@!Wnmł #͑VQTQJanY$G(6ЫR1 eXS2=V&9pfԸ6'o&ATKzH:RWY JzFgugxkttLSbPn%8Z8AI|r$ZO?~A&J.0 [>hgstoϋy0 |{ 3moה, WbKmktƥT<9V^'F9W!L9x#I˻$JT*oR&;7GK5{g  ˩;s;z$Ó仒9V?ʱ)p6#6rb X&8\T{GDΑԣ`4;PUN#8GDY%99 E% <̔R`?ᖁR X }"Q@ˎhIg`j8m6'PexɈ '9v7Qu5Q#=Rb<`]%VH S5 ʂ۫` jgri7Q\eK)gOQBstp ;Ɖs8%=?C`~X۫,v!oC@Mށ}^?XBj(I\s1D}PF P.= 3f48A:I9 .r#RZPT" zW"nS?UP2}N]-z4[A 4 Jڎb\3]B1O,. pH^tw%@ k>i&Y?},)2YwȲZfj"&/wr6[?MP봗q}:S5PKhBT/Z=Z C_2 vDIn֏ΊHx ݨSw"jlћ֦QaPLoF |N aw

用matlab解非线性函数,刚入门的如题,我第一次用matlab,新建了个m文件编辑:function [f,g]=mengte(x);f=x(1)^2+2*x(2)+3*x(3)^3+x(4)^2-8g=[-x(1)^2+x(2)-x(3)^2 x(1)+x(2)^2+x(4)-28 x(1)+x(3)+x(4)^2-40 x(3)^2+x(4)^2-64 -x(
用matlab解非线性函数,刚入门的
如题,

我第一次用matlab,新建了个m文件
编辑:
function [f,g]=mengte(x);
f=x(1)^2+2*x(2)+3*x(3)^3+x(4)^2-8
g=[-x(1)^2+x(2)-x(3)^2
    x(1)+x(2)^2+x(4)-28
    x(1)+x(3)+x(4)^2-40
    x(3)^2+x(4)^2-64
    -x(1)
    -x(2)
    -x(3)
    -x(4)]
保存好又新建了个m文件输入:
rand('state',sum(clock))
x0=0;p0=0
tic
for i=1:10^6
    x1=floor(x),x2=ceil(x);
    [f,g]=mengte(x1);
    if sum(g<=0)==8
        if p0<=f
            x0=x1;p0=f
        end
    end
    [f,g]=mengte(x2)
    if sum (g<=0)==8
        if p0<=f
            x0=x2;p0=f
        end
    end
end
x0,p0
是不是不对?那第二个是不是应该在指令框内输入? 
还有我程序有没有问题呢?在线求达人指导
此外我还想知道如何把这2个程序连接起来

用matlab解非线性函数,刚入门的如题,我第一次用matlab,新建了个m文件编辑:function [f,g]=mengte(x);f=x(1)^2+2*x(2)+3*x(3)^3+x(4)^2-8g=[-x(1)^2+x(2)-x(3)^2 x(1)+x(2)^2+x(4)-28 x(1)+x(3)+x(4)^2-40 x(3)^2+x(4)^2-64 -x(
首先应该肯定,第一次用matlab写程序写到这个水准,应该算是相当不错的.不过,毕竟是第一次,问题当然也不少,后面细说.
第二个m文件保存好在命令窗口(Command Window,也就是你说的指令框)中运行即可.需要注意的是,MATLAB的m文件命名有要求——去掉扩展名“.m”之后的余下部分必须是一个合法的变量名,即以字母开始的字母、数字及下划线序列.
如果想把两个文件合并成一个文件,需要把第二段程序放在前面,并且在前面加上function xxx(xxx是函数名,任意自定),作为该M文件的主函数.
说一说程序存在的问题:
第2段程序的x未定义,我猜,那应该是你想要生成的随机数.
有多处语句没有使用分号(;)结束,计算时把结果在屏幕上回显,会导致速度很慢.
关于目标函数初值:p0的初值不适合设为0,因为你很难保证实际计算的目标函数比0更小.最稳妥的应该取p0的初值为无穷大(Inf).
关于判断条件:既然是求min,那么更好解的条件应该是p0>=f,你刚好写反了.
 
我有几个问题搞不清楚:
看到你在程序中对x求ceil和floor,你的问题是一个整数规划问题吗?
你使用蒙特卡洛法求解的话,随机数应该有范围的,但目前这一点不清楚.
你为什么要用蒙特卡洛法求解这个优化问题,而不是使用优化工具箱提供的函数呢?
 
对你程序做了一些修改,合并到一个m文件,代码如下:
function zd533612231

rand('state',sum(clock))
x0=0;p0=Inf;
tic
for i=1:10^6
    x=rand(1,4)*100;
    x1=floor(x);x2=ceil(x);
    [f,g]=mengte(x1);
    if sum(g<=0)==8
        if p0>=f
            x0=x1;p0=f
        end
    end
    [f,g]=mengte(x2);
    if sum (g<=0)==8
        if p0>=f
            x0=x2;p0=f
        end
    end
end
x0,p0 

function [f,g]=mengte(x)

f=x(1)^2+2*x(2)+3*x(3)^3+x(4)^2-8;
g=[-x(1)^2+x(2)-x(3)^2
    x(1)+x(2)^2+x(4)-28
    x(1)+x(3)+x(4)^2-40
    x(3)^2+x(4)^2-64
    -x(1)
    -x(2)
    -x(3)
    -x(4)];
 
 
运行得到结果(因为是随机的,不同次运行结果可能存在差别):
x0 =
     3     3     0     1
p0 =
     8
 

用matlab解非线性函数,刚入门的如题,我第一次用matlab,新建了个m文件编辑:function [f,g]=mengte(x);f=x(1)^2+2*x(2)+3*x(3)^3+x(4)^2-8g=[-x(1)^2+x(2)-x(3)^2 x(1)+x(2)^2+x(4)-28 x(1)+x(3)+x(4)^2-40 x(3)^2+x(4)^2-64 -x( 用matlab解非线性方程组用什么函数?同题, matlab怎么用fsolve函数解非线性方程组? 如何用matlab解非线性方程? 怎么用matlab解非线性方程组 matlab里计算非线性方程的函数有哪些 matlab 拟合一元非线性拟合 用什么函数? 用罚函数求以下非线性规划的最优解(附图)如图TAT 如何用matlab画出非线性函数的曲线?函数是:I=exp(V-I)-1想做出V从-1到1之间每隔0.01取一点的曲线,用matlab怎么做呢? 一个关于如何用matlab进行多元非线性回归的问题我现在只有4组数据 想通过matlab里面的多元非线性回归 得出一个成本模型 其中一个因变量 3个自变量 在matlab里面应该用哪个函数来对这4 lsqnonlin(解非线性最小二乘问题)怎么使用?我是个新手,最好有详细的教程,最好有例子啊,用MATLAB中的lsqnonlin函数来算, matlab解非线性方程问题 MATLAB基础问题麻烦高手帮个忙,请问解有约束非线性规划问题,用MATLAB中的哪个函数?再麻烦各位把函数的调用格式也写清楚吧, Matlab中solve解非线性方程组用的是什么算法?能否查看solve的源程序? Matlab解非线性微分方程组的问题要求解的方程组为:dx/dt=-x+y^2dy/dt=-2y+x^2x(0)=y(0)=1如何用Matlab解该方程组,并且画出相轨图(即x-y图象)?我用dsolve函数, 求用matlab解非线性方程组,可以复制的.求大神,高分悬赏 用matlab怎么求解含有三角函数的非线性方程中解x为多少? MATLAB用高斯消去法解非线性方程组的代码