我第一次使用scipy的optimize.fsolve函数来找到方程的根.问题是我用作猜测/估计值的数字是我得到的答案(在大约8位小数内).当使用full_output = True时,我得到退出标志为'1',这应该意味着'解决方案收敛',这是我理解的最好意味着输出确实是方程的根.
我知道有一些有限数量的不同根(间隔开来),因为当我绘制方程时,我可以看到它们.此外,当我将起始点输入到应返回未定义值(除以零,负值的平方根)的范围内时,fsolve失败(给出错误退出标志).但除此之外,它总是将起点作为根.
我用一个非常简单的方程式测试了fsolve并且工作正常,所以我知道我正在导入我需要的所有内容,并且应该正确使用fsolve.我也试过搞乱一些输入参数,但我不太了解它们,似乎没有任何改变).
下面是相关代码(E是唯一的变量,其他一切都有非零值):
def func(E):
s = sqrt(c_sqr * (1 - E / V_0))
f = s / tan(s) + sqrt(c_sqr - s**2)
return f
guess = 3
fsolve(func, guess)
Run Code Online (Sandbox Code Playgroud)
即使最接近的解决方案应该在2.8和4.7左右,它只输出'3'并说'解决方案融合'.
有没有人知道如何解决这个问题并获得正确的答案(使用fsolve)?
初始化ArrayListJava 的最佳实践是什么?
如果我使用new运算符初始化ArrayList,则默认情况下ArrayList将为10个桶分配内存.这是一个性能打击.
我不知道,也许我错了,但在我看来ArrayList,如果我确定尺寸,我应该通过提及尺寸来创建!
我写了一个程序,它创建了一组输出到excel电子表格的数据.我最初使用jexcel库将数据写入文件,但我想更新程序,以便它可以检查并查看是否应该创建".xls"或".xlsx"文件,然后写入适当的文件类型.Apache POI似乎是写入".xlsx"文件的最佳选择,但是有关确定正确文件类型的任何想法?
我可以让用户在命名文件时选择,但这似乎是用户的额外工作,我假设有些用户不知道他们想要什么文件类型.
有任何想法吗?
此外,我假设操作系统是Windows,用户有一些版本的Excel,在其他情况下,我只会选择默认的文件类型.
我是新手使用迭代器,并想知道如何迭代线段上的每个点(Line2D.Double,确切地说) - 我需要检查线上的每个点是否满足某些要求.
另外,给定一个路径对象(如GeneralPath),你将如何做同样的事情(遍历形状轮廓上的每个点)?
理想情况下,我喜欢这样的东西(有一条线或一条路径):
Line2D line = new Line2D.Double(p1,p2);
for (Point2D point : line)
{
point.callSomeMethod();
}
Run Code Online (Sandbox Code Playgroud) 我有几个非常大的excel数据文件,我需要遍历它们并删除列T中单元格值为1的所有行.现在我的代码如下所示:
Sub test()
Dim cell As Range
For Each cell In Worksheets("Sheet1").Range("T5", "T900000")
If cell.Value = 1 Then
cell.EntireRow.Delete
End If
Next cell
End Sub
Run Code Online (Sandbox Code Playgroud)
它似乎工作,但需要永远运行,我将不得不这样做很多次.有没有更好的方法来做到这一点,或者某种方式来优化我已经拥有的使其运行得更快的东西?
我知道如何创建一个PrintWriter并且能够从我的gui中获取字符串并将其打印到文本文件中.
我希望能够采用相同的程序并打印到文件中,将文本添加到文件中,而不是替换文本文件中已有的所有内容.我如何制作它,以便当更多数据添加到文本文件时,每次都会在新行上打印?
任何示例或资源都很棒.
我正在制作一个包含图形的GUI,我想出了如何创建一个制作虚线并将其应用于Graphics2D对象的BasicStroke,所以当我调用drawLine()时,该行是虚线.我无法弄清楚的是,是否有一种简单的方法可以使虚线连续跨越多个线段.也就是说,我有一个值数组,我用它作为图形同一行上的点的位置,但是当我分别绘制每个线段并应用虚线笔划时,每个线段都会再次开始划线图案.我的一些线段的长短不一,所以虚线的图案看起来都搞砸了(在地方线段是比它看起来像一个连续的,非虚线的图案更短).
是否有任何简单(或不那么简单)的修复,并在不同的线段上获得连续的虚线外观?如果我的解释的任何部分不清楚,请告诉我.
我正在尝试用Java编写一个简单的游戏.的基本结构是一个单一的JFrame具有不同JPanels的是我添加/在不同的时间取出.在启动时,有JPanel一个基本菜单(开始游戏,高分等).按下"开始"按钮后,它会切换到一个水平选择器面板,其中有三个按钮可选择游戏的难度级别.按下三个按钮中的任何一个后,它会切换到另一个面板,该面板将显示三秒倒计时,然后是实际游戏.所有三个按钮都调用相同的方法,只是传入了不同的难度值.
我有所有单独的部分工作正常,但我有从水平选择面板到倒计时的过渡的麻烦.如果我不使用线程,屏幕会在按下按钮时冻结,并且不会切换到新面板.我已经尝试过搞乱线程了,但是我对它们知之甚少,并且只取得了有限的成功(我已经得到它所以它会成功切换一些时间,但不是一贯的).
在代码方面,在级别选择面板中我有类似按钮点击的内容:
private class ButtonClickedListener implements ActionListener {
public void actionPerformed(ActionEvent evt) {
gui.newLevel(1);
}
}
Run Code Online (Sandbox Code Playgroud)
代替gui.newLevel(1)我刚刚搞砸了开始新线程并从中调用方法.
该newLevel()方法是这样的:
getContentPane().removeAll();
levelPanel = new LevelPanel(levelNum, this);
add(levelPanel);
validate();
levelPanel.start();
Run Code Online (Sandbox Code Playgroud)
从开始菜单切换JPanel到关卡选择器面板(再次使用ActionListener按钮)时,我使用非常相似的代码,这很好用.
LevelPanel的start()方法初始化new的值JPanel并newLevel()在显示实际游戏之前显示屏幕上的倒计时(当前使用以下代码,尽管我在方法中添加了类似的东西):
try {
Thread.sleep(1000);
//update countdown number
validate();
repaint();
Thread.sleep(1000);
//update countdown number
validate();
repaint();
Thread.sleep(1000);
//update countdown number
validate();
repaint();
} catch (Exception e) {
System.out.println(e);
}
//start game
Run Code Online (Sandbox Code Playgroud)
我真的很感激任何帮助使这个代码工作,我很确定某种线程是要走的路,但我不太确定在哪里/如何.任何建议和/或代码示例都会很棒! …