牛顿型方法matlab,MATLAB中牛顿的方程组方法(Newton's Method for System of Equations in MATLAB)...

MATLAB中牛顿的方程组方法(Newton's Method for System of Equations in MATLAB)

我试图用方程系统实现牛顿方法,但我认为它不能正常工作。 我应该获得[60 22.5 -60]度的角度,但现在我得到[995 90 -230]度。 有人能看出我的代码有什么问题吗?

hold on

l = 2;

L1 = 1;

L2 = 1;

L3 = 1;

m1 = 1;

m2 = 1;

% The system of equations to solve

%l = L1cos(u1)+L2cos(u2)+L3cos(u3);

%0 = L1sin(u1)+L2sin(u2)+L3sin(u3);

%0 = m2tan(u1)-(m1+m2)tan(u2)+m1tan(u3);

u = [pi/3 pi/8 -pi/3]

for i = 1:10

F = [L1*cos(u(1))+L2*cos(u(2))+L3*cos(u(3))-l, L1*sin(u(1))+L2*sin(u(2))+L3*sin(u(3)), m2*tan(u(1))-(m1+m2)*tan(u(2))+m1*tan(u(3))];

DF = [-L1*sin(u(1)) -L2*sin(u(2)) -L3*sin(u(3)); L1*cos(u(1)) L2*cos(u(2)) L3*cos(u(3)); m2*sec(u(1))^2 -(m1+m2)*(sec(u(2))^2) m1*sec(u(3))^2];

u1 = u' + inv(DF)*F';

u = u1';

end

rad = u1;

deg = (180/pi)*u1;

I have tried to implement Newton's method for a system of equations, but I don't think it works correctly. I should get angles around [60 22.5 -60] degrees but right now I get [995 90 -230] degrees. Can someone see what's wrong with my code?

hold on

l = 2;

L1 = 1;

L2 = 1;

L3 = 1;

m1 = 1;

m2 = 1;

% The system of equations to solve

%l = L1cos(u1)+L2cos(u2)+L3cos(u3);

%0 = L1sin(u1)+L2sin(u2)+L3sin(u3);

%0 = m2tan(u1)-(m1+m2)tan(u2)+m1tan(u3);

u = [pi/3 pi/8 -pi/3]

for i = 1:10

F = [L1*cos(u(1))+L2*cos(u(2))+L3*cos(u(3))-l, L1*sin(u(1))+L2*sin(u(2))+L3*sin(u(3)), m2*tan(u(1))-(m1+m2)*tan(u(2))+m1*tan(u(3))];

DF = [-L1*sin(u(1)) -L2*sin(u(2)) -L3*sin(u(3)); L1*cos(u(1)) L2*cos(u(2)) L3*cos(u(3)); m2*sec(u(1))^2 -(m1+m2)*(sec(u(2))^2) m1*sec(u(3))^2];

u1 = u' + inv(DF)*F';

u = u1';

end

rad = u1;

deg = (180/pi)*u1;

原文:https://stackoverflow.com/questions/24269328

2020-07-09 06:07

满意答案

尝试替换以下行

u1 = u' + inv(DF)*F';

u1 = u' - inv(DF)*F';

当我做出这个改变时,我得到的解是[60,0,-60],它正确地解决了这三个方程式。

Try replacing the following line

u1 = u' + inv(DF)*F';

with

u1 = u' - inv(DF)*F';

When I make this change, the solution I get is [60,0,-60] which does correctly solve the three equations.

2014-06-17

相关问答

我认为 x = u - f(r)/fprime(r);

应该 x = u - f(u)/fprime(u);

如果你总是使用r ,你总是将x递减相同的值。 I think x = u - f(r)/fprime(r);

should be x = u - f(u)/fprime(u);

If you always use r, you're always decrementing x by the same value.

听起来这个问题对于fsolve来说太僵硬了,或者你的猜测开始很差。 但是,如果您可能想要使用参数化匿名函数,那么您所拥有的代码看起来很好: x = data1(:,1);

y = data1(:,2);

n = length(x);

p0 = [0 0 0 0];

options = optimset('Display','iter');

[p,fval] = fsolve(@(p) myfunc(p,x,y,n),p0,options);

那么myfunc : function F = m...

vpasolve是一个数值解算器(实际上, vpa代表可变精度算术 ),并且在方程中不能有符号参数。 因此,您应该将数值替换为所有的方程参数。 vpasolve is a numerical solver (in fact, vpa stands for variable-precision arithmetic), and you cannot have symbolic parameters in the equations. You should thus substitute numeri...

是的, solve将您的第二个输入a_tilde_sym(iRange)作为一组方程而不是要求解的变量。 这是有充分理由的。 前两个方程( bounday_conditions (sic))是根据标量变量a_tilde2和a_tilde3而不是向量[a_tilde2;a_tilde3] 。 您可以通过明确指出变量来解决此问题: s = solve(bounday_conditions, a_tilde_sym(2), a_tilde_sym(3))

要么 [a_tilde2,a_tilde3] ...

如果你真的想用fsolve解决这个问题,你可以这样做: o = optimoptions('fsolve','MaxFunEvals',1e5,'MaxIter',1e5);

x0 = [.9;2.1]; % Note this IS SENSITIVE to the starting location!

f = @(x) [(x(2) - 2) / x(1); log(x(2)) + log(x(1)) + 1 - 2/x(2)];

x = fsolve(f,x0, o)

If you R...

弄清楚了。 这是交易。 传递给fsolve的对象需要是一个指向函数的指针。 此函数需要评估系统中的每个方程,并返回一个矩阵,其中包含每个方程的数值结果。 如果所有方程都返回零,则系统求解。 传递给fsolve的函数既可以在单独的脚本中定义,也可以在行中创建,如果它很简单的话。 例如,定义: function f = matrixfun(z,A,b)

f = double(A) * [z(1);z(2)] + double(b);

end

然后打电话: >> fsolve(@matrixf...

% Declare symbolic variables

syms m n p q

% Solve m,n

s1=solve(m+n-p==0,m-n-q==0,m,n);

% Substitute variables with obtained solution

r = (m^3 - n^3);

r2=subs(subs(r,m,s.m),n,s.n);

% simplify answer

r3=simplify(r2)

% Declare symbolic variables

sym...

如果A, B, C, P1, P2, P3都是数字,为什么不简单地使用ldivide或\运算符? 这将允许您直接解决线性系统。 我可以看到你有以下关系: R*P1 = A

R*P2 = B

R*P3 = C

您可以看到每个矩阵方程产生三个约束。 你可以做的是创建一个系统,将所有矩阵方程封装在一起,从而产生9个约束。 因此,您需要重新构造它,以便能够以不同方式求解矩阵R系数。 为此,我们需要重新整形矩阵R ,使其成为9元素向量。 换句话说,我们可以像这样重新制定你的系统: [P1 0 0 0 0 ...

fsolve()寻求最小化您提供的函数作为参数。 因此,您必须将方程式更改为 p*m + (q-p)*0 + q/3.000.000 * 0^2 - 820 == 0

p*m + (q-p)*18000 + q/3.000.000 * 18000^2 - 25000 == 0

并在Matlab语法中 function F = Bass(m, p, q, cumulativeAdoptersBefore, cumulativeAdoptersAfter)

F = [p...

尝试替换以下行 u1 = u' + inv(DF)*F';

同 u1 = u' - inv(DF)*F';

当我做出这个改变时,我得到的解是[60,0,-60],它正确地解决了这三个方程式。 Try replacing the following line u1 = u' + inv(DF)*F';

with u1 = u' - inv(DF)*F';

When I make this change, the solution I get is [60,0,-60] which does ...

相关文章

中文名: MATLAB及应用 作者: 胡鹤飞 图书分类: 软件 资源格式: PDF

...

Thanks everyone!! Finally got a solution for this p

...

3.3 平行的类层次结构(1)什么是平行的类层次结构呢?简单点说,假如有两个类层次结构,其中一个类层

...

2.1 工厂方法模式来解决 用来解决上述问题的一个合理的解决方案就是工厂方法模式。那么什么是工厂方法

...

中文名: MATLAB智能算法30个案例分析 作者: 史峰 王辉 郁磊 胡斐

...

中文名: 模式识别与智能计算:MATLAB技术实现(第2版) 作者: 杨淑莹 图书分类:

...

ZOJ Problem Set - 2966 Build The Electric Sys

...

[原文链接:http://techblog.netflix.com/2013/03/system-ar

...

【HDFS】Hadoop DISTRIBUTED FILE SYSTEM THE CAST CLIEN

...

中文名: 数字图像处理与机器视觉:Visual C++与Matlab实现 作者: 张铮 图

...

最新问答

如果启用了复制处理程序,请确保将其置于其中一个安全角色之后。 我见过人们做的另一件事是在不同的端口上运行admin。 最好在需要auth的页面上使用SSL,这样你就不会发送明确的密码,因此管理和复制将发生在8443上,而常规查询将在8080上发生。 如果您要签署自己的证书,请查看此有用的SO页面: 如何在特定连接上使用不同的证书? I didn't know that /admin was the context for SOLR admin because /admin does not re

第一:在您的样本中,您有: 但是你在询问 //td[@class=‘CarMiniProfile-TableHeader’] (注意TableHeader中的大写'T')。 xpath区分大小写。 第二:通过查询// td [@ class ='CarMiniProfile-TableHeader'] / td,你暗示你在外部td中有一个'td'元素,而它们是兄弟姐妹。 有很多方法可以在这里获得制作和模型

这是你的答案: http://jsfiddle.net/gPsdk/40/ .preloader-container { position: absolute; top: 0px; right: 0px; bottom: 0px; left: 0px; background: #FFFFFF; z-index: 5; opacity: 1; -webkit-transition: all 500ms ease-out;

问题是,在启用Outlook库引用的情况下, olMailItem是一个保留常量,我认为当您将Dim olMailItem as Outlook.MailItem ,这不是问题,但是尝试设置变量会导致问题。 以下是完整的解释: 您已将olMailItem声明为对象变量。 在赋值语句的右侧,在将其值设置为对象的实例之前,您将引用此Object 。 这基本上是一个递归错误,因为你有对象试图自己分配自己。 还有另一个潜在的错误,如果之前已经分配了olMailItem ,这个语句会引发另一个错误(可能是

我建议使用wireshark http://www.wireshark.org/通过记录(“捕获”)设备可以看到的网络流量副本来“监听”网络上发生的对话。 当您开始捕获时,数据量似乎过大,但如果您能够发现任何看起来像您的SOAP消息的片段(应该很容易发现),那么您可以通过右键单击并选择来快速过滤到该对话'关注TCP Stream'。 然后,您可以在弹出窗口中查看您编写的SOAP服务与Silverlight客户端之间的整个对话。 如果一切正常,请关闭弹出窗口。 作为一个额外的好处,wireshar

Android默认情况下不提供TextView的合理结果。 您可以使用以下库并实现适当的aligntment。 https://github.com/navabi/JustifiedTextView Android Does not provide Justified aligntment of TextView By default. You can use following library and achieve proper aligntment. https://github.com/

你的代码适合我: class apples { public static void main(String args[]) { System.out.println("Hello World!"); } } 我将它下载到c:\ temp \ apples.java。 以下是我编译和运行的方式: C:\temp>javac -cp . apples.java C:\temp>dir apples Volume in drive C is HP_PAV

12个十六进制数字(带前导0x)表示48位。 那是256 TB的虚拟地址空间。 在AMD64上阅读wiki(我假设你在上面,对吗?)架构http://en.wikipedia.org/wiki/X86-64 12 hex digits (with leading 0x) mean 48 bits. That is 256 TB of virtual address space. Read wiki on AMD64 (I assume that you are on it, right?) ar

这将取决于你想要的。 对象有两种属性:类属性和实例属性。 类属性 类属性对于类的每个实例都是相同的对象。 class MyClass: class_attribute = [] 这里已经为类定义了MyClass.class_attribute ,您可以使用它。 如果您创建MyClass实例,则每个实例都可以访问相同的class_attribute 。 实例属性 instance属性仅在创建实例时可用,并且对于类的每个实例都是唯一的。 您只能在实例上使用它们。 在方法__init__中定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值