作业帮 > 综合 > 作业

matlab:二元函数带参数,求函数值模取最小时,相对应的函数值

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/21 11:26:42
matlab:二元函数带参数,求函数值模取最小时,相对应的函数值
函数是f(x,y),含有参数a,a的取值是[0,1].输入一组(x,y),a会在[0,1]上相应变化,求相应的f 的模取最小时,对应的函数值,比如,输入(1,2),a在[0,1] 上变化,使得 f= -1 时的模最小.输出函数值 -1 .
这是个调用函数,在别的程序中要用到,就是每输入一组(x,y),都会用到那个最小的函数值.
程序如下:建立两个m文件
函数f(x,y)m文件
function f=myfun0(x,y)
syms a
f=a*x+y;%f(x,y)函数.改成你的.这里只是例子.
求最小函数值m文件:
function ymin=myfu(x0,y0)
x=x0;
y=y0;
a=0:0.001:1; %a的取值
y=myfun0(x,y);
ymin=min(eval(y));%最小值
然后在command window中输入类似如下:
ymin=myfu(x0,y0) %其中x0,y0换成输入的坐标.
输入举例:
ymin=myfu(1,2)
结果
ymin =
2 %就是f=a*x+y的最小值为2,a的取值是[0,1]
再问: 您好,是找函数值模最小时,相应的函数值。比如您的例子中,假如-1的模最小,是1,那么输出的是 -1,这样应该在哪里做改动?谢谢!
再答: 需要修改的程序:我多加了部分求最小值。 function ymin=myfu(x0,y0) x=x0;y=y0;a=0:0.001:1; %a的取值 y=myfun0(x,y); ymin0=min(eval(y));%最小值 ymin=min(abs(eval(y)));%模最小值 disp(['函数模最小值' num2str(ymin) ',函数最小值' num2str(ymin0)])%显示结果 在command window中输入:(试试下面的) ymin=myfu(-1,-2) 结果: 函数模最小值2,函数最小值-3 ymin = 2
再问: 可能是我刚才表达的不清楚, 是这个意思,如果使得模取得最小的函数值是正的,那就输出这个函数,如果使得模最小的函数值是负的,就输出这个负数。 举个例子:一组数值 -3,-1,2,4。 模最小是 1,所以输出 -1。 我是在别的文件里要用到这个 -1, 麻烦您了!
再答: 改好了。记得多赞啊!!! function ymin=myfu(x0,y0) x=x0;y=y0; a=0:0.001:1; %a的取值 y=myfun0(x,y); ymin0=min(eval(y));%最小值 ymin1=min(abs(eval(y)));%模最小值 a=find(min(abs(eval(y))))*0.001-0.001; ymin=eval(y);%模最小对应的函数值 disp(['函数模最小值' num2str(ymin1) ',函数值' num2str(ymin) ',函数最小值' num2str(ymin0)])