jiansongliu 发表于 2011-5-27 18:36

求大家帮忙求解超越方程


matlab 学过一段时间,但是对于求解方程画图还是不会,尤其涉及到复数,特请大家帮忙求解画图或给予提示,万分感谢!

方程:

tan((((pi*omg)^2-kc^2)^(1/2)/2))/tan((((pi*r*omg)^2-kc^2)^(1/2)/2))+4*kc^2*((pi*omg)^2-kc^2)^(1/2)*((pi*r*omg)^2-kc^2)^(1/2)/((pi*omg)^2-2*kc^2)^2;

参数

r=0.58;

给予参数后,方程就剩余2个变量 omg 和 kc.
可以给你omg 的范围为[ 0:4]

画图是纵坐标为 omg, 横坐标为kc. 其中kc 有可能为复数。

万分感谢!

ChaChing 发表于 2011-5-28 21:54

本帖最后由 ChaChing 于 2011-5-29 00:52 编辑

复数没试成
syms r omg kc
ff=tan((((pi*omg)^2-kc^2)^(1/2)/2))/tan((((pi*r*omg)^2-kc^2)^(1/2)/2))+4*kc^2*((pi*omg)^2-kc^2)^(1/2)*((pi*r*omg)^2-kc^2)^(1/2)/((pi*omg)^2-2*kc^2)^2;
ff2=subs(ff,r,0.58); ezplot(ff2,[-2,10,0,4])

and ref : 关于MATLAB求解超越方程问题 http://forum.vibunion.com/thread-56792-1-1.html

jiansongliu 发表于 2011-5-29 12:27

呵呵,谢谢你的回复,已经帮忙很大了,我再试试复数,还是很希望跟你学习啊!

ChaChing 发表于 2011-5-29 12:41

回复 3 # jiansongliu 的帖子

互相学习!

jiansongliu 发表于 2011-5-29 12:52

我以前有二分法试着找,但是好像实数部分仍有好多根,画出的图比正确的图要多好几条线,所以试了两个星期都没有得到正确的。楼主给的方法提供给我了一个新的尝试,我再好好试试。楼主给我的方法简单,且明显比我画的要精确了多了,但还是有些不完全对,好像确了根如何和附件的图相比。

忘了给楼主说,正确的那个图中的黑线是上述方程的根,我再把一楼的那个帖子在编辑下一遍说的明白些。

下面的附件是我用二分法话的


jiansongliu 发表于 2011-5-29 13:05

本帖最后由 jiansongliu 于 2011-5-29 13:07 编辑

晚了,已经不能编辑了,那我就再这个帖子中说下:

事实上,有两个相似的方程,方程1称为对称波方程,方程2为反对称方程,这里我再把正确的图上传一遍,这个图中的黑线为方程1画出的曲线,浅色的线为方程1画出的曲线,

方程1 tan((((pi*omg)^2-kc^2)^(1/2)/2))/tan((((pi*r*omg)^2-kc^2)^(1/2)/2))+4*kc^2*((pi*omg)^2-kc^2)^(1/2)*((pi*r*omg)^2-kc^2)^(1/2)/((pi*omg)^2-2*kc^2)^2;

方程2 tan((((pi*omg)^2-kc^2)^(1/2)/2))/tan((((pi*r*omg)^2-kc^2)^(1/2)/2))+((pi*omg)^2-2*kc^2)^2/(4*kc^2*((pi*omg)^2-kc^2)^(1/2)*((pi*r*omg)^2-kc^2)^(1/2));


参数 r=0.58
位置变量为 omg 和kc. 画图的变量范围分别为 omg from 0 to 4. kc from 0 to 12. 如果去kc为复数,范围为-3i to 0.

正确图附件:

jiansongliu 发表于 2011-5-29 13:10

还是希望大家给提供思路或者方法。

jiansongliu 发表于 2011-5-29 13:17

有时间的话,chaching朋友再帮我想想办法,呵呵,很着急想画出它来。这里我感谢你和大家了。

ChaChing 发表于 2011-5-30 00:24

有时候, 专业不同还真难出手!

jiansongliu 发表于 2011-5-30 10:57

呵呵,是的啊!没关系的,已经帮忙很多了!

qibbxxt 发表于 2011-5-31 09:33

你这图具体的是什么意思,横坐标和纵坐标分别代表什么含义,上面的字母是什么意思?

ainianiuniu1 发表于 2011-5-31 09:53

好文章啊 谢谢楼主

jiansongliu 发表于 2011-5-31 09:54

回复 11 # qibbxxt 的帖子

纵坐标为未知变量omg and 横坐标为未知变量 kc, 而曲线中的字母 S 代表用方程1 得到的,而A曲线是由方程2 得到。

qibbxxt 发表于 2011-5-31 17:04

写了一段代码,好像不对,供你参考clear;clc;close all
r=0.58;
f1 = @(kc,omg)tan((((pi*omg)^2-kc^2)^(1/2)/2))/tan((((pi*r*omg)^2-...
    kc^2)^(1/2)/2))+4*kc^2*((pi*omg)^2-kc^2)^(1/2)*((pi*r*omg)^2-...
    kc^2)^(1/2)/((pi*omg)^2-2*kc^2)^2;
f2 = @(kc,omg)tan((((pi*omg)^2-kc^2)^(1/2)/2))/tan((((pi*r*omg)^2-...
    kc^2)^(1/2)/2))+((pi*omg)^2-2*kc^2)^2/(4*kc^2*((pi*omg)^2-...
    kc^2)^(1/2)*((pi*r*omg)^2-kc^2)^(1/2));
h1 = ezplot(f1,[-2 9 0 3.5]);
hold on
h2 = ezplot(f2,[-2,9,0,3.5]);
set(h1,'color','k','Linew',4);
set(h2,'color','r','LineW',4);

jiansongliu 发表于 2011-5-31 17:56

恩,太感谢了,我好好利用琢磨下,呵呵!
页: [1] 2
查看完整版本: 求大家帮忙求解超越方程