MATLAB 函数中有3个自变量 其中1个自变量是另2个变量的函数,如何画图

MATLAB 函数中有3个自变量 其中1个自变量是另2个变量的函数,如何画图,第1张

syms x y p;

z = p+x+y; % 3 个自变量 p x y

p = xy; % p 是 x y 的函数

z = subs(z);

ezmesh(x,y,z);

function f = fun(x,flag)

if(nargin==1)

    f =(sin(x)+cos(x))/x;

else

    if(nargin==2)

        if(flag==1)

            f=sin(x)/x;

        else

            f= cos(x)/x;

        end

    end

end

需求:利用matlab求解二元函数 y=f(x1,x2)

=(339-001x1-0003x2)x1 +(399-0004x1-001x2)x2-(400000+195x1+225x2) 的最大值

步骤:1、syms x1 x2;

2、y=(339-001x1-0003x2)x1+(399-0004x1-001x2)x2-(400000+195x1+225x2) 得 y = - 195x1 - 225x2 - x1(x1/100 + (3x2)/1000 - 339) - x2(x1/250 + x2/100 - 399) - 400000

3、y=simple(y) 得 y = - x1^2/100 - (7x1x2)/1000 + 144x1 - x2^2/100 + 174x2 - 400000

4、求偏导 dydx1=diff(y,x1) 得 dydx1 = 144 - (7x2)/1000 - x1/50 dydx2=diff(y,x2) 得 dydx2 = 174 - x2/50 - (7x1)/1000

5、令偏导等于0,解方程 S=solve(dydx1,dydx2) 得 S = x1: [1x1 sym] x2: [1x1 sym]

6、显示结果 Sx1 得 ans = 554000/117 Sx2 得 ans = 824000/117

7、把得到的结果代入原f(x1,x2),求最大y值:

y=subs(y,x1,554000/117); y=subs(y,x2,824000/117) 得 y = 55364e+005

当然,该最大值是不是真正的最大值,还需要进一步结合实际情况验证(通过画出图形,观察二阶导数的符号等)。比如,syms x1 x2; y=(339-001x1-0003x2)x1+(399-0004x1-001x2)x2-(400000+195x1+225x2);然后使用 ezsurf(y,[0 10000],[0 10000]);就可以得到三维的图形如下图所示:

可以看到,在感兴趣区间内,函数是有最大值的,即上面求出的y = 55364e+005,在x1=554000/117,x2=824000/117处取得。

matlab的数据处理能力很强大,这款软件还能绘制各种函数图形。下面我将介绍用matlab画函数图形的方法,以在同一张图上画出y1=sin(x)和y2=sin^2(x)的图形为例。

输入自变量:

画已知的函数图形,用向量的方式表示自变量比较方便。代码为

x=linspace(0,8); % 用向量形式创建x。

输入因变量表达式:

y1=sin(x); % 向量y1的值为x坐标上某一x的s i n ( 2 x )值。

y2=(sin(x))^2 ; % 向量y2的值为( s i n ( x ) ) ^2,注意别忘记一点”“

使用plot命令画图:

plot(x,y1)

按回车,则画出y1=sin(x)的图形。

如果这时直接继续画y2=sin^2(x)的图形,则在另一张图中画,为了在同一张图中画两个函数图,输入下面代码:

hold on

再输入绘图命令:

plot(x,y2)

按回车,则在同一张图上画出了这两个函数的图形。可以通过菜单栏中的insert添加坐标名称,文本等。

其他函数的画法类似!

y2=(sin(x))^2,代码中别忘了括号后面的一点”"

希望对您有用!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12181691.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存