楼主: absolion
979 3

[问答] 如何画类似 f(x,y)=0 这种函数的图? [推广有奖]

  • 0关注
  • 0粉丝

小学生

28%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
33 点
帖子
2
精华
0
在线时间
9 小时
注册时间
2017-3-20
最后登录
2020-5-22

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
以前画的都是比较简单的y=f(x),
今天遇到一个比较复杂的f(x,y)=0 ,(比如说圆形就是 (x-a)^2+(y-b)^2=0)

直接求解成y=f(x)会比较复杂,而且一个x对应好几个y(因为有平方,三次方)、

有没有函数可以直接画出f(x,y)=0的图呢?

谢谢。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:有没有 如何 而且

沙发
Waterloo19 发表于 2017-3-20 13:48:44 |只看作者 |坛友微信交流群
能凑合用吗?

### f(x, y) = (x-2)^2 + (y-2)^2 + 2*y^3- 16

fr <- function(z) {
  x <- z[1]
  y <- z[2]
  abs((x-2)^2 + (y-2)^2 + 2*y^3- 16)
}

mat <- t(sapply(X = 1:20000, FUN = function(x){
  optim(c(rnorm(1),rnorm(1)), fr)$par}) )

range(mat[, 1])
range(mat[, 2])

mat <- t(sapply(X = 1:50000, FUN = function(x){
  optim(c(runif(1, range(mat[, 1])),runif(1,range(mat[, 2]))), fr)$par}) )

colnames(mat) <- c("x", "y")
dat <- data.frame(mat)

dat1 <- dat2 <- dat
dat1[dat1$x>=-2, ] <- NA   #change this when needed
dat2[dat2$x<=+6, ] <- NA #change this when needed

library(ggplot2)
ggplot(data=dat, aes(x=dat$x, y=dat$y)) +
  geom_point(size=0.05) +
  geom_line(data=dat1, aes(x=dat1$x, y=dat1$y))+
  geom_line(data=dat2, aes(x=dat2$x, y=dat2$y))
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
admin_kefu + 30 + 2 + 2 + 2 热心帮助其他会员

总评分: 论坛币 + 30  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

使用道具

藤椅
Waterloo19 发表于 2017-3-20 13:59:58 |只看作者 |坛友微信交流群
### f(x, y) = (x-2)^2 + (y-2)^2 + 2*y^3- 16

fr <- function(z) {
  x <- z[1]
  y <- z[2]
  abs((x-2)^2 + (y-2)^2 + 2*y^3- 16)
}

mat <- t(sapply(X = 1:20000, FUN = function(x){
  optim(c(rnorm(1),rnorm(1)), fr)$par}) )
colnames(mat) <- c("x", "y")
dat <- data.frame(mat)
library(ggplot2)
ggplot(data=dat, aes(x=dat$x, y=dat$y)) +
  geom_point(size=0.05)


range(mat[, 1])
range(mat[, 2])

mat <- t(sapply(X = 1:50000, FUN = function(x){
  optim(c(runif(1, range(mat[, 1])),runif(1,range(mat[, 2]))), fr)$par}) )
colnames(mat) <- c("x", "y")
dat <- data.frame(mat)

dat1 <- dat2 <- dat
dat1[dat1$x>=-2, ] <- NA
dat2[dat2$x<=+6, ] <- NA

ggplot(data=dat, aes(x=dat$x, y=dat$y)) +
  geom_point(size=0.05) +
  geom_line(data=dat1, aes(x=dat1$x, y=dat1$y))+
  geom_line(data=dat2, aes(x=dat2$x, y=dat2$y))

使用道具

板凳
absolion 发表于 2017-3-26 17:40:32 |只看作者 |坛友微信交流群
Waterloo19 发表于 2017-3-20 13:59
### f(x, y) = (x-2)^2 + (y-2)^2 + 2*y^3- 16

fr
谢谢,学习了。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-4 13:49