24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2357  |  回复: 4
【悬赏金币】回答本帖问题,作者白寒冰将赠送您 20 个金币
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

白寒冰

新虫 (小有名气)

[求助] matlab的fsolve函数求解隐函数绘图,遇到复数解怎么办已有1人参与

用fsolve求解隐函数绘图,有的显示无解,这个图应该是蝶形的,但是不对,代码如下。可能是因为忽略了复数,因此又对结果进行判断,复数单独绘制,但是还是不对,求大神解答。
%用fsolve绘图
clc
clear all;
theta0=pi/1000:pi/1000:2*pi;
for i=1:length(theta0)
    theta=theta0(i);
    C=3; D=(5/36)*pi; a=2; P3=20; E=8;
    K1=9*(1-E)^2;
    K2=-12*(1-E)^2+6*(1-E^2)*cos(2*theta);
    K3=10*(1-E)^2*(cos(2*theta))^2-4*(1-E)^2*(sin(D))^2*(cos(2*theta))^2-2*(1-E)^2*(sin(2*theta))^2-4*(1-E^2)*cos(2*theta)+(1+E)^2;
    K4=-4*(1-E)^2*cos(4*theta)+2*(1-E^2)*cos(2*theta)-4*(1-E^2)*(sin(D))^2*cos(2*theta)-(4*C*(1-E)*sin(2*D)*cos(2*theta))/P3;
    K5=(1-E)^2-(sin(D))^2*(1+E+(2*C*cos(D))/(P3*sin(theta)))^2;
    fun=@(r) K1*(a/r)^8+K2*(a/r)^6+K3*(a/r)^4+K4*(a/r)^2+K5;
    r_sln=fsolve(fun,pi/10);
    if  isreal(r_sln)==1
        r0(i)=r_sln;
    else
        r1(i)=abs(r_sln);
        bdelta = angle(r_sln);
    end
   
end
polar(theta0,r0,'. r'),hold on
polar(bdelta,r1,'. y')

matlab的fsolve函数求解隐函数绘图,遇到复数解怎么办
12.png


matlab的fsolve函数求解隐函数绘图,遇到复数解怎么办-1
13.png


matlab的fsolve函数求解隐函数绘图,遇到复数解怎么办-2
14.png


matlab的fsolve函数求解隐函数绘图,遇到复数解怎么办-3
微信截图_20210127110318.png
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

白寒冰

新虫 (小有名气)

引用回帖:
2楼: Originally posted by hzlhm at 2021-01-27 18:31:54
从你的代码看有多个解,fsolve只能得到一个解,建议用solve函数求解。

改成solve更不行,会报错

发自小木虫Android客户端
3楼2021-01-28 12:29:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

hzlhm

至尊木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
从你的代码看有多个解,fsolve只能得到一个解,建议用solve函数求解。
QQ:2120156492
2楼2021-01-27 18:31:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hzlhm

至尊木虫 (著名写手)

QQ:2120156492
4楼2021-01-28 12:54:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

白寒冰

新虫 (小有名气)

引用回帖:
4楼: Originally posted by hzlhm at 2021-01-28 12:54:20
你用solve,是怎么写?

哎呀,这个id不是百度知道上回复我那个大神吗?,我直接把fsolve改成solve了

发自小木虫Android客户端
5楼2021-01-28 15:05:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
不应助 确定回帖应助 (注意:应助才可能被奖励,但不允许灌水,必须填写15个字符以上)
信息提示
请填处理意见