搜索
bottom↓
回复: 32

方程y/2-sin(2*y)/4=x怎么解,x是自变量.

[复制链接]

出0入0汤圆

发表于 2014-1-20 18:25:31 | 显示全部楼层 |阅读模式
最关键是用计算机怎么解.

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入8汤圆

发表于 2014-1-20 18:28:11 来自手机 | 显示全部楼层
这是一个超越方程!

出0入0汤圆

发表于 2014-1-20 18:36:18 | 显示全部楼层
自变量是啥?

出0入0汤圆

 楼主| 发表于 2014-1-20 18:41:57 | 显示全部楼层
mtswz.213 发表于 2014-1-20 18:28
这是一个超越方程!

是的,而且还是一个隐函数.

出0入0汤圆

发表于 2014-1-20 19:00:02 | 显示全部楼层
matlab画曲线,眼看

出0入0汤圆

 楼主| 发表于 2014-1-20 19:02:20 | 显示全部楼层
johnsonzzd 发表于 2014-1-20 19:00
matlab画曲线,眼看

眼看没问题,问题是怎么用CPU求解

出0入0汤圆

发表于 2014-1-20 19:10:04 | 显示全部楼层
解析解没有。要数值解,《计算方法》有各种办法

出0入0汤圆

发表于 2014-1-20 19:12:07 | 显示全部楼层
穷举能解所有的方程
只不过时间问题

出0入0汤圆

发表于 2014-1-20 19:59:43 | 显示全部楼层
查表~~~~~~~~~~~~~~~~~~~~~

出0入93汤圆

发表于 2014-1-20 20:09:31 | 显示全部楼层
1、解单一方程:查表。
2、解任意方程:牛顿法。

出0入0汤圆

发表于 2014-1-20 20:38:50 | 显示全部楼层
牛顿法解f(y)=y/2-sin(2*y)/4-x=0,以y/2-x=0的解为初值,一定是收敛的。

出0入0汤圆

 楼主| 发表于 2014-1-20 20:59:36 | 显示全部楼层
K.O.Carnivist 发表于 2014-1-20 20:38
牛顿法解f(y)=y/2-sin(2*y)/4-x=0,以y/2-x=0的解为初值,一定是收敛的。

谢谢!我试试.

出0入0汤圆

发表于 2014-1-20 21:08:14 | 显示全部楼层
DSP这么高级啊

出0入0汤圆

 楼主| 发表于 2014-1-20 21:41:48 | 显示全部楼层
K.O.Carnivist 发表于 2014-1-20 20:38
牛顿法解f(y)=y/2-sin(2*y)/4-x=0,以y/2-x=0的解为初值,一定是收敛的。

不好意思,本人愚钝,不会用牛顿法解这个隐函数,望你能明示一下,感激不尽!

出0入0汤圆

发表于 2014-1-20 22:58:00 | 显示全部楼层
高级····

出0入0汤圆

发表于 2014-1-20 23:03:46 | 显示全部楼层
牛顿迭代方程,在谭浩强的C语言里递归里有个例子的

出10入23汤圆

发表于 2014-1-20 23:12:09 | 显示全部楼层
迭代!!!!

出0入0汤圆

 楼主| 发表于 2014-1-20 23:12:14 | 显示全部楼层
xukaiming 发表于 2014-1-20 23:03
牛顿迭代方程,在谭浩强的C语言里递归里有个例子的

这个是个隐函数啊

出0入0汤圆

发表于 2014-1-20 23:14:42 | 显示全部楼层
只要是某一区间是过0的曲线就可以求解

出0入0汤圆

 楼主| 发表于 2014-1-20 23:23:31 | 显示全部楼层
xukaiming 发表于 2014-1-20 23:14
只要是某一区间是过0的曲线就可以求解

这个是过0了的,能否明示一下,在下实在是愚钝.

出0入0汤圆

 楼主| 发表于 2014-1-21 00:08:03 | 显示全部楼层
好像懂了,编程试试看

出0入0汤圆

发表于 2014-1-21 00:08:00 来自手机 | 显示全部楼层
lqsoft 发表于 2 小时前
引用:   K.O.Carnivist 发表于 2014-1-20 20:38   
牛顿法解f(y)=y/2-sin(2*y)/4-x=0,以y/2-x=0的解为初值,一定是收敛的。  
不好意思...

f(y)=y/2-sin(2y)/4-x,f`(y)=1/2-cos(2y)/2。取初值y=2x,迭代y=y-a*f(y)/f`(y),直到f(y)的绝对值小于某小阈值,输出当前的y就是结果。这个方程取a=1应该就是收敛的。话说您是已知x要求y么?

出0入0汤圆

发表于 2014-1-21 00:13:05 | 显示全部楼层
里面有root 就是求解,多次递归,达到一定精度后退出

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2014-1-21 04:18:31 | 显示全部楼层
K.O.Carnivist 发表于 2014-1-21 00:08
f(y)=y/2-sin(2y)/4-x,f`(y)=1/2-cos(2y)/2。取初值y=2x,迭代y=y-a*f(y)/f`(y),直到f(y)的绝对值小于 ...

非常感谢,刚刚弄出来了,然后又来看论坛,方法和你是一样的,只是初值的选取优化了一下,我选的预估函数是acos(1-(4*x/pi))

出0入0汤圆

 楼主| 发表于 2014-1-21 04:19:23 | 显示全部楼层
再次感谢大家的帮助!感谢万能的论坛!!

出10入23汤圆

发表于 2014-1-21 07:55:29 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "math.h"

  4. typedef signed char int8_t;
  5. typedef unsigned char uint8_t;
  6. typedef signed short int16_t;
  7. typedef unsigned short uint16_t;
  8. typedef signed int int32_t;
  9. typedef unsigned int uint32_t;
  10. typedef float flt_t;
  11. typedef double lflt_t;

  12. int8_t _roll_cal_(lflt_t src, lflt_t* dst, lflt_t* limit, uint32_t n_max)
  13. {
  14.         lflt_t error;
  15.         for (*dst = src, *limit = *limit? *limit : 0 - *limit; n_max; n_max--)
  16.         {
  17.                 error = src - (*dst - sin(*dst));
  18.                 *dst += error / (1 - cos(*dst));
  19.                 if ((error < *limit) && (-error < *limit))
  20.                 {
  21.                         *limit = error;
  22.                         return 0;
  23.                 }
  24.         }
  25.         return -1;
  26. }

  27. int main(int argc, char** argv)
  28. {
  29.         lflt_t result, error = 0.0003;
  30.         if (_roll_cal_(6, &result, &error, 8))
  31.         {
  32.                 printf((const char*)"cal fail!\n");
  33.         }
  34.         printf((const char*)"error = %lf\n", error);
  35.         printf((const char*)"result = %lf\n", result - sin(result));
  36.         return EXIT_SUCCESS;
  37. }
复制代码

出0入0汤圆

发表于 2014-1-21 08:01:08 | 显示全部楼层
推荐lz看看数值分析,有好多解法的

出0入0汤圆

 楼主| 发表于 2014-1-21 10:04:27 | 显示全部楼层

这个是matlab之类的生成的?

出0入0汤圆

发表于 2014-1-21 10:20:26 | 显示全部楼层
你要解什么,我用y=x/2-sin(2*x)/4谷歌搜索直接就出图像了,这个和你的区别就是关于y=x这条只需做对称图形,或者你把x和y轴对调看

出10入23汤圆

发表于 2014-1-21 12:47:14 | 显示全部楼层
lqsoft 发表于 2014-1-21 10:04
这个是matlab之类的生成的?

纯C代码好不

出0入0汤圆

发表于 2014-1-21 13:01:22 | 显示全部楼层
用MATHMATICA 就很容易解  

出0入0汤圆

发表于 2014-1-21 13:12:40 | 显示全部楼层
解决了也发个解决的方法啊,后来人要是有同样的问题再发一遍帖子不是浪费吗?

出0入0汤圆

 楼主| 发表于 2014-1-21 14:31:56 | 显示全部楼层
goolloo 发表于 2014-1-21 13:12
解决了也发个解决的方法啊,后来人要是有同样的问题再发一遍帖子不是浪费吗? ...

f(y)=y/2-sin(2y)/4-x,f`(y)=1/2-cos(2y)/2。取初值y=2x,迭代y=y-a*f(y)/f`(y),直到f(y)的绝对值小于某小阈值,输出当前的y就是结果
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 22:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表