[已解决] 请教fminbnd求解最小值

[复制链接]
蒲公英2222 发表于 2022-11-10 15:28:23
本帖最后由 蒲公英2222 于 2022-11-10 15:52 编辑

代码没什么问题,为什么总是出不来结果呢?
A=10;
z = sym('z');
t = sym('t');
w1=erfc(A*z*t^(z^2))*t^(-1/2);
w=@(z)(1/4)*int(w1,t,0,1);
z=fminbnd(w,0,1)


最佳答案


TouAkira 发表于 2022-11-11 06:50:46
应该用用 数值积分integral函数(超链接)  或 数值积分trapz函数(超链接) 等数值方法,而不是用 符号积分int函数(超链接) 去求。改成
w = @( z ) ( 1 / 4 ) * integral( @( t ) erfc( A .* z .* t .^ ( z.^2 ) ) .* t.^( -1 / 2 ), 0, 1 );
z = fminbnd( w, 0, 1 )

5 条回复


shihe 发表于 2022-11-10 22:18:07
参考下:
目标函数值(最小): 0.000605761115038551
z: 0.324445061703667

TouAkira 发表于 2022-11-11 06:50:46
应该用用 数值积分integral函数(超链接)  或 数值积分trapz函数(超链接) 等数值方法,而不是用 符号积分int函数(超链接) 去求。改成
w = @( z ) ( 1 / 4 ) * integral( @( t ) erfc( A .* z .* t .^ ( z.^2 ) ) .* t.^( -1 / 2 ), 0, 1 );
z = fminbnd( w, 0, 1 )
回复此楼

蒲公英2222 发表于 2022-11-11 09:43:29
shihe 发表于 2022-11-10 22:18
参考下:
目标函数值(最小): 0.000605761115038551
z: 0.324445061703667

感谢您的帮助,与我的答案很接近了,我试了楼下的代码,与我的数据结果完全一样

蒲公英2222 发表于 2022-11-11 09:45:57
TouAkira 发表于 2022-11-11 06:50
应该用用 数值积分integral函数(超链接)  或 数值积分trapz函数(超链接) 等数值方法,而不是用 符号积 ...

非常非常感谢您的帮助,与我的数据结果是一样的

蒲公英2222 发表于 2022-11-14 16:21:43
TouAkira 发表于 2022-11-11 06:50
应该用用 数值积分integral函数(超链接)  或 数值积分trapz函数(超链接) 等数值方法,而不是用 符号积 ...

您好!请问可以帮我看一下代码吗?我现在这个代码我感觉过程没有问题,但是结果一直显示Empty sym: 0-by-1。
代码如下:
clear all
clc

ber = 1*10^(-5);
z = sym('z');
v = sym('v');
r = sym('r');
% R = integral( @( r ) erfc(r) .* r .^ (1 ./ (2.*z .^ 2)-1), 0, v .* z);
R = int( erfc(r) * r ^ (1 / (2 * z ^ 2)-1), 0, v * z);      %int用于符号计算的积分符号
w = (1 / (4 * z ^ 2)) * (1 / (v * z)) * R;
% dw_dz = diff( w, z ); %对w求偏导数

%用文章公式11推导好的偏导数的公式
w1 = exp(-v^2*z^2*exp(-4*r*z^2)-r-2*r*z^2) * (1-4*r*z^2);
dw_dz = -v/pi^0.5*int(w1, 0, 1/(4*z^2)) - v/pi^0.5*int(w1, 1/(4*z^2), inf);


%求解w=M和dw/dz=0的方程组的解v和z
[v,z] = solve(str2sym(' w == ber '), str2sym(' dw_dz == 0 '), v, z )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表