公告:1)网站程序升级:Q2A升级到1.8.6,Wordpress升级到5.7.2
2)修复了头像加载慢与提交问题反应慢等问题
2021-06-16

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

语法高亮:在编辑器中点击

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

支持LaTex数学公式
行内公式标识符:\$ 或“$\backslash ($”+“$\backslash )$”,
行间公式标识符:\$\$ 或 “$\backslash [$”+“$\backslash ]$”

社区建议QQ群:365716997

分类

+1 投票
1.8k 浏览

想绘制一条二维曲线,由于涉及到隐函数组,不知道该怎么处理为好...

当然,绘制y-a图像比较容易,因为

Solve[10 (1 - a) (x - 3 a)^3 == (2 a)^2, x]

会很容易舍弃多余的两个复根,但是求a的表达式就复杂的多了,求大家想个最好通用点的方法,求解隐函数组绘图问题...

另一个函数表达式附上:

y = 2 a/(1 + x - 2 a)

 

分类:绘图 | 用户: mma-2-2-2 (1.3k 分)
修改于 用户:mma-2-2-2
你能不能把你的图片旋转90度再上传。。。
我已经裁剪过,重新编辑了,麻烦您看一下怎么解决...
是不是一歪脖子就听见“咔吧咔吧”响?(*手动滑稽*)
那个电脑转过后上传时还是颠倒了,我已经裁剪过,重新编辑了,麻烦您看一下怎么解决...

2 个回答

+2 投票
 
已采纳
solAll = Solve[10 (1 - a) (x - 3 a)^3 == (2 a)^2, x];
Plot[#, {a, 0, 1}] & /@ solAll[[All, 1, 2]]
sol = First@solAll;
xRange = FunctionRange[{sol[[1, 2]], 0 <= a <= 1}, a, x]
yRange = FunctionRange[{2 a/(1 + x - 2 a) /. sol, 0 <= a <= 1}, a, 
   y] // N
Eliminate[{10 (1 - a) (x - 3 a)^3 == (2 a)^2, 
  y == 2 a/(1 + x - 2 a)}, a]
ContourPlot[Evaluate@%, {x, 0, 100}, {y, 0, yRange[[-1]]}, 
 PlotPoints -> 100]

写的有点乱,随便看看。

用户: 苹果 (2.2k 分)
采纳于 用户:mma-2-2-2
好的,谢谢苹果,我自己也多想想试试...
如何在最终绘出的y-x图形上标出最大值位置(用实心圆点标注),和最大值的坐标...
因为涉及到隐函数求极值...
ClearAll["Global`*"]
NMaximize[{y,
  Eliminate[y == 2 a/(1 + x - 2 a) && 10 (1 - a) (x - 3 a)^3 == 4 a^2,
    a], {x, y} \[Element] Reals}, {x, y}, MaxIterations -> 200
 ](*增大迭代次数才可以得出正确答案,否则算错了还什么都不说*)
+3 投票

一个纯数值的做法

ContourPlot[(1 - a) (x - 3 a)^3 == (2 a)^2, {a, 0, 1}, {x, 0, 100}, 
   PlotPoints -> 50, MaxRecursion -> 3] // 
  Cases[Normal@#, 
    Line[pts_] :> (pts /. {a_Real, x_Real} :> {x, (2 a)/(
         1 + x - 2 a)}), Infinity] & // ListLinePlot

修改一下减小计算量

ContourPlot[(1 - a) (x - 3 a)^3 == (2 a)^2, {a, 0, 1}, {x, 0, 100}] //
   Cases[Normal@#, 
    Line[pts_] :> (pts /. {a0_Real, 
         x0_Real} :> {x0, (2 a)/(1 + x0 - 2 a) /. 
          FindRoot[(1 - a) (x0 - 3 a)^3 == (2 a)^2, {a, a0}]}), 
    Infinity] & // ListLinePlot

 

用户: 无影东瓜 (1.2k 分)
修改于 用户:无影东瓜
这个好,学习了~
...