Matlab联立隐函数H(x,y1)和M(x,y2)求解新函数C(y1,y2)和因变量x的关系 |
您所在的位置:网站首页 › 联立方程组求解正则表达式怎么写 › Matlab联立隐函数H(x,y1)和M(x,y2)求解新函数C(y1,y2)和因变量x的关系 |
目录 1. 问题描述 2. 函数图像 2.1 隐函数H的图像 2.2 隐函数M的图像 3. 解决思路 3.1 初步思路 3.2 实际情况 3.3 解决方法 4. 完整代码 5. 交流讨论 1. 问题描述已知条件如下: ①隐函数H(x,y1) = exp(2*x-y1)*log(x-3*y1)-4 = 0 ②隐函数M(x,y2) = log(2*x-y2)/exp(x-2*y2)+3 = 0 现有函数y = C(y1,y2) = exp(1-y1*y2),求y和x在坐标轴范围x∈[2,10],y∈[0,25]的函数图像 2. 函数图像我们借助matlab的官方函数fimplicit绘制隐函数H和M的图像。 fimplicit函数接收两个参数,一个是匿名函数,一个是坐标轴范围。 2.1 隐函数H的图像 figure H = @(x,y) exp(2*x-y)*log(x-3*y)-4; bound = [2,10,0,25]; h = fimplicit(H, bound); title('隐函数H') 2.2 隐函数M的图像 %% 绘制隐函数M figure M = @(x,y) log(2*x-y)/exp(x-2*y)+3; bound = [2,10,0,25]; m = fimplicit(M, bound); title('隐函数M')3. 解决思路 3.1 初步思路 对于隐函数H(x1,y1)的图像,可以得到一组一一对应的向量x1和y1,同理对于隐函数M(x2,y2),也可以得到一组一一对应的向量x2和y2;如果这里的x1和x2完美契合,即x1向量和x2向量完全一致,不妨用x来表示x1和x2,那么只需要将y1向量和y2向量代入函数表达式y = C(y1,y2) = exp(1-y1*y2),计算得到y向量,利用plot(x, y)就可以得到目标函数图像。 3.2 实际情况 对于隐函数H,函数fimplicit不光绘制隐函数H在bound上的图像,还会返回该图像窗口,这里用h接收其返回的图像窗口 h = fimplicit(H, bound);在工作区内查看该h变量,可以发现其有子属性XData和YData,分别对应图像上各点的横纵坐标。 于是,利用fimplicit的返回值,可以得到隐函数H和M图像的x、y向量 %% 获取隐函数H的x1、y1向量 x1 = h.XData; y1 = h.YData; %% 获取隐函数M的x2、y2向量 x2 = m.XData; y2 = m.YData;遗憾的是,x1和x2并没有完全一致(完全一致的要求是x1和x2的长度首先需要一样,其次两个向量相减为0向量)。 3.3 解决方法对于这种情况,我们可以考虑对H的图像进行插值,人为地选取向量x = [x1, x2, ..., xn],并得到与其对应的yp1;同理,同样使用向量x = [x1, x2, ..., xn]对M的图像进行插值,得到与其对应的yp2,这样就建立了x与yp1、x与yp2的映射关系。 %% 设置x的插值点,对y1和y2进行插值 x = 2:0.5:10; %设置x的插值点 yp1 = interp1(x1, y1, x); %用x对y1重新插值得到yp1 yp2 = interp1(x2, y2, x); %用x对y2重新插值得到yp2进一步地,通过y = C(y1,y2) = exp(1-y1*y2),可以得到x与y的映射关系,从而绘制目标图像。 %% 计算及绘图 y = exp(1-yp1.*yp2); figure plot(x, y), title('x和y的图像') 4. 完整代码 clear, close all %% 绘制隐函数H figure H = @(x,y) exp(2*x-y)*log(x-3*y)-4; bound = [2,10,0,25]; h = fimplicit(H, bound); title('隐函数H') %% 绘制隐函数M figure M = @(x,y) log(2*x-y)/exp(x-2*y)+3; bound = [2,10,0,25]; m = fimplicit(M, bound); title('隐函数M') %% 获取隐函数H的x1、y1向量 x1 = h.XData; y1 = h.YData; %% 获取隐函数M的x2、y2向量 x2 = m.XData; y2 = m.YData; %% 设置x的插值点,对y1和y2进行插值 x = 2:0.5:10; %设置x的插值点 yp1 = interp1(x1, y1, x); %用x对y1重新插值得到yp1 yp2 = interp1(x2, y2, x); %用x对y2重新插值得到yp2 %% 计算及绘图 y = exp(1-yp1.*yp2); figure plot(x, y), title('x和y的图像') 5. 交流讨论 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |