24小时热门版块排行榜    

查看: 2197  |  回复: 22

月只蓝

主管区长 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
CODE:
function zhuhanshu
clear all;clc
format short
global e
L0=[0.5 0.5];
e1=linspace(0.07,0.1,10);
for j=1:length(e1)
    e=e1(j);
    L=fsolve(@zihanshu,L0);
    L1(j)=L(1);
    L2(j)=L(2);
end
[e1' L1' L2']


function f=zihanshu(x)
global e
A=-0.30714;
B=0.12966;
alpha=0.0206;
L1=x(1);
L2=x(2);
f(1)=A*alpha*sin(alpha*(L2-L1))-B*alpha*cos(alpha*(L2-L1))+e;
f(2)=A*cos(alpha*(L2-L1))-B*sin(alpha*(L2-L1));

MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
11楼2014-06-13 14:42:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

waterque

金虫 (正式写手)

【答案】应助回帖


感谢参与,应助指数 +1
fegg7502: 金币+1, 鼓励交流 2014-09-11 07:00:12
设x = L2 - L1,
f(x) = Acos(ax) + Bsin(ax) % a ---> alpha
则f'(x) = -Aasin(ax) + Bacos(ax)
那么你的问题就变成:
f(x) = 0;
f'(x) = epsilon_m;

并不能得到具体的L1, L2.
行自己的路:waterque@hotmail.com
12楼2014-06-13 18:23:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

waterque

金虫 (正式写手)

【答案】应助回帖


fegg7502: 金币+1, 鼓励交流 2014-09-11 07:00:20
引用回帖:
12楼: Originally posted by waterque at 2014-06-13 18:23:44
设x = L2 - L1,
f(x) = Acos(ax) + Bsin(ax) % a ---> alpha
则f'(x) = -Aasin(ax) + Bacos(ax)
那么你的问题就变成:
f(x) = 0;
f'(x) = epsilon_m;

并不能得到具体的L1, L2.

matlab代码:
clear;
A = -0.30714;
B = 0.12966;
a = 0.0206;
epm = linspace(0.07,0.1,10);
x = -1500:0.01:1500;
f = A*cos(a*x)+B*sin(a*x);
h = -B*a*cos(a*x)+A*a*sin(a*x);
plot(x,f)
hold on;
plot(x,x*0,'r');

for k = 1:length(epm)
    plot(x,h+epm(k),'g');
end
hold off;

说明:分别画出两个函数的曲线来,其中一个是f(x), 另一个是 h(x) = -f'(x) + epsilon_m;
方程组的解是这两个曲线相交于横轴的点。但从图中看的话,h(x)最小的值也是在横轴上方的,所以无实数解。
求高手解方程组(应该不难)
curves.jpg

行自己的路:waterque@hotmail.com
13楼2014-06-13 18:54:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Littlecaesar

银虫 (小有名气)

引用回帖:
13楼: Originally posted by waterque at 2014-06-13 18:54:15
matlab代码:
clear;
A = -0.30714;
B = 0.12966;
a = 0.0206;
epm = linspace(0.07,0.1,10);
x = -1500:0.01:1500;
f = A*cos(a*x)+B*sin(a*x);
h = -B*a*cos(a*x)+A*a*sin(a*x);
plot(x,f)
hold on;
...

非常感谢大神的回复,一个方程正是另外一个求导所得。刚开始我以为是解方程有问题所以给出了其中一组特殊值。但是我的方程是对应的一个具体问题。我也想画一个你画的那个图,但是里面有个参数B是跟待求的一个未知数有关的,所以就不知道图该怎么画了。下面我把问题列出来大神再帮我看看好吗?
求高手解方程组(应该不难)-1
Untitled.png

14楼2014-06-14 00:08:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Littlecaesar

银虫 (小有名气)

引用回帖:
11楼: Originally posted by 月只蓝 at 2014-06-13 14:42:24
function zhuhanshu
clear all;clc
format short
global e
L0=;
e1=linspace(0.07,0.1,10);
for j=1:length(e1)
    e=e1(j);
    L=fsolve(@zihanshu,L0);
    L1(j)=L(1);
    L2(j)=L(2);
end



...

谢谢回复,这组数据已被证明无解。能再帮忙看看14楼的问题吗?
15楼2014-06-14 00:11:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Littlecaesar

银虫 (小有名气)

引用回帖:
10楼: Originally posted by dingd at 2014-06-13 09:34:14
方程、系数等都对吗?似乎没有实数解。

谢谢版主回复,这组数据已被楼下的大神证明没有实数解。能帮我再看看14楼吗?6楼是问题的原始程序!
16楼2014-06-14 00:13:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

waterque

金虫 (正式写手)

【答案】应助回帖

引用回帖:
14楼: Originally posted by Littlecaesar at 2014-06-14 00:08:57
非常感谢大神的回复,一个方程正是另外一个求导所得。刚开始我以为是解方程有问题所以给出了其中一组特殊值。但是我的方程是对应的一个具体问题。我也想画一个你画的那个图,但是里面有个参数B是跟待求的一个未知数 ...

这其实就是解一个二元的方程的组,有第二个式子解出B的表达式,然后代入第一个式子中。然后得到 x = L2 - L1, 在利用B的定义解L1.

matlab codes:

function [] = functionsolver( G )


t_max = 0.52E-6;
delta_i = 0.0055;
E_g = 1;

delta_f = 2*G/t_max;
h = 0.0004;
belta = 0.4873;
alpha = sqrt(t_max*(delta_f - delta_i)/E_g/h);

A = delta_i - delta_f;

epsilon_m = linspace(0.07,0.12,100);

% x = L2 - L1;
x = asin(-A*alpha./epsilon_m)/alpha;

B = -A*cos(alpha*x)./sin(alpha*x);

L1 = acoth(alpha*B/delta_i/belta)/belta;

L2 = x + L1;

%plot the curves: L1 V.S. ε, L2 V.S. ε
figure(100)
subplot(1,2,1)
plot(epsilon_m,L1,'r');
subplot(1,2,2)
plot(epsilon_m,L2,'b');

end

注:G取比较大的值时,无实数解,G去比较晓得值时,都有实数解。取中间某些值时,对于部分ε有实数解,部分没有。 (有无实数解的关键是看 sinax 的绝对值是否不超过1, a = alpha).

思路应该就是这样的,具体的还请楼主再仔细推导一番,程序已经调试无误,运行时需要给G的值,若结果没有提醒忽略虚数部分,则说名得到的都是实数解,反之包含虚数解。

图中给出的是主要的几个等式,和G=0.2E-6时的结果。
求高手解方程组(应该不难)-2
math.png


求高手解方程组(应该不难)-3
curves.png

行自己的路:waterque@hotmail.com
17楼2014-06-14 13:39:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Littlecaesar

银虫 (小有名气)

引用回帖:
17楼: Originally posted by waterque at 2014-06-14 13:39:10
这其实就是解一个二元的方程的组,有第二个式子解出B的表达式,然后代入第一个式子中。然后得到 x = L2 - L1, 在利用B的定义解L1.

matlab codes:

function [] = functionsolver( G )


t_max = 0.52E-6;
...

太感谢大神了,你的精神让我佩服的五体投地。我只能说,要向你学习!
18楼2014-06-15 09:47:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Littlecaesar

银虫 (小有名气)

引用回帖:
17楼: Originally posted by waterque at 2014-06-14 13:39:10
这其实就是解一个二元的方程的组,有第二个式子解出B的表达式,然后代入第一个式子中。然后得到 x = L2 - L1, 在利用B的定义解L1.

matlab codes:

function [] = functionsolver( G )


t_max = 0.52E-6;
...

大神我还想请教下,这种函数不可以用fsolve直接解吗?
19楼2014-06-15 10:06:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

waterque

金虫 (正式写手)

引用回帖:
19楼: Originally posted by Littlecaesar at 2014-06-15 10:06:42
大神我还想请教下,这种函数不可以用fsolve直接解吗?...

应该可以吧,试试就知道了。
行自己的路:waterque@hotmail.com
20楼2014-06-15 10:57:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 Littlecaesar 的主题更新
信息提示
请填处理意见