24小时热门版块排行榜    

查看: 2292  |  回复: 8

小刘8885

木虫 (正式写手)

[求助] Matlab,解复数方程

怎么解这个方程?如下图。其中x1和x2都为复数,q和a为已知的常数。x1和x2为数据文件,如下图所示。怎么导入x1和x2并解出一系列对应的y值,并且将求的的y值以类似x1的文件形式导出来,即分为实部和虚部导出?
公式



数据
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : shuju.txt
  • 2012-05-21 20:01:14, 2.77 K

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖


感谢参与,应助指数 +1
小刘8885: 金币+1, 谢谢参与 2012-05-21 21:10:47
用1stOpt试试,比较简单,下面假设q=3.5, a=0.25,以前10个数据为例计算:
CODE:
Constant q=3.5,a=0.25;
ConstStr x1=a1+b1*i,x2=a2+b2*i;
LoopConstant
a1=[1.43,1.44,1.46,1.45,1.45,1.44,1.45,1.45,1.44,1.44],
b1=[0.02,0.04,0.05,0.02,0.05,0.06,0.06,0.05,0.07,0.09],
a2=[0.009780429,0.019290123,0.023456558,0.009512485,0.023781213,0.028935185,0.028537455,0.023781213,0.033757716,0.043402778],
b2=[0.004890215,0.008768238,0.009773566,0.003658648,0.00849329,0.009645062,0.008917955,0.006994474,0.009377143,0.011421784];
ComplexStr = i;
ComplexPar y;
Function (1-q)*(x2-x1)/x2^a*y^a-y+x1=0;

y.实部        y.虚部
26.0549308935745        -3.39054421631229
21.3634333717575        -2.15713840435354
20.5571962148911        -1.69871196786957
27.2314765798707        -2.70147269442524
20.4345049478304        -1.33862681249657
19.0671427961527        -0.949477270203328
19.371747766277        -0.850707043007433
20.575089935508        -0.966582317014032
18.2424521984911        -0.447405238620689
16.8276617636246        -0.0454317407652095
2楼2012-05-21 20:54:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijie169

铜虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
小刘8885: 金币+8, ★★★很有帮助 2012-05-22 08:50:14
先列上matlab代码
CODE:
function f=main(name,a,q)
data=load(name);
x1=data(:,1)+data(:,2)*i;
x2=data(:,3)+data(:,4)*i;
x0=zeros(length(data),1);
f=fsolve(@(y)func(a,q,x1,x2,y),x0);
r=real(f);
r(:,2)=imag(f);
save('result.txt','r','-ascii');
function f=func(a,q,x1,x2,y)
f=(1-q).*(x1-x2)./x2^a.*y^a-y+x1;
end
end

首先,在matlab下面新建一个main.m的文件,复制上我写的代码。然后把数据文件拷贝到main.m的目录下。
name就是你的数据文件,里面除了列之间的数据,不能有其他的东西,数据文件的名字英文。a,q不用我多说
调用格式是:main('data.txt',1,5)
这是一个示例data.txt就像相当于你的文件的名字。

» 本帖已获得的红花(最新10朵)

3楼2012-05-22 07:09:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小刘8885

木虫 (正式写手)

送鲜花一朵
引用回帖:
3楼: Originally posted by lijie169 at 2012-05-22 07:09:32:
先列上matlab代码

function f=main(name,a,q)
data=load(name);
x1=data(:,1)+data(:,2)*i;
x2=data(:,3)+data(:,4)*i;
x0=zeros(length(data),1);
f=fsolve(@(y)func(a,q,x1,x2,y),x0);
r=real(f);
r(:,

谢谢!我将你的代码写入之后运行怎么出错了?这是什么原因呢?求解。
>> main('2.txt',1/3,0.96)
??? Error: File: D:\Matlab\work\main.m Line: 6 Column: 11
"identifier" expected, "(" found.
4楼2012-05-22 08:49:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小刘8885

木虫 (正式写手)

引用回帖:
3楼: Originally posted by lijie169 at 2012-05-22 07:09:32:
先列上matlab代码

function f=main(name,a,q)
data=load(name);
x1=data(:,1)+data(:,2)*i;
x2=data(:,3)+data(:,4)*i;
x0=zeros(length(data),1);
f=fsolve(@(y)func(a,q,x1,x2,y),x0);
r=real(f);
r(:,

还有就是能不能对每行的程序做个简单的注释?我是初学者,很多都不太明白,求高人赐教。感激不尽。
5楼2012-05-22 08:52:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijie169

铜虫 (著名写手)

建议使用2楼的方案,matlab解这个需要初始解,初始解给的不好,木有答案!!!!
6楼2012-05-22 09:36:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xcj3630385

木虫 (小有名气)

长江11号

function f= f_main(data, a, q)
x1 = data(:,1) + data(:,2)*i;
x2 = data(:,3) + data(:,4)*i;

x0 = zeros(length(data),1);
f = fsolve(@(y)func(a,q,x1,x2,y), x0)
r = [real(f), imag(f)];
save('result.txt','r','-ascii');

function f = func(a, q, x1, x2, y)
f = (1-q).*(x2-x1)./(x2.^a).*(y.^a) - y + x1;
%变形式。
长江11号
7楼2012-05-25 12:33:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xcj3630385

木虫 (小有名气)

长江11号

引用回帖:
7楼: Originally posted by xcj3630385 at 2012-05-25 12:33:54
function f= f_main(data, a, q)
x1 = data(:,1) + data(:,2)*i;
x2 = data(:,3) + data(:,4)*i;

x0 = zeros(length(data),1);
f = fsolve(@(y)func(a,q,x1,x2,y), x0)
r = ;
save('result.txt','r','-asci

调用方式如下:

clear all;
clc;

data = load('name.txt');  %name即调用文件的名字
a = 0.2;   %任意值
q = 0.06;  %任意值
f_main(data, a, q);
长江11号
8楼2012-05-25 12:37:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小刘8885

木虫 (正式写手)

引用回帖:
8楼: Originally posted by xcj3630385 at 2012-05-25 12:37:44
调用方式如下:

clear all;
clc;

data = load('name.txt');  %name即调用文件的名字
a = 0.2;   %任意值
q = 0.06;  %任意值
f_main(data, a, q);

9楼2012-05-25 12:41:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 小刘8885 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 欢迎发来filecode的Mz6后的代码验证其规律 +46 医学老男孩 2026-08-13 102/5100 2026-08-18 14:41 by qinwangshen
[基金申请] 重要消息,中午系统在维护 +5 yuleib84 2026-08-18 6/300 2026-08-18 14:34 by 阿荣喝酒
[硕博家园] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 KZyU1THERRVo 2026-08-18 4/200 2026-08-18 13:28 by vHWVV9D5Deb5
[基金申请] 今天维护系统维护 祝所有人 高中 +8 gjjjzhong 2026-08-18 9/450 2026-08-18 13:01 by 家与远方
[基金申请] 哪位老哥知道今年的国自然具体哪一天放榜? +13 Ldrop2023 2026-08-13 16/800 2026-08-18 12:25 by 淀粉搬运工
[基金申请] 2027广东省杰青 +3 奶牛小黑 2026-08-15 8/400 2026-08-18 11:47 by gltch
[基金申请] 快农历七夕节了,轻松一下,男人悄悄话,女施主请不要进来。 +4 Tide man 2026-08-14 5/250 2026-08-18 11:35 by Tide man
[论文投稿] 投稿咨询 +4 wwm09 2026-08-17 5/250 2026-08-18 11:25 by 無關想念
[基金申请] 时间戳变了,能看出什么问题? +5 基诺咪客 2026-08-17 6/300 2026-08-18 11:06 by hunter无悔
[基金申请] 感觉是下周放榜了 +6 angus9576 2026-08-17 11/550 2026-08-17 23:57 by angus9576
[基金申请] 今天系统多次维护,明天很可能放榜! +8 zju2000 2026-08-16 9/450 2026-08-17 12:20 by lmz0216
[基金申请] 咱们一起用铁证分析2026国家社科基金中标与否 +7 启萌科技 2026-08-12 26/1300 2026-08-16 12:35 by 启萌科技
[精细化工] 招聘 金属平磨液,抛光液研发工程师 +3 小天0311 2026-08-14 3/150 2026-08-16 07:31 by H9PLUS
[基金申请] 各位道友,我要去昆明玩几天,回来见。 +7 Tide man 2026-08-14 8/400 2026-08-15 01:11 by arzu_hma
[基金申请] 是这周出结果还是下周出结果? +4 yuleib84 2026-08-11 4/200 2026-08-14 23:05 by lfy8008
[基金申请] 重要来源:本周末出结果 +10 瞬息宇宙 2026-08-12 10/500 2026-08-13 15:46 by likettle
[基金申请] 不应该看fileCode +7 且听虎啸 2026-08-12 9/450 2026-08-13 14:27 by flydreamws
[基金申请] Filecode 又变了,巨变 +3 WH3796 2026-08-12 4/200 2026-08-13 14:13 by 小木虫6752397
[基金申请] 结合人工智能,周易传统文化,filecode打分制来了,3分以上希望很大。 +3 Tide man 2026-08-12 4/200 2026-08-13 08:35 by ZJTJZ
[基金申请] 2019年青年基金涵评意见,大家看看几个A,几个B? +11 Tide man 2026-08-11 11/550 2026-08-13 07:35 by 撸猫猫
信息提示
请填处理意见