均赋为0进行求解的。具体要给他们赋什么值偶觉得应该根据所求实
际问题的解的区间来确定。
function non_linearfun
x0=;
answer_x_y_m_n=fsolve(@fun,x0)
function y=fun(x)
R=50;
D=10;
beta=0.75;
p=10e6;
y(1)=p+2*beta*R^3*x(1)/(3*R+2*D-x(3))^3+2*beta*R^3*x(1)/(3*R+D-x(3))^3+2*beta*R^3*x(2)/(R+D-x(4))^3-R^3*x(2)/(R-x(4))^3;
y(2)=p+2*beta*R^3*x(1)/(5*R+2*D-x(3))^3+2*beta*R^3*x(1)/(R+D-x(3))^3+2*beta*R^3*x(2)/(3*R+D-x(3))^3-R^3*x(2)/(R+x(4))^3;
y(3)=p+2*beta*R^3*x(1)/(5*R+2*D-x(3))^3+2*beta*R^3*x(2)/(3*R+2*D-x(4))^3+2*beta*R^3*x(2)/(R+D+x(4))^3-R^3*x(1)/(R-x(3))^3;
y(4)=p+2*beta*R^3*x(1)/(7*R+3*D-x(3))^3+2*beta*R^3*x(2)/(5*R+2*D-x(4))^3+2*beta*R^3*x(2)/(3*R+D+x(4))^3-R^3*x(1)/(R+x(3))^3;
结果:
answer_x_y_m_n =
23.1647 2.3523-49.3384 0.4916
回复
原帖由 dingd 于 2007-1-6 22:27 发表这道题有点意思啊,用1stOpt又找到一组解,不知对否,大家验证一下:
x: -6284980.20782905
m: 12.0166413640221
y: 21836463.6740884
n: 122.909601202379
1stOpt计算时, 在不知初值的情况下, 一般是随机赋值的,所以出现每次的计算结果不同也不奇怪.
尤其是"真正做到全局最优"本身仍是一个难题,应用“麦考特+通用全局优化”也只能以较小的概率得到最优。
每种软件都有其长处,不宜贬此褒彼,而是要善于运用各自长处去解决问题. xjzuo估计用的是1.5破解版,如果用2.0,应用“麦考特+通用全局优化”,则几乎以100%的概率收敛到最优。
Matlab是公认的数学老大,无其它能比,但在全局优化方面,的确不如1stOpt。如汝言“每种软件都有其长处”
相信本论坛看了我对1stOpt的介绍,从不知道,到了解,到正在使用者(不管正版还是盗版)不在少数。多一种比较、多一种选择总是有益无害的。 谢谢各位的讨论
原来有一个参数写错了
已经修正:@L %%%---------------------------------------------%%%
本是一个看看fsolve帮助就能解决的小问题(搜索一下论坛此类问题也已解答过多次),
却阴差阳错(先是买卖贴的不当,后是一点小争执)地搞得很热闹,这也算是一个很典型的重复的例子吧.
不过再次讨论也没什么不好,只是希望以此例为鉴,发贴时请务必先注意一下:
1.买卖贴不要发;
2.题目最好要清楚.什么跪求、小妹、...等说法请不要带到本论坛来.
否则,很可能会被当成垃圾贴删除.
%%%---------------------------------------------%%%
By xjzuo
[ 本帖最后由 xjzuo 于 2007-1-8 10:30 编辑 ]
求助
怎么在m文件中使用积分函数阿帮忙看看这个程序怎么调阿!谢谢斑竹
function out=fun(x,d)t=0:10:380;
n=1:1:39;
y=[0.42 0.59 0.75 0.89 0.90 0.90 0.90 0.89 0.89 0.89 0.89 0.89 0.89 0.88 0.88 0.88 0.88...
0.88 0.87 0.87 0.87 0.88 0.88 0.88 0.88 0.89 0.89 0.89 0.89 0.88 0.90 0.90 0.90 0.88 0.86 0.82 0.79 0.75 0.70];
axis();
Tr=[30.50 43.10 57.40 57.77 57.97 57.90 57.70 57.70 57.70 57.70 57.70 57.70 57.70 57.67 57.67 57.67 57.67 57.63 57.63 57.67...
57.67 57.67 57.67 57.67 57.67 57.67 57.67 57.67 57.67 57.63 57.63 57.63 57.63 57.67 57.57 57.50 57.50 57.50 57.50];
w=[1.00 1.00 1.00 1.00 0.89 0.82 0.88 0.85 0.84 0.84 0.83 0.80 0.80 0.78 0.78 0.77 0.77 0.78 0.76 0.81 0.76 0.78 0.80 0.76...
0.78 0.77 0.78 0.76 0.75 0.72 0.73 0.74 0.77 0.78 0.77 0.85 0.87 0.90 0.93];
t2=[50.00 50.00 50.00 50.00 47.00 48.00 43.00 43.00 43.00 43.00 43.00 42.00 41.00 40.00 40.00 39.00 39.00 38.00 38.00 38.00 38.00...
39.00 38.00 37.00 37.00 37.00 37.00 37.00 37.00 37.00 36.00 36.00 37.00 37.00 37.00 38.00 40.00 43.00 44.00]
t1=[50.00 50.00 50.00 50.00 44.00 43.00 39.00 39.00 39.00 38.00 37.00 36.00 36.00 36.00 35.00 35.00 35.00 34.00 34.00 34.00 34.00...
34.00 34.00 34.00 34.00 34.00 33.00 33.00 33.00 33.00 32.00 32.00 33.00 34.00 33.00 34.00 36.00 39.00 40.00]
e=t2-t1
s=w.*e
c=4.02*exp(1.99*10^-4*Tr)
hr=11*1.64*10^6+157.2*Tr
z=1./hr
if t<=60
f=0;m=f*(Tr-20)
elsef=1;
m=f*(Tr-20)
end
k=m+s;
d=c.*k.*z;
out=(1011.0-0.4484*x).*d
z=quad('fun',0,t);
plot(t,z);
运行的时候总是说x没有定义
求助
z=quad('fun',0,t);不会使用这个积分函数 原帖由 zhaowei_1003 于 2007-4-11 11:15 发表z=quad('fun',0,t);不会使用这个积分函数
看看matlab的例子:
Example:
Q = quad(@myfun,0,2);
where myfun.m is the M-file function:
%-------------------%
function y = myfun(x)
y = 1./(x.^3-2*x-5);
%-------------------%
or, use a parameter for the constant:
Q = quad(@(x)myfun2(x,5),0,2);
where myfun2 is the M-file function:
%----------------------%
function y = myfun2(x,c)
y = 1./(x.^3-2*x-c);
%----------------------% 原帖由 dingd 于 2007-1-6 21:58 发表
很抱歉啊,公式里弄错一个符号导致错误结果。
这类非线性方程组,Matlab可以解,但难点是初值不好定。五楼flybaly的Matlab代码中的初值不知是如何定出的?有何诀窍?不会是先参照 1stOpt的计算结果吧?:lol...
土问1stOpt采用什么算法啊,求解非线性方程组初值的选择很头疼的,用一些全局收敛算法速度又慢 原帖由 grta 于 2007-4-12 13:32 发表
土问1stOpt采用什么算法啊,求解非线性方程组初值的选择很头疼的,用一些全局收敛算法速度又慢
一个软件,不是算法 原帖由 dingd 于 2007-1-7 00:30 发表 http://forum.vibunion.com/forum/images/common/back.gif
xjzuo估计用的是1.5破解版,如果用2.0,应用“麦考特+通用全局优化”,则几乎以100%的概率收敛到最优。
Matlab是公认的数学老大,无其它能比,但在全局优化方面,的确不如1stOpt。如汝言“每种软件都有其长处 ...
2.0版本哪里下载?没有找到啊,我在北方,教育网,给个速度快的地址!谢谢先
页:
1
[2]